diff --git a/.gitignore b/.gitignore index 2edea19340..be3bc420c5 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ bin/ *.class # Package Files # +*.jar *.war *.ear diff --git a/algorithms-miscellaneous-1/.gitignore b/algorithms-miscellaneous-1/.gitignore deleted file mode 100644 index 30b2b7442c..0000000000 --- a/algorithms-miscellaneous-1/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/target/ -.settings/ -.classpath -.project \ No newline at end of file diff --git a/algorithms-miscellaneous-1/README.md b/algorithms-miscellaneous-1/README.md index 479c2792f6..57f5a5d478 100644 --- a/algorithms-miscellaneous-1/README.md +++ b/algorithms-miscellaneous-1/README.md @@ -1,18 +1,9 @@ ## Relevant articles: -- [Validating Input With Finite Automata in Java](http://www.baeldung.com/java-finite-automata) -- [Example of Hill Climbing Algorithm](http://www.baeldung.com/java-hill-climbing-algorithm) -- [Monte Carlo Tree Search for Tic-Tac-Toe Game](http://www.baeldung.com/java-monte-carlo-tree-search) -- [Binary Search Algorithm in Java](http://www.baeldung.com/java-binary-search) -- [Introduction to Minimax Algorithm](http://www.baeldung.com/java-minimax-algorithm) -- [How to Calculate Levenshtein Distance in Java?](http://www.baeldung.com/java-levenshtein-distance) -- [How to Find the Kth Largest Element in Java](http://www.baeldung.com/java-kth-largest-element) -- [Multi-Swarm Optimization Algorithm in Java](http://www.baeldung.com/java-multi-swarm-algorithm) -- [String Search Algorithms for Large Texts](http://www.baeldung.com/java-full-text-search-algorithms) -- [Check If a String Contains All The Letters of The Alphabet](https://www.baeldung.com/java-string-contains-all-letters) -- [Find the Middle Element of a Linked List](http://www.baeldung.com/java-linked-list-middle-element) -- [Calculate Factorial in Java](https://www.baeldung.com/java-calculate-factorial) -- [Find Substrings That Are Palindromes in Java](https://www.baeldung.com/java-palindrome-substrings) -- [Find the Longest Substring without Repeating Characters](https://www.baeldung.com/java-longest-substring-without-repeated-characters) -- [Permutations of an Array in Java](https://www.baeldung.com/java-array-permutations) -- [Generate Combinations in Java](https://www.baeldung.com/java-combinations-algorithm) +- [Validating Input With Finite Automata in Java](https://www.baeldung.com/java-finite-automata) +- [Example of Hill Climbing Algorithm](https://www.baeldung.com/java-hill-climbing-algorithm) +- [Monte Carlo Tree Search for Tic-Tac-Toe Game](https://www.baeldung.com/java-monte-carlo-tree-search) +- [Binary Search Algorithm in Java](https://www.baeldung.com/java-binary-search) +- [Introduction to Minimax Algorithm](https://www.baeldung.com/java-minimax-algorithm) +- [How to Calculate Levenshtein Distance in Java?](https://www.baeldung.com/java-levenshtein-distance) +- [How to Find the Kth Largest Element in Java](https://www.baeldung.com/java-kth-largest-element) \ No newline at end of file diff --git a/algorithms-miscellaneous-2/.gitignore b/algorithms-miscellaneous-2/.gitignore deleted file mode 100644 index 30b2b7442c..0000000000 --- a/algorithms-miscellaneous-2/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/target/ -.settings/ -.classpath -.project \ No newline at end of file diff --git a/algorithms-miscellaneous-2/README.md b/algorithms-miscellaneous-2/README.md index 462644dddb..745b106963 100644 --- a/algorithms-miscellaneous-2/README.md +++ b/algorithms-miscellaneous-2/README.md @@ -1,19 +1,10 @@ ## Relevant articles: -- [Dijkstra Algorithm in Java](http://www.baeldung.com/java-dijkstra) -- [Introduction to Cobertura](http://www.baeldung.com/cobertura) -- [Test a Linked List for Cyclicity](http://www.baeldung.com/java-linked-list-cyclicity) -- [Introduction to JGraphT](http://www.baeldung.com/jgrapht) -- [A Maze Solver in Java](http://www.baeldung.com/java-solve-maze) -- [Create a Sudoku Solver in Java](http://www.baeldung.com/java-sudoku) -- [Displaying Money Amounts in Words](http://www.baeldung.com/java-money-into-words) -- [A Collaborative Filtering Recommendation System in Java](http://www.baeldung.com/java-collaborative-filtering-recommendations) -- [Check If Two Rectangles Overlap In Java](https://www.baeldung.com/java-check-if-two-rectangles-overlap) -- [Calculate the Distance Between Two Points in Java](https://www.baeldung.com/java-distance-between-two-points) -- [Find the Intersection of Two Lines in Java](https://www.baeldung.com/java-intersection-of-two-lines) -- [Round Up to the Nearest Hundred](https://www.baeldung.com/java-round-up-nearest-hundred) -- [Calculate Percentage in Java](https://www.baeldung.com/java-calculate-percentage) -- [Converting Between Byte Arrays and Hexadecimal Strings in Java](https://www.baeldung.com/java-byte-arrays-hex-strings) -- [Convert Latitude and Longitude to a 2D Point in Java](https://www.baeldung.com/java-convert-latitude-longitude) -- [Reversing a Binary Tree in Java](https://www.baeldung.com/java-reversing-a-binary-tree) -- [Find If Two Numbers Are Relatively Prime in Java](https://www.baeldung.com/java-two-relatively-prime-numbers) +- [Dijkstra Algorithm in Java](https://www.baeldung.com/java-dijkstra) +- [Introduction to Cobertura](https://www.baeldung.com/cobertura) +- [Test a Linked List for Cyclicity](https://www.baeldung.com/java-linked-list-cyclicity) +- [Introduction to JGraphT](https://www.baeldung.com/jgrapht) +- [A Maze Solver in Java](https://www.baeldung.com/java-solve-maze) +- [Create a Sudoku Solver in Java](https://www.baeldung.com/java-sudoku) +- [Displaying Money Amounts in Words](https://www.baeldung.com/java-money-into-words) +- [A Collaborative Filtering Recommendation System in Java](https://www.baeldung.com/java-collaborative-filtering-recommendations) \ No newline at end of file diff --git a/algorithms-miscellaneous-3/README.md b/algorithms-miscellaneous-3/README.md index ce0fde0415..843407f047 100644 --- a/algorithms-miscellaneous-3/README.md +++ b/algorithms-miscellaneous-3/README.md @@ -8,3 +8,4 @@ - [Checking if a Java Graph has a Cycle](https://www.baeldung.com/java-graph-has-a-cycle) - [A Guide to the Folding Technique in Java](https://www.baeldung.com/folding-hashing-technique) - [Creating a Triangle with for Loops in Java](https://www.baeldung.com/java-print-triangle) +- [Efficient Word Frequency Calculator in Java](https://www.baeldung.com/java-word-frequency) \ No newline at end of file diff --git a/algorithms-miscellaneous-3/pom.xml b/algorithms-miscellaneous-3/pom.xml index 5999d33c86..67923d37d7 100644 --- a/algorithms-miscellaneous-3/pom.xml +++ b/algorithms-miscellaneous-3/pom.xml @@ -54,6 +54,21 @@ 1.1.0 test + + org.openjdk.jmh + jmh-core + ${jmh-core.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh-generator.version} + + + org.openjdk.jmh + jmh-generator-bytecode + ${jmh-generator.version} + @@ -73,5 +88,7 @@ 4.3 28.0-jre 2.6.0 + 1.19 + 1.19 \ No newline at end of file diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/counter/CounterStatistics.java b/algorithms-miscellaneous-3/src/test/java/com/baeldung/counter/CounterStatistics.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/counter/CounterStatistics.java rename to algorithms-miscellaneous-3/src/test/java/com/baeldung/counter/CounterStatistics.java diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/counter/CounterUnitTest.java b/algorithms-miscellaneous-3/src/test/java/com/baeldung/counter/CounterUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/counter/CounterUnitTest.java rename to algorithms-miscellaneous-3/src/test/java/com/baeldung/counter/CounterUnitTest.java diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/counter/CounterUtil.java b/algorithms-miscellaneous-3/src/test/java/com/baeldung/counter/CounterUtil.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/counter/CounterUtil.java rename to algorithms-miscellaneous-3/src/test/java/com/baeldung/counter/CounterUtil.java diff --git a/algorithms-miscellaneous-4/README.md b/algorithms-miscellaneous-4/README.md new file mode 100644 index 0000000000..fabb4d29b8 --- /dev/null +++ b/algorithms-miscellaneous-4/README.md @@ -0,0 +1,9 @@ +## Relevant articles: + +- [Multi-Swarm Optimization Algorithm in Java](https://www.baeldung.com/java-multi-swarm-algorithm) +- [String Search Algorithms for Large Texts](https://www.baeldung.com/java-full-text-search-algorithms) +- [Check If a String Contains All The Letters of The Alphabet](https://www.baeldung.com/java-string-contains-all-letters) +- [Find the Middle Element of a Linked List](https://www.baeldung.com/java-linked-list-middle-element) +- [Find Substrings That Are Palindromes in Java](https://www.baeldung.com/java-palindrome-substrings) +- [Find the Longest Substring without Repeating Characters](https://www.baeldung.com/java-longest-substring-without-repeated-characters) +- [Permutations of an Array in Java](https://www.baeldung.com/java-array-permutations) \ No newline at end of file diff --git a/algorithms-miscellaneous-4/pom.xml b/algorithms-miscellaneous-4/pom.xml new file mode 100644 index 0000000000..8fd8f807ba --- /dev/null +++ b/algorithms-miscellaneous-4/pom.xml @@ -0,0 +1,51 @@ + + 4.0.0 + algorithms-miscellaneous-4 + 0.0.1-SNAPSHOT + algorithms-miscellaneous-4 + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + com.google.guava + guava + ${guava.version} + + + org.projectlombok + lombok + ${lombok.version} + provided + + + org.assertj + assertj-core + ${org.assertj.core.version} + test + + + + + + + + org.codehaus.mojo + exec-maven-plugin + ${exec-maven-plugin.version} + + + + + + + 3.9.0 + 27.0.1-jre + + + \ No newline at end of file diff --git a/algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/middleelementlookup/MiddleElementLookup.java b/algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/middleelementlookup/MiddleElementLookup.java similarity index 100% rename from algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/middleelementlookup/MiddleElementLookup.java rename to algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/middleelementlookup/MiddleElementLookup.java diff --git a/algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/middleelementlookup/Node.java b/algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/middleelementlookup/Node.java similarity index 100% rename from algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/middleelementlookup/Node.java rename to algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/middleelementlookup/Node.java diff --git a/algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/multiswarm/Constants.java b/algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/multiswarm/Constants.java similarity index 100% rename from algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/multiswarm/Constants.java rename to algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/multiswarm/Constants.java diff --git a/algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/multiswarm/FitnessFunction.java b/algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/multiswarm/FitnessFunction.java similarity index 100% rename from algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/multiswarm/FitnessFunction.java rename to algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/multiswarm/FitnessFunction.java diff --git a/algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/multiswarm/Multiswarm.java b/algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/multiswarm/Multiswarm.java similarity index 100% rename from algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/multiswarm/Multiswarm.java rename to algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/multiswarm/Multiswarm.java diff --git a/algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/multiswarm/Particle.java b/algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/multiswarm/Particle.java similarity index 100% rename from algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/multiswarm/Particle.java rename to algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/multiswarm/Particle.java diff --git a/algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/multiswarm/Swarm.java b/algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/multiswarm/Swarm.java similarity index 100% rename from algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/multiswarm/Swarm.java rename to algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/multiswarm/Swarm.java diff --git a/algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/permutation/Permutation.java b/algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/permutation/Permutation.java similarity index 100% rename from algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/permutation/Permutation.java rename to algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/permutation/Permutation.java diff --git a/algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/string/EnglishAlphabetLetters.java b/algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/string/EnglishAlphabetLetters.java similarity index 100% rename from algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/string/EnglishAlphabetLetters.java rename to algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/string/EnglishAlphabetLetters.java diff --git a/algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/string/LongestSubstringNonRepeatingCharacters.java b/algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/string/LongestSubstringNonRepeatingCharacters.java similarity index 100% rename from algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/string/LongestSubstringNonRepeatingCharacters.java rename to algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/string/LongestSubstringNonRepeatingCharacters.java diff --git a/algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/string/SubstringPalindrome.java b/algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/string/SubstringPalindrome.java similarity index 100% rename from algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/string/SubstringPalindrome.java rename to algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/string/SubstringPalindrome.java diff --git a/algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/string/search/StringSearchAlgorithms.java b/algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/string/search/StringSearchAlgorithms.java similarity index 100% rename from algorithms-miscellaneous-1/src/main/java/com/baeldung/algorithms/string/search/StringSearchAlgorithms.java rename to algorithms-miscellaneous-4/src/main/java/com/baeldung/algorithms/string/search/StringSearchAlgorithms.java diff --git a/maven/src/main/resources/logback.xml b/algorithms-miscellaneous-4/src/main/resources/logback.xml similarity index 100% rename from maven/src/main/resources/logback.xml rename to algorithms-miscellaneous-4/src/main/resources/logback.xml diff --git a/algorithms-miscellaneous-1/src/test/java/com/baeldung/algorithms/MiddleElementLookupUnitTest.java b/algorithms-miscellaneous-4/src/test/java/com/baeldung/algorithms/MiddleElementLookupUnitTest.java similarity index 100% rename from algorithms-miscellaneous-1/src/test/java/com/baeldung/algorithms/MiddleElementLookupUnitTest.java rename to algorithms-miscellaneous-4/src/test/java/com/baeldung/algorithms/MiddleElementLookupUnitTest.java diff --git a/algorithms-miscellaneous-1/src/test/java/com/baeldung/algorithms/StringSearchAlgorithmsUnitTest.java b/algorithms-miscellaneous-4/src/test/java/com/baeldung/algorithms/StringSearchAlgorithmsUnitTest.java similarity index 100% rename from algorithms-miscellaneous-1/src/test/java/com/baeldung/algorithms/StringSearchAlgorithmsUnitTest.java rename to algorithms-miscellaneous-4/src/test/java/com/baeldung/algorithms/StringSearchAlgorithmsUnitTest.java diff --git a/algorithms-miscellaneous-1/src/test/java/com/baeldung/algorithms/multiswarm/LolFitnessFunction.java b/algorithms-miscellaneous-4/src/test/java/com/baeldung/algorithms/multiswarm/LolFitnessFunction.java similarity index 100% rename from algorithms-miscellaneous-1/src/test/java/com/baeldung/algorithms/multiswarm/LolFitnessFunction.java rename to algorithms-miscellaneous-4/src/test/java/com/baeldung/algorithms/multiswarm/LolFitnessFunction.java diff --git a/algorithms-miscellaneous-1/src/test/java/com/baeldung/algorithms/multiswarm/MultiswarmUnitTest.java b/algorithms-miscellaneous-4/src/test/java/com/baeldung/algorithms/multiswarm/MultiswarmUnitTest.java similarity index 100% rename from algorithms-miscellaneous-1/src/test/java/com/baeldung/algorithms/multiswarm/MultiswarmUnitTest.java rename to algorithms-miscellaneous-4/src/test/java/com/baeldung/algorithms/multiswarm/MultiswarmUnitTest.java diff --git a/algorithms-miscellaneous-1/src/test/java/com/baeldung/algorithms/string/EnglishAlphabetLettersUnitTest.java b/algorithms-miscellaneous-4/src/test/java/com/baeldung/algorithms/string/EnglishAlphabetLettersUnitTest.java similarity index 100% rename from algorithms-miscellaneous-1/src/test/java/com/baeldung/algorithms/string/EnglishAlphabetLettersUnitTest.java rename to algorithms-miscellaneous-4/src/test/java/com/baeldung/algorithms/string/EnglishAlphabetLettersUnitTest.java diff --git a/algorithms-miscellaneous-1/src/test/java/com/baeldung/algorithms/string/LongestSubstringNonRepeatingCharactersUnitTest.java b/algorithms-miscellaneous-4/src/test/java/com/baeldung/algorithms/string/LongestSubstringNonRepeatingCharactersUnitTest.java similarity index 100% rename from algorithms-miscellaneous-1/src/test/java/com/baeldung/algorithms/string/LongestSubstringNonRepeatingCharactersUnitTest.java rename to algorithms-miscellaneous-4/src/test/java/com/baeldung/algorithms/string/LongestSubstringNonRepeatingCharactersUnitTest.java diff --git a/algorithms-miscellaneous-1/src/test/java/com/baeldung/algorithms/string/SubstringPalindromeUnitTest.java b/algorithms-miscellaneous-4/src/test/java/com/baeldung/algorithms/string/SubstringPalindromeUnitTest.java similarity index 100% rename from algorithms-miscellaneous-1/src/test/java/com/baeldung/algorithms/string/SubstringPalindromeUnitTest.java rename to algorithms-miscellaneous-4/src/test/java/com/baeldung/algorithms/string/SubstringPalindromeUnitTest.java diff --git a/algorithms-miscellaneous-1/src/test/java/com/baeldung/algorithms/support/MayFailRule.java b/algorithms-miscellaneous-4/src/test/java/com/baeldung/algorithms/support/MayFailRule.java similarity index 100% rename from algorithms-miscellaneous-1/src/test/java/com/baeldung/algorithms/support/MayFailRule.java rename to algorithms-miscellaneous-4/src/test/java/com/baeldung/algorithms/support/MayFailRule.java diff --git a/algorithms-miscellaneous-5/README.md b/algorithms-miscellaneous-5/README.md new file mode 100644 index 0000000000..7ed71e61cc --- /dev/null +++ b/algorithms-miscellaneous-5/README.md @@ -0,0 +1,5 @@ +## Relevant articles: + +- [Converting Between Byte Arrays and Hexadecimal Strings in Java](https://www.baeldung.com/java-byte-arrays-hex-strings) +- [Reversing a Binary Tree in Java](https://www.baeldung.com/java-reversing-a-binary-tree) +- [Find If Two Numbers Are Relatively Prime in Java](https://www.baeldung.com/java-two-relatively-prime-numbers) \ No newline at end of file diff --git a/algorithms-miscellaneous-5/pom.xml b/algorithms-miscellaneous-5/pom.xml new file mode 100644 index 0000000000..d17f93e6e0 --- /dev/null +++ b/algorithms-miscellaneous-5/pom.xml @@ -0,0 +1,57 @@ + + 4.0.0 + algorithms-miscellaneous-5 + 0.0.1-SNAPSHOT + algorithms-miscellaneous-5 + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + commons-codec + commons-codec + ${commons-codec.version} + + + org.projectlombok + lombok + ${lombok.version} + provided + + + pl.allegro.finance + tradukisto + ${tradukisto.version} + + + org.assertj + assertj-core + ${org.assertj.core.version} + test + + + + + + + + org.codehaus.mojo + exec-maven-plugin + ${exec-maven-plugin.version} + + + + + + + 1.0.1 + 3.9.0 + 1.11 + + + \ No newline at end of file diff --git a/algorithms-miscellaneous-2/src/main/java/com/baeldung/algorithms/conversion/HexStringConverter.java b/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/conversion/HexStringConverter.java similarity index 100% rename from algorithms-miscellaneous-2/src/main/java/com/baeldung/algorithms/conversion/HexStringConverter.java rename to algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/conversion/HexStringConverter.java diff --git a/algorithms-miscellaneous-2/src/main/java/com/baeldung/algorithms/relativelyprime/RelativelyPrime.java b/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/relativelyprime/RelativelyPrime.java similarity index 100% rename from algorithms-miscellaneous-2/src/main/java/com/baeldung/algorithms/relativelyprime/RelativelyPrime.java rename to algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/relativelyprime/RelativelyPrime.java diff --git a/algorithms-miscellaneous-2/src/main/java/com/baeldung/algorithms/reversingtree/TreeNode.java b/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/reversingtree/TreeNode.java similarity index 100% rename from algorithms-miscellaneous-2/src/main/java/com/baeldung/algorithms/reversingtree/TreeNode.java rename to algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/reversingtree/TreeNode.java diff --git a/algorithms-miscellaneous-2/src/main/java/com/baeldung/algorithms/reversingtree/TreeReverser.java b/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/reversingtree/TreeReverser.java similarity index 100% rename from algorithms-miscellaneous-2/src/main/java/com/baeldung/algorithms/reversingtree/TreeReverser.java rename to algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/reversingtree/TreeReverser.java diff --git a/spring-boot-angular-ecommerce/src/main/resources/logback.xml b/algorithms-miscellaneous-5/src/main/resources/logback.xml similarity index 100% rename from spring-boot-angular-ecommerce/src/main/resources/logback.xml rename to algorithms-miscellaneous-5/src/main/resources/logback.xml diff --git a/algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/conversion/ByteArrayConverterUnitTest.java b/algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/conversion/ByteArrayConverterUnitTest.java similarity index 100% rename from algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/conversion/ByteArrayConverterUnitTest.java rename to algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/conversion/ByteArrayConverterUnitTest.java diff --git a/algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/relativelyprime/RelativelyPrimeUnitTest.java b/algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/relativelyprime/RelativelyPrimeUnitTest.java similarity index 100% rename from algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/relativelyprime/RelativelyPrimeUnitTest.java rename to algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/relativelyprime/RelativelyPrimeUnitTest.java diff --git a/algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/reversingtree/TreeReverserUnitTest.java b/algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/reversingtree/TreeReverserUnitTest.java similarity index 100% rename from algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/reversingtree/TreeReverserUnitTest.java rename to algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/reversingtree/TreeReverserUnitTest.java diff --git a/algorithms-miscellaneous-3/src/main/java/com/baeldung/algorithms/bucketsort/IntegerBucketSorter.java b/algorithms-sorting/src/main/java/com/baeldung/algorithms/bucketsort/IntegerBucketSorter.java similarity index 57% rename from algorithms-miscellaneous-3/src/main/java/com/baeldung/algorithms/bucketsort/IntegerBucketSorter.java rename to algorithms-sorting/src/main/java/com/baeldung/algorithms/bucketsort/IntegerBucketSorter.java index 4d885a6b3a..002d4997f4 100644 --- a/algorithms-miscellaneous-3/src/main/java/com/baeldung/algorithms/bucketsort/IntegerBucketSorter.java +++ b/algorithms-sorting/src/main/java/com/baeldung/algorithms/bucketsort/IntegerBucketSorter.java @@ -2,6 +2,7 @@ package com.baeldung.bucketsort; import java.util.ArrayList; import java.util.Comparator; +import java.util.LinkedList; import java.util.List; public class IntegerBucketSorter implements Sorter { @@ -28,43 +29,40 @@ public class IntegerBucketSorter implements Sorter { } private List concatenateSortedBuckets(List> buckets){ - List sortedArray = new ArrayList<>(); - int index = 0; + List sortedArray = new LinkedList<>(); for(List bucket : buckets){ - for(int number : bucket){ - sortedArray.add(index++, number); - } + sortedArray.addAll(bucket); } return sortedArray; } private List> splitIntoUnsortedBuckets(List initialList){ - final int[] codes = createHashes(initialList); + final int max = findMax(initialList); + final int numberOfBuckets = (int) Math.sqrt(initialList.size()); - List> buckets = new ArrayList<>(codes[1]); - for(int i = 0; i < codes[1]; i++) buckets.add(new ArrayList<>()); + List> buckets = new ArrayList<>(); + for(int i = 0; i < numberOfBuckets; i++) buckets.add(new ArrayList<>()); //distribute the data for (int i : initialList) { - buckets.get(hash(i, codes)).add(i); + buckets.get(hash(i, max, numberOfBuckets)).add(i); } return buckets; } - private int[] createHashes(List input){ - int m = input.get(0); - for (int i = 1; i < input.size(); i++) { - if (m < input.get(i)) { - m = input.get(i); - } + private int findMax(List input){ + int m = Integer.MIN_VALUE; + for (int i : input){ + m = Math.max(i, m); } - return new int[]{m, (int) Math.sqrt(input.size())}; + return m; } - private static int hash(int i, int[] code) { - return (int) ((double) i / code[0] * (code[1] - 1)); + private static int hash(int i, int max, int numberOfBuckets) { + return (int) ((double) i / max * (numberOfBuckets - 1)); } + } diff --git a/algorithms-miscellaneous-3/src/main/java/com/baeldung/algorithms/bucketsort/Sorter.java b/algorithms-sorting/src/main/java/com/baeldung/algorithms/bucketsort/Sorter.java similarity index 100% rename from algorithms-miscellaneous-3/src/main/java/com/baeldung/algorithms/bucketsort/Sorter.java rename to algorithms-sorting/src/main/java/com/baeldung/algorithms/bucketsort/Sorter.java diff --git a/algorithms-sorting/src/main/java/com/baeldung/algorithms/radixsort/RadixSort.java b/algorithms-sorting/src/main/java/com/baeldung/algorithms/radixsort/RadixSort.java index 26c5c9a486..723a2f5a80 100644 --- a/algorithms-sorting/src/main/java/com/baeldung/algorithms/radixsort/RadixSort.java +++ b/algorithms-sorting/src/main/java/com/baeldung/algorithms/radixsort/RadixSort.java @@ -29,7 +29,7 @@ public class RadixSort { frequency[digit]++; } - for (int i = 1; i < 10; i++) { + for (int i = 1; i < range; i++) { frequency[i] += frequency[i - 1]; } diff --git a/algorithms-miscellaneous-3/src/test/java/com/baeldung/algorithms/bucketsort/IntegerBucketSorterUnitTest.java b/algorithms-sorting/src/test/java/com/baeldung/algorithms/bucketsort/IntegerBucketSorterUnitTest.java similarity index 100% rename from algorithms-miscellaneous-3/src/test/java/com/baeldung/algorithms/bucketsort/IntegerBucketSorterUnitTest.java rename to algorithms-sorting/src/test/java/com/baeldung/algorithms/bucketsort/IntegerBucketSorterUnitTest.java diff --git a/algorithms-sorting/src/test/java/com/baeldung/algorithms/radixsort/RadixSortUnitTest.java b/algorithms-sorting/src/test/java/com/baeldung/algorithms/radixsort/RadixSortUnitTest.java index f1b50f5c99..0f6c751ade 100644 --- a/algorithms-sorting/src/test/java/com/baeldung/algorithms/radixsort/RadixSortUnitTest.java +++ b/algorithms-sorting/src/test/java/com/baeldung/algorithms/radixsort/RadixSortUnitTest.java @@ -7,7 +7,7 @@ import org.junit.Test; public class RadixSortUnitTest { @Test - public void givenUnsortedArrayWhenRadixSortThenArraySorted() { + public void givenUnsortedArray_whenRadixSort_thenArraySorted() { int[] numbers = { 387, 468, 134, 123, 68, 221, 769, 37, 7 }; RadixSort.sort(numbers); int[] numbersSorted = { 7, 37, 68, 123, 134, 221, 387, 468, 769 }; diff --git a/apache-shiro/pom.xml b/apache-shiro/pom.xml index 644d70b30a..7f0d07589c 100644 --- a/apache-shiro/pom.xml +++ b/apache-shiro/pom.xml @@ -38,17 +38,6 @@ jcl-over-slf4j runtime - - org.slf4j - slf4j-log4j12 - runtime - - - log4j - log4j - ${log4j-version} - runtime - @@ -56,4 +45,4 @@ 1.2.17 - \ No newline at end of file + diff --git a/apache-shiro/src/main/java/com/baeldung/controllers/ShiroSpringController.java b/apache-shiro/src/main/java/com/baeldung/controllers/ShiroSpringController.java index e6e72b2579..2713786d71 100644 --- a/apache-shiro/src/main/java/com/baeldung/controllers/ShiroSpringController.java +++ b/apache-shiro/src/main/java/com/baeldung/controllers/ShiroSpringController.java @@ -18,22 +18,17 @@ import javax.servlet.http.HttpServletRequest; @Controller public class ShiroSpringController { - - @GetMapping("/") public String index() { return "index"; } - @RequestMapping( value = "/login", method = {RequestMethod.GET, RequestMethod.POST}) public String login(HttpServletRequest req, UserCredentials cred, RedirectAttributes attr) { if(req.getMethod().equals(RequestMethod.GET.toString())) { return "login"; - } - else { - + } else { Subject subject = SecurityUtils.getSubject(); if(!subject.isAuthenticated()) { diff --git a/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/Main.java b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/Main.java new file mode 100644 index 0000000000..a373122d6c --- /dev/null +++ b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/Main.java @@ -0,0 +1,68 @@ +package com.baeldung.shiro.permissions.custom; + +import com.baeldung.MyCustomRealm; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.*; +import org.apache.shiro.config.Ini; +import org.apache.shiro.mgt.DefaultSecurityManager; +import org.apache.shiro.mgt.SecurityManager; +import org.apache.shiro.realm.Realm; +import org.apache.shiro.realm.text.IniRealm; +import org.apache.shiro.session.Session; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class Main { + + private static final transient Logger log = LoggerFactory.getLogger(Main.class); + + public static void main(String[] args) { + + IniRealm realm = new IniRealm(); + Ini ini = Ini.fromResourcePath(Main.class.getResource("/com/baeldung/shiro/permissions/custom/shiro.ini").getPath()); + realm.setIni(ini); + realm.setPermissionResolver(new PathPermissionResolver()); + realm.init(); + SecurityManager securityManager = new DefaultSecurityManager(realm); + + SecurityUtils.setSecurityManager(securityManager); + Subject currentUser = SecurityUtils.getSubject(); + + if (!currentUser.isAuthenticated()) { + UsernamePasswordToken token = new UsernamePasswordToken("paul.reader", "password4"); + token.setRememberMe(true); + try { + currentUser.login(token); + } catch (UnknownAccountException uae) { + log.error("Username Not Found!", uae); + } catch (IncorrectCredentialsException ice) { + log.error("Invalid Credentials!", ice); + } catch (LockedAccountException lae) { + log.error("Your Account is Locked!", lae); + } catch (AuthenticationException ae) { + log.error("Unexpected Error!", ae); + } + } + + log.info("User [" + currentUser.getPrincipal() + "] logged in successfully."); + + if (currentUser.hasRole("admin")) { + log.info("Welcome Admin"); + } else if(currentUser.hasRole("editor")) { + log.info("Welcome, Editor!"); + } else if(currentUser.hasRole("author")) { + log.info("Welcome, Author"); + } else { + log.info("Welcome, Guest"); + } + + if(currentUser.isPermitted("/articles/drafts/new-article")) { + log.info("You can access articles"); + } else { + log.info("You cannot access articles!"); + } + currentUser.logout(); + } + +} diff --git a/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermission.java b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermission.java new file mode 100644 index 0000000000..f7dfbda06a --- /dev/null +++ b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermission.java @@ -0,0 +1,22 @@ +package com.baeldung.shiro.permissions.custom; + +import org.apache.shiro.authz.Permission; + +import java.nio.file.Path; + +public class PathPermission implements Permission { + + private final Path path; + + public PathPermission(Path path) { + this.path = path; + } + + @Override + public boolean implies(Permission p) { + if(p instanceof PathPermission) { + return ((PathPermission) p).path.startsWith(path); + } + return false; + } +} diff --git a/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermissionResolver.java b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermissionResolver.java new file mode 100644 index 0000000000..4b60d2fbd4 --- /dev/null +++ b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermissionResolver.java @@ -0,0 +1,13 @@ +package com.baeldung.shiro.permissions.custom; + +import org.apache.shiro.authz.Permission; +import org.apache.shiro.authz.permission.PermissionResolver; + +import java.nio.file.Paths; + +public class PathPermissionResolver implements PermissionResolver { + @Override + public Permission resolvePermission(String permissionString) { + return new PathPermission(Paths.get(permissionString)); + } +} diff --git a/apache-shiro/src/main/resources/com/baeldung/shiro/permissions/custom/shiro.ini b/apache-shiro/src/main/resources/com/baeldung/shiro/permissions/custom/shiro.ini new file mode 100644 index 0000000000..732ff8b60d --- /dev/null +++ b/apache-shiro/src/main/resources/com/baeldung/shiro/permissions/custom/shiro.ini @@ -0,0 +1,10 @@ +[users] +jane.admin = password, admin +john.editor = password2, editor +zoe.author = password3, author +paul.reader = password4 + +[roles] +admin = / +editor = /articles +author = /articles/drafts diff --git a/bazel/bazelapp/pom.xml b/bazel/bazelapp/pom.xml index 9c9fb59619..e56cc06ef4 100644 --- a/bazel/bazelapp/pom.xml +++ b/bazel/bazelapp/pom.xml @@ -16,14 +16,17 @@ com.baeldung bazelgreeting - 1.0.0-SNAPSHOT + ${bazelgreeting.version} org.apache.commons commons-lang3 - 3.9 + ${commons-lang3.version} + + 1.0.0-SNAPSHOT + \ No newline at end of file diff --git a/core-groovy-2/src/main/groovy/com/baeldung/category/BaeldungCategory.groovy b/core-groovy-2/src/main/groovy/com/baeldung/category/BaeldungCategory.groovy new file mode 100644 index 0000000000..479c39699f --- /dev/null +++ b/core-groovy-2/src/main/groovy/com/baeldung/category/BaeldungCategory.groovy @@ -0,0 +1,17 @@ +package com.baeldung.category; + +class BaeldungCategory { + + public static String capitalize(String self) { + String capitalizedStr = self; + if (self.size() > 0) { + capitalizedStr = self.substring(0, 1).toUpperCase() + self.substring(1); + } + return capitalizedStr + } + + public static double toThePower(Number self, Number exponent) { + return Math.pow(self, exponent); + } + +} diff --git a/core-groovy-2/src/main/groovy/com/baeldung/category/NumberCategory.groovy b/core-groovy-2/src/main/groovy/com/baeldung/category/NumberCategory.groovy new file mode 100644 index 0000000000..ccf2ed519b --- /dev/null +++ b/core-groovy-2/src/main/groovy/com/baeldung/category/NumberCategory.groovy @@ -0,0 +1,17 @@ +package com.baeldung.category; + +import groovy.lang.Category + +@Category(Number) +class NumberCategory { + + public Number cube() { + return this*this*this + } + + public int divideWithRoundUp(BigDecimal divisor, boolean isRoundUp) { + def mathRound = isRoundUp ? BigDecimal.ROUND_UP : BigDecimal.ROUND_DOWN + return (int)new BigDecimal(this).divide(divisor, 0, mathRound) + } + +} diff --git a/core-groovy-2/src/test/groovy/com/baeldung/category/CategoryUnitTest.groovy b/core-groovy-2/src/test/groovy/com/baeldung/category/CategoryUnitTest.groovy new file mode 100644 index 0000000000..a1f67b1e2e --- /dev/null +++ b/core-groovy-2/src/test/groovy/com/baeldung/category/CategoryUnitTest.groovy @@ -0,0 +1,101 @@ +package com.baeldung.category + +import groovy.time.* +import java.text.SimpleDateFormat +import groovy.xml.* +import groovy.xml.dom.* +import com.baeldung.category.BaeldungCategory +import com.baeldung.category.NumberCategory + +class CategoryUnitTest extends GroovyTestCase { + + void test_whenUsingTimeCategory_thenOperationOnDate() { + def jan_1_2019 = new Date("01/01/2019") + use (TimeCategory) { + assert jan_1_2019 + 10.seconds == new Date("01/01/2019 00:00:10") + + assert jan_1_2019 + 20.minutes == new Date("01/01/2019 00:20:00") + + assert jan_1_2019 + 2.hours == new Date("01/01/2019 02:00:00") + + assert jan_1_2019 - 1.day == new Date("12/31/2018") + + assert jan_1_2019 + 2.weeks == new Date("01/15/2019") + + assert jan_1_2019 - 2.months == new Date("11/01/2018") + + assert jan_1_2019 + 3.years == new Date("01/01/2022") + } + } + + void test_whenUsingTimeCategory_thenOperationOnNumber() { + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy") + use (TimeCategory) { + assert sdf.format(5.days.from.now) == sdf.format(new Date() + 5.days) + + sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss") + assert sdf.format(10.minutes.from.now) == sdf.format(new Date() + 10.minutes) + assert sdf.format(2.hours.ago) == sdf.format(new Date() - 2.hours) + } + } + + void test_whenUsingDOMCategory_thenOperationOnXML() { + + def baeldungArticlesText = """ + +
+ An Intro to the Java Debug Interface (JDI) + A quick and practical overview of Java Debug Interface. +
+
+ A Quick Guide to Working with Web Services in Groovy + Learn how to work with Web Services in Groovy. +
+
+""" + def baeldungArticlesDom = DOMBuilder.newInstance().parseText(baeldungArticlesText) + + def root = baeldungArticlesDom.documentElement + + use (DOMCategory) { + assert root.article.size() == 2 + + def articles = root.article + + assert articles[0].title.text() == "An Intro to the Java Debug Interface (JDI)" + assert articles[1].desc.text() == "Learn how to work with Web Services in Groovy." + + def articleNode3 = root.appendNode(new QName("article"), ["core-java": "false"]) + + articleNode3.appendNode("title", "Metaprogramming in Groovy") + articleNode3.appendNode("desc", "Explore the concept of runtime and compile-time metaprogramming in Groovy") + + assert root.article.size() == 3 + + assert root.article[2].title.text() == "Metaprogramming in Groovy" + } + } + + void test_whenUsingBaeldungCategory_thenCapitalizeString() { + use (BaeldungCategory) { + assert "norman".capitalize() == "Norman" + } + } + + void test_whenUsingBaeldungCategory_thenOperationsOnNumber() { + use (BaeldungCategory) { + assert 50.toThePower(2) == 2500 + assert 2.4.toThePower(4) == 33.1776 + } + } + + void test_whenUsingNumberCategory_thenOperationsOnNumber() { + use (NumberCategory) { + assert 3.cube() == 27 + assert 25.divideWithRoundUp(6, true) == 5 + assert 120.23.divideWithRoundUp(6.1, true) == 20 + assert 150.9.divideWithRoundUp(12.1, false) == 12 + } + } + +} diff --git a/core-java-modules/core-java-8/README.md b/core-java-modules/core-java-8/README.md index aee7121fb3..6d69d30d00 100644 --- a/core-java-modules/core-java-8/README.md +++ b/core-java-modules/core-java-8/README.md @@ -3,35 +3,12 @@ ## Core Java 8 Cookbooks and Examples ### Relevant Articles: -- [Guide to Java 8’s Collectors](http://www.baeldung.com/java-8-collectors) -- [New Features in Java 8](http://www.baeldung.com/java-8-new-features) -- [The Double Colon Operator in Java 8](http://www.baeldung.com/java-8-double-colon-operator) -- [Guide to Java 8 groupingBy Collector](http://www.baeldung.com/java-groupingby-collector) -- [Strategy Design Pattern in Java 8](http://www.baeldung.com/java-strategy-pattern) -- [Guide to Java 8 Comparator.comparing()](http://www.baeldung.com/java-8-comparator-comparing) -- [Guide To Java 8 Optional](http://www.baeldung.com/java-optional) -- [Guide to the Java 8 forEach](http://www.baeldung.com/foreach-java) -- [The Difference Between map() and flatMap()](http://www.baeldung.com/java-difference-map-and-flatmap) -- [Static and Default Methods in Interfaces in Java](http://www.baeldung.com/java-static-default-methods) -- [Efficient Word Frequency Calculator in Java](http://www.baeldung.com/java-word-frequency) -- [Introduction to Spliterator in Java](http://www.baeldung.com/java-spliterator) -- [Java 8 Math New Methods](http://www.baeldung.com/java-8-math) -- [Overview of Java Built-in Annotations](http://www.baeldung.com/java-default-annotations) -- [Finding Min/Max in an Array with Java](http://www.baeldung.com/java-array-min-max) -- [Internationalization and Localization in Java 8](http://www.baeldung.com/java-8-localization) -- [Java Optional – orElse() vs orElseGet()](http://www.baeldung.com/java-optional-or-else-vs-or-else-get) -- [Java 8 Unsigned Arithmetic Support](http://www.baeldung.com/java-unsigned-arithmetic) -- [Generalized Target-Type Inference in Java](http://www.baeldung.com/java-generalized-target-type-inference) -- [Overriding System Time for Testing in Java](http://www.baeldung.com/java-override-system-time) -- [Set the Time Zone of a Date in Java](https://www.baeldung.com/java-set-date-time-zone) -- [An Overview of Regular Expressions Performance in Java](https://www.baeldung.com/java-regex-performance) -- [Java Primitives versus Objects](https://www.baeldung.com/java-primitives-vs-objects) -- [How to Use if/else Logic in Java 8 Streams](https://www.baeldung.com/java-8-streams-if-else-logic) -- [How to Replace Many if Statements in Java](https://www.baeldung.com/java-replace-if-statements) -- [Java @Override Annotation](https://www.baeldung.com/java-override) -- [Java @SuppressWarnings Annotation](https://www.baeldung.com/java-suppresswarnings) -- [Java @SafeVarargs Annotation](https://www.baeldung.com/java-safevarargs) -- [Java @Deprecated Annotation](https://www.baeldung.com/java-deprecated) -- [Java 8 Predicate Chain](https://www.baeldung.com/java-predicate-chain) -- [Creating a Custom Annotation in Java](https://www.baeldung.com/java-custom-annotation) -- [The Difference Between Collection.stream().forEach() and Collection.forEach()](https://www.baeldung.com/java-collection-stream-foreach) +- [New Features in Java 8](https://www.baeldung.com/java-8-new-features) +- [Guide to Java 8 groupingBy Collector](https://www.baeldung.com/java-groupingby-collector) +- [Strategy Design Pattern in Java 8](https://www.baeldung.com/java-strategy-pattern) +- [Guide to Java 8 Comparator.comparing()](https://www.baeldung.com/java-8-comparator-comparing) +- [Guide to the Java 8 forEach](https://www.baeldung.com/foreach-java) +- [Introduction to Spliterator in Java](https://www.baeldung.com/java-spliterator) +- [Finding Min/Max in an Array with Java](https://www.baeldung.com/java-array-min-max) +- [Internationalization and Localization in Java 8](https://www.baeldung.com/java-8-localization) +- [Generalized Target-Type Inference in Java](https://www.baeldung.com/java-generalized-target-type-inference) diff --git a/core-java-modules/core-java-8/pom.xml b/core-java-modules/core-java-8/pom.xml index 6e547b7fad..9ef3cd1201 100644 --- a/core-java-modules/core-java-8/pom.xml +++ b/core-java-modules/core-java-8/pom.xml @@ -116,12 +116,6 @@ ${powermock.version} test - - org.jmockit - jmockit - ${jmockit.version} - test - @@ -150,16 +144,6 @@ - - maven-surefire-plugin - ${maven-surefire-plugin.version} - - - -javaagent:${settings.localRepository}/org/jmockit/jmockit/${jmockit.version}/jmockit-${jmockit.version}.jar - - true - - @@ -176,7 +160,6 @@ 3.6.1 1.8.9 2.0.0-RC.4 - 1.44 1.7.0 1.19 1.19 diff --git a/core-java-modules/core-java-annotations/README.md b/core-java-modules/core-java-annotations/README.md new file mode 100644 index 0000000000..a125e8abd5 --- /dev/null +++ b/core-java-modules/core-java-annotations/README.md @@ -0,0 +1,11 @@ +========= + +## Core Java 8 Cookbooks and Examples + +### Relevant Articles: +- [Java @Override Annotation](https://www.baeldung.com/java-override) +- [Java @SuppressWarnings Annotation](https://www.baeldung.com/java-suppresswarnings) +- [Java @SafeVarargs Annotation](https://www.baeldung.com/java-safevarargs) +- [Java @Deprecated Annotation](https://www.baeldung.com/java-deprecated) +- [Overview of Java Built-in Annotations](https://www.baeldung.com/java-default-annotations) +- [Creating a Custom Annotation in Java](https://www.baeldung.com/java-custom-annotation) \ No newline at end of file diff --git a/core-java-modules/core-java-annotations/pom.xml b/core-java-modules/core-java-annotations/pom.xml new file mode 100644 index 0000000000..7d7d7d4f7e --- /dev/null +++ b/core-java-modules/core-java-annotations/pom.xml @@ -0,0 +1,72 @@ + + 4.0.0 + com.baeldung + core-java-annotations + 0.1.0-SNAPSHOT + core-java-annotations + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + org.projectlombok + lombok + ${lombok.version} + provided + + + + org.assertj + assertj-core + ${assertj.version} + test + + + org.openjdk.jmh + jmh-core + ${jmh-core.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh-generator.version} + + + org.openjdk.jmh + jmh-generator-bytecode + ${jmh-generator.version} + + + + + core-java-annotations + + + src/main/resources + true + + + + + + + 3.6.1 + 1.8.9 + 1.19 + 1.19 + + 2.22.1 + + diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/ClassWithAnnotation.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/ClassWithAnnotation.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/ClassWithAnnotation.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/ClassWithAnnotation.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/ClassWithDeprecatedMethod.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/ClassWithDeprecatedMethod.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/ClassWithDeprecatedMethod.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/ClassWithDeprecatedMethod.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/ClassWithSafeVarargs.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/ClassWithSafeVarargs.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/ClassWithSafeVarargs.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/ClassWithSafeVarargs.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/ClassWithSuppressWarnings.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/ClassWithSuppressWarnings.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/ClassWithSuppressWarnings.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/ClassWithSuppressWarnings.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/IntConsumer.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/IntConsumer.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/IntConsumer.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/IntConsumer.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/Interval.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/Interval.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/Interval.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/Interval.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/IntervalUsage.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/IntervalUsage.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/IntervalUsage.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/IntervalUsage.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/Intervals.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/Intervals.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/Intervals.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/Intervals.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/MyAnnotation.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/MyAnnotation.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/MyAnnotation.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/MyAnnotation.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/MyAnnotationTarget.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/MyAnnotationTarget.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/MyAnnotationTarget.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/MyAnnotationTarget.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/MyOperation.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/MyOperation.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/MyOperation.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/MyOperation.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/MyOperationImpl.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/MyOperationImpl.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/annotations/MyOperationImpl.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/annotations/MyOperationImpl.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/customannotations/Init.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/customannotations/Init.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/customannotations/Init.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/customannotations/Init.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/customannotations/JsonElement.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/customannotations/JsonElement.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/customannotations/JsonElement.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/customannotations/JsonElement.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/customannotations/JsonSerializable.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/customannotations/JsonSerializable.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/customannotations/JsonSerializable.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/customannotations/JsonSerializable.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/customannotations/JsonSerializationException.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/customannotations/JsonSerializationException.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/customannotations/JsonSerializationException.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/customannotations/JsonSerializationException.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/customannotations/ObjectToJsonConverter.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/customannotations/ObjectToJsonConverter.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/customannotations/ObjectToJsonConverter.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/customannotations/ObjectToJsonConverter.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/customannotations/Person.java b/core-java-modules/core-java-annotations/src/main/java/com/baeldung/customannotations/Person.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/customannotations/Person.java rename to core-java-modules/core-java-annotations/src/main/java/com/baeldung/customannotations/Person.java diff --git a/core-java-modules/core-java-annotations/src/main/resources/logback.xml b/core-java-modules/core-java-annotations/src/main/resources/logback.xml new file mode 100644 index 0000000000..7d900d8ea8 --- /dev/null +++ b/core-java-modules/core-java-annotations/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/customannotations/JsonSerializerUnitTest.java b/core-java-modules/core-java-annotations/src/test/java/com/baeldung/customannotations/JsonSerializerUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/customannotations/JsonSerializerUnitTest.java rename to core-java-modules/core-java-annotations/src/test/java/com/baeldung/customannotations/JsonSerializerUnitTest.java diff --git a/core-java-modules/core-java-arrays-2/.gitignore b/core-java-modules/core-java-arrays-2/.gitignore deleted file mode 100644 index 374c8bf907..0000000000 --- a/core-java-modules/core-java-arrays-2/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -*.class - -0.* - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* -.resourceCache - -# Packaged files # -*.jar -*.war -*.ear - -# Files generated by integration tests -backup-pom.xml -/bin/ -/temp - -#IntelliJ specific -.idea/ -*.iml \ No newline at end of file diff --git a/core-java-modules/core-java-arrays-2/README.MD b/core-java-modules/core-java-arrays-2/README.MD index f272f4d299..952770a2da 100644 --- a/core-java-modules/core-java-arrays-2/README.MD +++ b/core-java-modules/core-java-arrays-2/README.MD @@ -1,5 +1,10 @@ ## Relevant Articles - [Extending an Array’s Length](https://www.baeldung.com/java-array-add-element-at-the-end) -- [Checking If an Array Is Sorted in Java](https://www.baeldung.com/java-check-sorted-array) - [Looping Diagonally Through a 2d Java Array](https://www.baeldung.com/java-loop-diagonal-array) +- [Converting Between Stream and Array in Java](https://www.baeldung.com/java-stream-to-array) +- [Convert a Float to a Byte Array in Java](https://www.baeldung.com/java-convert-float-to-byte-array) +- [Array Operations in Java](https://www.baeldung.com/java-common-array-operations) +- [Intersection Between two Integer Arrays](https://www.baeldung.com/java-array-intersection) +- [Removing an Element from an Array in Java](https://www.baeldung.com/java-array-remove-element) +- [Removing the First Element of an Array](https://www.baeldung.com/java-array-remove-first-element) diff --git a/core-java-modules/core-java-arrays/src/main/java/com/baeldung/array/AddElementToEndOfArray.java b/core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/array/AddElementToEndOfArray.java similarity index 100% rename from core-java-modules/core-java-arrays/src/main/java/com/baeldung/array/AddElementToEndOfArray.java rename to core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/array/AddElementToEndOfArray.java diff --git a/core-java-modules/core-java-arrays/src/main/java/com/baeldung/array/RemoveElementFromAnArray.java b/core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/array/RemoveElementFromAnArray.java similarity index 100% rename from core-java-modules/core-java-arrays/src/main/java/com/baeldung/array/RemoveElementFromAnArray.java rename to core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/array/RemoveElementFromAnArray.java diff --git a/core-java-modules/core-java-arrays/src/main/java/com/baeldung/array/conversions/FloatToByteArray.java b/core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/array/conversions/FloatToByteArray.java similarity index 100% rename from core-java-modules/core-java-arrays/src/main/java/com/baeldung/array/conversions/FloatToByteArray.java rename to core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/array/conversions/FloatToByteArray.java diff --git a/core-java-modules/core-java-arrays/src/main/java/com/baeldung/array/operations/ArrayOperations.java b/core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/array/operations/ArrayOperations.java similarity index 97% rename from core-java-modules/core-java-arrays/src/main/java/com/baeldung/array/operations/ArrayOperations.java rename to core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/array/operations/ArrayOperations.java index d8cc0afd61..94a00f7aba 100644 --- a/core-java-modules/core-java-arrays/src/main/java/com/baeldung/array/operations/ArrayOperations.java +++ b/core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/array/operations/ArrayOperations.java @@ -1,19 +1,14 @@ package com.baeldung.array.operations; +import org.apache.commons.lang3.ArrayUtils; + import java.lang.reflect.Array; -import java.util.Arrays; -import java.util.HashSet; -import java.util.LinkedHashSet; -import java.util.LinkedList; -import java.util.Random; -import java.util.Set; +import java.util.*; import java.util.function.Function; import java.util.function.IntPredicate; import java.util.function.Predicate; import java.util.stream.Stream; -import org.apache.commons.lang3.ArrayUtils; - public class ArrayOperations { // Get the first and last item of an array diff --git a/core-java-modules/core-java-arrays/src/test/java/com/baeldung/array/AddElementToEndOfArrayUnitTest.java b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/AddElementToEndOfArrayUnitTest.java similarity index 100% rename from core-java-modules/core-java-arrays/src/test/java/com/baeldung/array/AddElementToEndOfArrayUnitTest.java rename to core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/AddElementToEndOfArrayUnitTest.java diff --git a/core-java-modules/core-java-arrays/src/test/java/com/baeldung/array/RemoveElementFromAnArrayUnitTest.java b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/RemoveElementFromAnArrayUnitTest.java similarity index 91% rename from core-java-modules/core-java-arrays/src/test/java/com/baeldung/array/RemoveElementFromAnArrayUnitTest.java rename to core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/RemoveElementFromAnArrayUnitTest.java index ea52cd17d9..567b870ef1 100644 --- a/core-java-modules/core-java-arrays/src/test/java/com/baeldung/array/RemoveElementFromAnArrayUnitTest.java +++ b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/RemoveElementFromAnArrayUnitTest.java @@ -1,13 +1,10 @@ package com.baeldung.array; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; - import org.apache.commons.lang3.ArrayUtils; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + class RemoveElementFromAnArrayUnitTest { private final RemoveElementFromAnArray sut = new RemoveElementFromAnArray(); diff --git a/core-java-modules/core-java-arrays/src/test/java/com/baeldung/array/conversions/FloatToByteArrayUnitTest.java b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/conversions/FloatToByteArrayUnitTest.java similarity index 80% rename from core-java-modules/core-java-arrays/src/test/java/com/baeldung/array/conversions/FloatToByteArrayUnitTest.java rename to core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/conversions/FloatToByteArrayUnitTest.java index a2cd273f21..7656783052 100644 --- a/core-java-modules/core-java-arrays/src/test/java/com/baeldung/array/conversions/FloatToByteArrayUnitTest.java +++ b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/conversions/FloatToByteArrayUnitTest.java @@ -1,12 +1,10 @@ package com.baeldung.array.conversions; -import static com.baeldung.array.conversions.FloatToByteArray.byteArrayToFloat; -import static com.baeldung.array.conversions.FloatToByteArray.byteArrayToFloatWithByteBuffer; -import static com.baeldung.array.conversions.FloatToByteArray.floatToByteArray; -import static com.baeldung.array.conversions.FloatToByteArray.floatToByteArrayWithByteBuffer; +import org.junit.Test; + +import static com.baeldung.array.conversions.FloatToByteArray.*; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; -import org.junit.Test; public class FloatToByteArrayUnitTest { diff --git a/core-java-modules/core-java-arrays/src/test/java/com/baeldung/array/operations/ArrayOperationsUnitTest.java b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/operations/ArrayOperationsUnitTest.java similarity index 100% rename from core-java-modules/core-java-arrays/src/test/java/com/baeldung/array/operations/ArrayOperationsUnitTest.java rename to core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/operations/ArrayOperationsUnitTest.java index a9c6d97d9f..d72681ca05 100644 --- a/core-java-modules/core-java-arrays/src/test/java/com/baeldung/array/operations/ArrayOperationsUnitTest.java +++ b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/operations/ArrayOperationsUnitTest.java @@ -1,13 +1,13 @@ package com.baeldung.array.operations; -import static org.assertj.core.api.Assertions.assertThat; - -import java.util.Arrays; - import org.assertj.core.api.Condition; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import java.util.Arrays; + +import static org.assertj.core.api.Assertions.assertThat; + public class ArrayOperationsUnitTest { private Integer[] defaultObjectArray; diff --git a/core-java-modules/core-java-arrays/src/test/java/com/baeldung/array/operations/IntersectionUnitTest.java b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/operations/IntersectionUnitTest.java similarity index 91% rename from core-java-modules/core-java-arrays/src/test/java/com/baeldung/array/operations/IntersectionUnitTest.java rename to core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/operations/IntersectionUnitTest.java index 3c61060ea8..1560cc5701 100644 --- a/core-java-modules/core-java-arrays/src/test/java/com/baeldung/array/operations/IntersectionUnitTest.java +++ b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/operations/IntersectionUnitTest.java @@ -2,9 +2,7 @@ package com.baeldung.array.operations; import org.junit.jupiter.api.Test; -import static com.baeldung.array.operations.ArrayOperations.intersectionMultiSet; -import static com.baeldung.array.operations.ArrayOperations.intersectionSet; -import static com.baeldung.array.operations.ArrayOperations.intersectionSimple; +import static com.baeldung.array.operations.ArrayOperations.*; import static org.assertj.core.api.Assertions.assertThat; class IntersectionUnitTest { diff --git a/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/list/removefirst/RemoveFirstElementUnitTest.java b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/removefirst/RemoveFirstElementUnitTest.java similarity index 97% rename from core-java-modules/core-java-collections-list/src/test/java/com/baeldung/list/removefirst/RemoveFirstElementUnitTest.java rename to core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/removefirst/RemoveFirstElementUnitTest.java index f2b1bd9d88..83a97973f3 100644 --- a/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/list/removefirst/RemoveFirstElementUnitTest.java +++ b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/removefirst/RemoveFirstElementUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.list.removefirst; +package com.baeldung.array.removefirst; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; diff --git a/core-java-modules/core-java-arrays/README.md b/core-java-modules/core-java-arrays/README.md index 45feff3edc..088e927910 100644 --- a/core-java-modules/core-java-arrays/README.md +++ b/core-java-modules/core-java-arrays/README.md @@ -3,17 +3,13 @@ ## Core Java Arrays Cookbooks and Examples ### Relevant Articles: -- [How to Copy an Array in Java](http://www.baeldung.com/java-array-copy) -- [Check if a Java Array Contains a Value](http://www.baeldung.com/java-array-contains-value) -- [Initializing Arrays in Java](http://www.baeldung.com/java-initialize-array) -- [Guide to the java.util.Arrays Class](http://www.baeldung.com/java-util-arrays) -- [Multi-Dimensional Arrays In Java](http://www.baeldung.com/java-jagged-arrays) -- [Find Sum and Average in a Java Array](http://www.baeldung.com/java-array-sum-average) +- [How to Copy an Array in Java](https://www.baeldung.com/java-array-copy) +- [Check if a Java Array Contains a Value](https://www.baeldung.com/java-array-contains-value) +- [Initializing Arrays in Java](https://www.baeldung.com/java-initialize-array) +- [Guide to the java.util.Arrays Class](https://www.baeldung.com/java-util-arrays) +- [Multi-Dimensional Arrays In Java](https://www.baeldung.com/java-jagged-arrays) +- [Find Sum and Average in a Java Array](https://www.baeldung.com/java-array-sum-average) - [Arrays in Java: A Reference Guide](https://www.baeldung.com/java-arrays-guide) -- [How to Invert an Array in Java](http://www.baeldung.com/java-invert-array) -- [Array Operations in Java](http://www.baeldung.com/java-common-array-operations) -- [Intersection Between two Integer Arrays](https://www.baeldung.com/java-array-intersection) +- [How to Invert an Array in Java](https://www.baeldung.com/java-invert-array) - [Sorting Arrays in Java](https://www.baeldung.com/java-sorting-arrays) -- [Convert a Float to a Byte Array in Java](https://www.baeldung.com/java-convert-float-to-byte-array) -- [Converting Between Stream and Array in Java](https://www.baeldung.com/java-stream-to-array) -- [Removing an Element from an Array in Java](https://www.baeldung.com/java-array-remove-element) +- [Checking If an Array Is Sorted in Java](https://www.baeldung.com/java-check-sorted-array) diff --git a/core-java-modules/core-java-collections-2/README.md b/core-java-modules/core-java-collections-2/README.md new file mode 100644 index 0000000000..13ca191edb --- /dev/null +++ b/core-java-modules/core-java-collections-2/README.md @@ -0,0 +1,15 @@ +========= + +## Core Java Collections Cookbooks and Examples + +### Relevant Articles: +- [Removing Elements from Java Collections](https://www.baeldung.com/java-collection-remove-elements) +- [How to Filter a Collection in Java](https://www.baeldung.com/java-collection-filtering) +- [Join and Split Arrays and Collections in Java](https://www.baeldung.com/java-join-and-split) +- [Java – Combine Multiple Collections](https://www.baeldung.com/java-combine-multiple-collections) +- [Combining Different Types of Collections in Java](https://www.baeldung.com/java-combine-collections) +- [Shuffling Collections In Java](https://www.baeldung.com/java-shuffle-collection) +- [Sorting in Java](https://www.baeldung.com/java-sorting) +- [Getting the Size of an Iterable in Java](https://www.baeldung.com/java-iterable-size) +- [Java Null-Safe Streams from Collections](https://www.baeldung.com/java-null-safe-streams-from-collections) + diff --git a/core-java-modules/core-java-collections-2/pom.xml b/core-java-modules/core-java-collections-2/pom.xml new file mode 100644 index 0000000000..0ac53ec180 --- /dev/null +++ b/core-java-modules/core-java-collections-2/pom.xml @@ -0,0 +1,58 @@ + + 4.0.0 + core-java-collections-2 + 0.0.1-SNAPSHOT + core-java-collections-2 + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + org.eclipse.collections + eclipse-collections + ${eclipse.collections.version} + + + org.apache.commons + commons-collections4 + ${commons-collections4.version} + + + org.apache.commons + commons-exec + ${commons-exec.version} + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + org.assertj + assertj-core + ${assertj.version} + test + + + org.junit.platform + junit-platform-runner + ${junit.platform.version} + test + + + + + 7.1.0 + 4.1 + 3.11.1 + 1.2.0 + 1.3 + + diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/combiningcollections/CombiningArrays.java b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/combiningcollections/CombiningArrays.java similarity index 95% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/combiningcollections/CombiningArrays.java rename to core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/combiningcollections/CombiningArrays.java index 2ad48033c0..5f63123f6a 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/combiningcollections/CombiningArrays.java +++ b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/combiningcollections/CombiningArrays.java @@ -1,4 +1,4 @@ -package com.baeldung.combiningcollections; +package com.baeldung.collections.combiningcollections; import java.util.Arrays; import java.util.stream.Stream; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/combiningcollections/CombiningLists.java b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/combiningcollections/CombiningLists.java similarity index 96% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/combiningcollections/CombiningLists.java rename to core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/combiningcollections/CombiningLists.java index 3fdf672758..a45e9cdfe8 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/combiningcollections/CombiningLists.java +++ b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/combiningcollections/CombiningLists.java @@ -1,4 +1,4 @@ -package com.baeldung.combiningcollections; +package com.baeldung.collections.combiningcollections; import java.util.ArrayList; import java.util.Collection; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/combiningcollections/CombiningMaps.java b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/combiningcollections/CombiningMaps.java similarity index 96% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/combiningcollections/CombiningMaps.java rename to core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/combiningcollections/CombiningMaps.java index d8bbd01ed3..d4d21d0dad 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/combiningcollections/CombiningMaps.java +++ b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/combiningcollections/CombiningMaps.java @@ -1,4 +1,4 @@ -package com.baeldung.combiningcollections; +package com.baeldung.collections.combiningcollections; import java.util.Collection; import java.util.HashMap; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/combiningcollections/CombiningSets.java b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/combiningcollections/CombiningSets.java similarity index 96% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/combiningcollections/CombiningSets.java rename to core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/combiningcollections/CombiningSets.java index 5f531c1d43..27a5681eee 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/combiningcollections/CombiningSets.java +++ b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/combiningcollections/CombiningSets.java @@ -1,4 +1,4 @@ -package com.baeldung.combiningcollections; +package com.baeldung.collections.combiningcollections; import java.util.Collection; import java.util.HashSet; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/java/filtering/CollectionUtilsCollectionFilter.java b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/filtering/CollectionUtilsCollectionFilter.java similarity index 91% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/java/filtering/CollectionUtilsCollectionFilter.java rename to core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/filtering/CollectionUtilsCollectionFilter.java index 58f9f6af54..de5158e147 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/java/filtering/CollectionUtilsCollectionFilter.java +++ b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/filtering/CollectionUtilsCollectionFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.java.filtering; +package com.baeldung.collections.filtering; import java.util.Collection; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/java/filtering/EclipseCollectionsCollectionFilter.java b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/filtering/EclipseCollectionsCollectionFilter.java similarity index 96% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/java/filtering/EclipseCollectionsCollectionFilter.java rename to core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/filtering/EclipseCollectionsCollectionFilter.java index 981d6ca241..a7b78b1f9b 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/java/filtering/EclipseCollectionsCollectionFilter.java +++ b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/filtering/EclipseCollectionsCollectionFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.java.filtering; +package com.baeldung.collections.filtering; import java.util.Collection; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/java/filtering/GuavaCollectionFilter.java b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/filtering/GuavaCollectionFilter.java similarity index 91% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/java/filtering/GuavaCollectionFilter.java rename to core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/filtering/GuavaCollectionFilter.java index 88338fd6d4..0a2a782c33 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/java/filtering/GuavaCollectionFilter.java +++ b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/filtering/GuavaCollectionFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.java.filtering; +package com.baeldung.collections.filtering; import java.util.Collection; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/java/filtering/StreamsCollectionFilter.java b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/filtering/StreamsCollectionFilter.java similarity index 95% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/java/filtering/StreamsCollectionFilter.java rename to core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/filtering/StreamsCollectionFilter.java index f074f74199..a9fb8481e5 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/java/filtering/StreamsCollectionFilter.java +++ b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/filtering/StreamsCollectionFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.java.filtering; +package com.baeldung.collections.filtering; import java.util.Collection; import java.util.function.Predicate; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/java/iterable/IterableSize.java b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/iterablesize/IterableSize.java similarity index 97% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/java/iterable/IterableSize.java rename to core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/iterablesize/IterableSize.java index 03864f16f2..b96e2bb571 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/java/iterable/IterableSize.java +++ b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/iterablesize/IterableSize.java @@ -1,4 +1,4 @@ -package com.baeldung.java.iterable; +package com.baeldung.collections.iterablesize; import java.util.Collection; import java.util.stream.StreamSupport; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingCommonsEmptyIfNull.java b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingCommonsEmptyIfNull.java similarity index 92% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingCommonsEmptyIfNull.java rename to core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingCommonsEmptyIfNull.java index 2405c26aac..ce5cbb39d6 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingCommonsEmptyIfNull.java +++ b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingCommonsEmptyIfNull.java @@ -1,4 +1,4 @@ -package com.baeldung.nullsafecollectionstreams; +package com.baeldung.collections.nullsafecollectionstreams; import java.util.Collection; import java.util.stream.Stream; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingJava8OptionalContainer.java b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingJava8OptionalContainer.java similarity index 92% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingJava8OptionalContainer.java rename to core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingJava8OptionalContainer.java index da767d4563..68d51c2d87 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingJava8OptionalContainer.java +++ b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingJava8OptionalContainer.java @@ -1,4 +1,4 @@ -package com.baeldung.nullsafecollectionstreams; +package com.baeldung.collections.nullsafecollectionstreams; import java.util.Collection; import java.util.Optional; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingNullDereferenceCheck.java b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingNullDereferenceCheck.java similarity index 91% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingNullDereferenceCheck.java rename to core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingNullDereferenceCheck.java index 0c10f1cebc..6c606ebedd 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingNullDereferenceCheck.java +++ b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingNullDereferenceCheck.java @@ -1,4 +1,4 @@ -package com.baeldung.nullsafecollectionstreams; +package com.baeldung.collections.nullsafecollectionstreams; import java.util.Collection; import java.util.stream.Stream; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/removal/CollectionRemoveIf.java b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/removal/CollectionRemoveIf.java similarity index 91% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/removal/CollectionRemoveIf.java rename to core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/removal/CollectionRemoveIf.java index 2f5e91596f..4089382376 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/removal/CollectionRemoveIf.java +++ b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/removal/CollectionRemoveIf.java @@ -1,4 +1,4 @@ -package com.baeldung.removal; +package com.baeldung.collections.removal; import java.util.ArrayList; import java.util.Collection; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/removal/Iterators.java b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/removal/Iterators.java similarity index 93% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/removal/Iterators.java rename to core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/removal/Iterators.java index 86b91b3fdc..d551b04eae 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/removal/Iterators.java +++ b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/removal/Iterators.java @@ -1,4 +1,4 @@ -package com.baeldung.removal; +package com.baeldung.collections.removal; import java.util.ArrayList; import java.util.Collection; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/removal/StreamFilterAndCollector.java b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/removal/StreamFilterAndCollector.java similarity index 93% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/removal/StreamFilterAndCollector.java rename to core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/removal/StreamFilterAndCollector.java index bf6db68bae..e0dc75f428 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/removal/StreamFilterAndCollector.java +++ b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/removal/StreamFilterAndCollector.java @@ -1,4 +1,4 @@ -package com.baeldung.removal; +package com.baeldung.collections.removal; import java.util.ArrayList; import java.util.Collection; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/removal/StreamPartitioningBy.java b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/removal/StreamPartitioningBy.java similarity index 95% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/removal/StreamPartitioningBy.java rename to core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/removal/StreamPartitioningBy.java index c77e996616..c01c334f01 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/removal/StreamPartitioningBy.java +++ b/core-java-modules/core-java-collections-2/src/main/java/com/baeldung/collections/removal/StreamPartitioningBy.java @@ -1,4 +1,4 @@ -package com.baeldung.removal; +package com.baeldung.collections.removal; import java.util.ArrayList; import java.util.Collection; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/combiningcollections/CombiningArraysUnitTest.java b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/combiningcollections/CombiningArraysUnitTest.java similarity index 96% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/combiningcollections/CombiningArraysUnitTest.java rename to core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/combiningcollections/CombiningArraysUnitTest.java index 3b80d773ad..312f5582ba 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/combiningcollections/CombiningArraysUnitTest.java +++ b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/combiningcollections/CombiningArraysUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.combiningcollections; +package com.baeldung.collections.combiningcollections; import static org.junit.Assert.*; import org.junit.Test; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/combiningcollections/CombiningListsUnitTest.java b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/combiningcollections/CombiningListsUnitTest.java similarity index 96% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/combiningcollections/CombiningListsUnitTest.java rename to core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/combiningcollections/CombiningListsUnitTest.java index c5851d7daf..5443e56e5f 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/combiningcollections/CombiningListsUnitTest.java +++ b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/combiningcollections/CombiningListsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.combiningcollections; +package com.baeldung.collections.combiningcollections; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/combiningcollections/CombiningMapsUnitTest.java b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/combiningcollections/CombiningMapsUnitTest.java similarity index 96% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/combiningcollections/CombiningMapsUnitTest.java rename to core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/combiningcollections/CombiningMapsUnitTest.java index 3fa9cc7dc4..644f178f80 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/combiningcollections/CombiningMapsUnitTest.java +++ b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/combiningcollections/CombiningMapsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.combiningcollections; +package com.baeldung.collections.combiningcollections; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/combiningcollections/CombiningSetsUnitTest.java b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/combiningcollections/CombiningSetsUnitTest.java similarity index 96% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/combiningcollections/CombiningSetsUnitTest.java rename to core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/combiningcollections/CombiningSetsUnitTest.java index 330827bdc2..c9976eb6de 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/combiningcollections/CombiningSetsUnitTest.java +++ b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/combiningcollections/CombiningSetsUnitTest.java @@ -1,5 +1,5 @@ -package com.baeldung.combiningcollections; +package com.baeldung.collections.combiningcollections; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/java/filtering/CollectionFiltersUnitTest.java b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/filtering/CollectionFiltersUnitTest.java similarity index 98% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/java/filtering/CollectionFiltersUnitTest.java rename to core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/filtering/CollectionFiltersUnitTest.java index b30805d471..db387818b8 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/java/filtering/CollectionFiltersUnitTest.java +++ b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/filtering/CollectionFiltersUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.java.filtering; +package com.baeldung.collections.filtering; import static org.assertj.core.api.Assertions.assertThat; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/java/iterable/IterableSizeUnitTest.java b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/iterablesize/IterableSizeUnitTest.java similarity index 96% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/java/iterable/IterableSizeUnitTest.java rename to core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/iterablesize/IterableSizeUnitTest.java index 4bc413dee0..35702a74b3 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/java/iterable/IterableSizeUnitTest.java +++ b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/iterablesize/IterableSizeUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.java.iterable; +package com.baeldung.collections.iterablesize; import static org.junit.Assert.assertEquals; diff --git a/core-java-modules/core-java-collections/src/test/java/org/baeldung/java/collections/CollectionsJoinAndSplitJUnitTest.java b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/joinsplit/CollectionsJoinAndSplitJUnitTest.java similarity index 97% rename from core-java-modules/core-java-collections/src/test/java/org/baeldung/java/collections/CollectionsJoinAndSplitJUnitTest.java rename to core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/joinsplit/CollectionsJoinAndSplitJUnitTest.java index c288cf499d..1904fd1587 100644 --- a/core-java-modules/core-java-collections/src/test/java/org/baeldung/java/collections/CollectionsJoinAndSplitJUnitTest.java +++ b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/joinsplit/CollectionsJoinAndSplitJUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.java.collections; +package com.baeldung.collections.joinsplit; import java.util.ArrayList; import java.util.Collections; diff --git a/core-java-modules/core-java-collections/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/joinsplit/JoinSplitCollectionsUnitTest.java similarity index 99% rename from core-java-modules/core-java-collections/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java rename to core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/joinsplit/JoinSplitCollectionsUnitTest.java index c594529f41..1fbe210ad4 100644 --- a/core-java-modules/core-java-collections/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java +++ b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/joinsplit/JoinSplitCollectionsUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.java.collections; +package com.baeldung.collections.joinsplit; import org.junit.Test; diff --git a/core-java-modules/core-java-collections/src/test/java/org/baeldung/java/collections/CollectionsConcatenateUnitTest.java b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/multiplecollections/CombineMultipleCollectionsUnitTest.java similarity index 98% rename from core-java-modules/core-java-collections/src/test/java/org/baeldung/java/collections/CollectionsConcatenateUnitTest.java rename to core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/multiplecollections/CombineMultipleCollectionsUnitTest.java index d43075c925..ebef8d6875 100644 --- a/core-java-modules/core-java-collections/src/test/java/org/baeldung/java/collections/CollectionsConcatenateUnitTest.java +++ b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/multiplecollections/CombineMultipleCollectionsUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.java.collections; +package com.baeldung.collections.multiplecollections; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; @@ -14,7 +14,7 @@ import java.util.stream.Stream; import static java.util.Arrays.asList; -public class CollectionsConcatenateUnitTest { +public class CombineMultipleCollectionsUnitTest { @Test public void givenUsingJava8_whenConcatenatingUsingConcat_thenCorrect() { diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingCommonsEmptyIfNullUnitTest.java b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingCommonsEmptyIfNullUnitTest.java similarity index 95% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingCommonsEmptyIfNullUnitTest.java rename to core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingCommonsEmptyIfNullUnitTest.java index 875045946d..42cda7926c 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingCommonsEmptyIfNullUnitTest.java +++ b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingCommonsEmptyIfNullUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.nullsafecollectionstreams; +package com.baeldung.collections.nullsafecollectionstreams; import java.util.Arrays; import java.util.Collection; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingJava8OptionalContainerUnitTest.java b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingJava8OptionalContainerUnitTest.java similarity index 95% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingJava8OptionalContainerUnitTest.java rename to core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingJava8OptionalContainerUnitTest.java index 402f1a6a19..666d5e7d04 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingJava8OptionalContainerUnitTest.java +++ b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingJava8OptionalContainerUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.nullsafecollectionstreams; +package com.baeldung.collections.nullsafecollectionstreams; import java.util.Arrays; import java.util.Collection; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingNullDereferenceCheckUnitTest.java b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingNullDereferenceCheckUnitTest.java similarity index 95% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingNullDereferenceCheckUnitTest.java rename to core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingNullDereferenceCheckUnitTest.java index bb6152371d..2e8eeb35ad 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/nullsafecollectionstreams/NullSafeCollectionStreamsUsingNullDereferenceCheckUnitTest.java +++ b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/nullsafecollectionstreams/NullSafeCollectionStreamsUsingNullDereferenceCheckUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.nullsafecollectionstreams; +package com.baeldung.collections.nullsafecollectionstreams; import java.util.Arrays; import java.util.Collection; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/removal/RemovalUnitTest.java b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/removal/RemovalUnitTest.java similarity index 98% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/removal/RemovalUnitTest.java rename to core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/removal/RemovalUnitTest.java index 1b379f32de..998dbe6cca 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/removal/RemovalUnitTest.java +++ b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/removal/RemovalUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.removal; +package com.baeldung.collections.removal; import org.junit.Before; import org.junit.Test; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/shufflingcollections/ShufflingCollectionsUnitTest.java b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/shufflingcollections/ShufflingCollectionsUnitTest.java similarity index 97% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/shufflingcollections/ShufflingCollectionsUnitTest.java rename to core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/shufflingcollections/ShufflingCollectionsUnitTest.java index d013907c9a..041e67ba7f 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/shufflingcollections/ShufflingCollectionsUnitTest.java +++ b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/shufflingcollections/ShufflingCollectionsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.shufflingcollections; +package com.baeldung.collections.shufflingcollections; import org.junit.Test; diff --git a/core-java-modules/core-java-collections/src/test/java/org/baeldung/java/sorting/Employee.java b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/sorting/Employee.java similarity index 96% rename from core-java-modules/core-java-collections/src/test/java/org/baeldung/java/sorting/Employee.java rename to core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/sorting/Employee.java index 99af49c8d3..e838dbea18 100644 --- a/core-java-modules/core-java-collections/src/test/java/org/baeldung/java/sorting/Employee.java +++ b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/sorting/Employee.java @@ -1,4 +1,4 @@ -package org.baeldung.java.sorting; +package com.baeldung.collections.sorting; public class Employee implements Comparable { diff --git a/core-java-modules/core-java-collections/src/test/java/org/baeldung/java/sorting/JavaSortingUnitTest.java b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/sorting/JavaSortingUnitTest.java similarity index 99% rename from core-java-modules/core-java-collections/src/test/java/org/baeldung/java/sorting/JavaSortingUnitTest.java rename to core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/sorting/JavaSortingUnitTest.java index ca9c9b4b5d..2505adcea7 100644 --- a/core-java-modules/core-java-collections/src/test/java/org/baeldung/java/sorting/JavaSortingUnitTest.java +++ b/core-java-modules/core-java-collections-2/src/test/java/com/baeldung/collections/sorting/JavaSortingUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.java.sorting; +package com.baeldung.collections.sorting; import com.google.common.primitives.Ints; import org.apache.commons.lang3.ArrayUtils; diff --git a/core-java-modules/core-java-collections-3/README.md b/core-java-modules/core-java-collections-3/README.md new file mode 100644 index 0000000000..9218384640 --- /dev/null +++ b/core-java-modules/core-java-collections-3/README.md @@ -0,0 +1,11 @@ +========= + +## Core Java Collections Cookbooks and Examples + +### Relevant Articles: +- [Time Comparison of Arrays.sort(Object[]) and Arrays.sort(int[])](https://www.baeldung.com/arrays-sortobject-vs-sortint) +- [Java ArrayList vs Vector](https://www.baeldung.com/java-arraylist-vs-vector) +- [Differences Between HashMap and Hashtable](https://www.baeldung.com/hashmap-hashtable-differences) +- [Differences Between Collection.clear() and Collection.removeAll()](https://www.baeldung.com/java-collection-clear-vs-removeall) +- [Performance of contains() in a HashSet vs ArrayList](https://www.baeldung.com/java-hashset-arraylist-contains-performance) +- [Fail-Safe Iterator vs Fail-Fast Iterator](https://www.baeldung.com/java-fail-safe-vs-fail-fast-iterator) diff --git a/core-java-modules/core-java-collections-3/pom.xml b/core-java-modules/core-java-collections-3/pom.xml new file mode 100644 index 0000000000..84c7865e68 --- /dev/null +++ b/core-java-modules/core-java-collections-3/pom.xml @@ -0,0 +1,34 @@ + + 4.0.0 + core-java-collections-3 + 0.1.0-SNAPSHOT + core-java-collections-3 + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + org.openjdk.jmh + jmh-core + ${openjdk.jmh.version} + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + 1.19 + 3.11.1 + + diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/performance/ArrayListBenchmark.java b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/arraylistvsvector/ArrayListBenchmark.java similarity index 98% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/performance/ArrayListBenchmark.java rename to core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/arraylistvsvector/ArrayListBenchmark.java index 331ae8d908..7fcadf019c 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/performance/ArrayListBenchmark.java +++ b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/arraylistvsvector/ArrayListBenchmark.java @@ -1,4 +1,4 @@ -package com.baeldung.performance; +package com.baeldung.collections.arraylistvsvector; import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; diff --git a/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/arraylistvsvector/Employee.java b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/arraylistvsvector/Employee.java new file mode 100644 index 0000000000..02f25a7558 --- /dev/null +++ b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/arraylistvsvector/Employee.java @@ -0,0 +1,55 @@ +package com.baeldung.collections.arraylistvsvector; + +public class Employee { + + private Long id; + private String name; + + public Employee(Long id, String name) { + this.name = name; + this.id = id; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Employee employee = (Employee) o; + + if (!id.equals(employee.id)) return false; + return name.equals(employee.name); + + } + + @Override + public int hashCode() { + int result = id.hashCode(); + result = 31 * result + name.hashCode(); + return result; + } + + @Override + public String toString() { + return "Employee{" + + "id=" + id + + ", name='" + name + '\'' + + '}'; + } +} diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/java/list/VectorExample.java b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/arraylistvsvector/VectorExample.java similarity index 92% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/java/list/VectorExample.java rename to core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/arraylistvsvector/VectorExample.java index 7debc07911..e82e47cdbb 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/java/list/VectorExample.java +++ b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/arraylistvsvector/VectorExample.java @@ -1,4 +1,4 @@ -package com.baeldung.java.list; +package com.baeldung.collections.arraylistvsvector; import java.util.Enumeration; import java.util.Iterator; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/performance/CollectionsBenchmark.java b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/containsperformance/CollectionsBenchmark.java similarity index 96% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/performance/CollectionsBenchmark.java rename to core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/containsperformance/CollectionsBenchmark.java index 921e1608ea..76edd10e92 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/performance/CollectionsBenchmark.java +++ b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/containsperformance/CollectionsBenchmark.java @@ -1,4 +1,4 @@ -package com.baeldung.performance; +package com.baeldung.collections.containsperformance; import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; diff --git a/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/containsperformance/Employee.java b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/containsperformance/Employee.java new file mode 100644 index 0000000000..6c60f8772c --- /dev/null +++ b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/containsperformance/Employee.java @@ -0,0 +1,55 @@ +package com.baeldung.collections.containsperformance; + +public class Employee { + + private Long id; + private String name; + + public Employee(Long id, String name) { + this.name = name; + this.id = id; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Employee employee = (Employee) o; + + if (!id.equals(employee.id)) return false; + return name.equals(employee.name); + + } + + @Override + public int hashCode() { + int result = id.hashCode(); + result = 31 * result + name.hashCode(); + return result; + } + + @Override + public String toString() { + return "Employee{" + + "id=" + id + + ", name='" + name + '\'' + + '}'; + } +} diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/iterators/Iterators.java b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/iterators/Iterators.java similarity index 97% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/iterators/Iterators.java rename to core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/iterators/Iterators.java index 5e7cfdb54f..23e6bbda77 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/iterators/Iterators.java +++ b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/iterators/Iterators.java @@ -1,4 +1,4 @@ -package com.baeldung.iterators; +package com.baeldung.collections.iterators; import java.util.ArrayList; import java.util.Iterator; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/performance/ArraySortBenchmark.java b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/sortingcomparison/ArraySortBenchmark.java similarity index 97% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/performance/ArraySortBenchmark.java rename to core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/sortingcomparison/ArraySortBenchmark.java index b93f8e9cc2..1cd56aa29d 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/performance/ArraySortBenchmark.java +++ b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/sortingcomparison/ArraySortBenchmark.java @@ -1,4 +1,4 @@ -package com.baeldung.performance; +package com.baeldung.collections.sortingcomparison; import java.util.Arrays; import java.util.concurrent.TimeUnit; diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/java/sort/CollectionsSortCompare.java b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/sortingcomparison/CollectionsSortCompare.java similarity index 94% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/java/sort/CollectionsSortCompare.java rename to core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/sortingcomparison/CollectionsSortCompare.java index 1eff522877..abe7a12a00 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/java/sort/CollectionsSortCompare.java +++ b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/sortingcomparison/CollectionsSortCompare.java @@ -1,4 +1,4 @@ -package com.baeldung.java.sort; +package com.baeldung.collections.sortingcomparison; import java.util.ArrayList; import java.util.Arrays; diff --git a/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/collection/ClearVsRemoveAllUnitTest.java b/core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/clearvsremoveall/ClearVsRemoveAllUnitTest.java similarity index 95% rename from core-java-modules/core-java-collections-list/src/test/java/com/baeldung/collection/ClearVsRemoveAllUnitTest.java rename to core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/clearvsremoveall/ClearVsRemoveAllUnitTest.java index 8b0a7ef0db..9cd9c6aa50 100644 --- a/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/collection/ClearVsRemoveAllUnitTest.java +++ b/core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/clearvsremoveall/ClearVsRemoveAllUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.collection; +package com.baeldung.collections.clearvsremoveall; import org.junit.jupiter.api.Test; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/hashmapvshashtable/HashmapVsHashtableDifferenceUnitTest.java b/core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/hashmapvshashtable/HashmapVsHashtableDifferenceUnitTest.java similarity index 98% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/hashmapvshashtable/HashmapVsHashtableDifferenceUnitTest.java rename to core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/hashmapvshashtable/HashmapVsHashtableDifferenceUnitTest.java index 5218332d60..b00a7fd953 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/hashmapvshashtable/HashmapVsHashtableDifferenceUnitTest.java +++ b/core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/hashmapvshashtable/HashmapVsHashtableDifferenceUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.hashmapvshashtable; +package com.baeldung.collections.hashmapvshashtable; import static org.junit.Assert.assertEquals; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/iterators/IteratorsUnitTest.java b/core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/iterators/IteratorsUnitTest.java similarity index 77% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/iterators/IteratorsUnitTest.java rename to core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/iterators/IteratorsUnitTest.java index 36e1f4a83c..95cf590857 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/iterators/IteratorsUnitTest.java +++ b/core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/iterators/IteratorsUnitTest.java @@ -1,8 +1,8 @@ -package com.baeldung.iterators; +package com.baeldung.collections.iterators; -import static com.baeldung.iterators.Iterators.failFast1; -import static com.baeldung.iterators.Iterators.failFast2; -import static com.baeldung.iterators.Iterators.failSafe1; +import static com.baeldung.collections.iterators.Iterators.failFast1; +import static com.baeldung.collections.iterators.Iterators.failFast2; +import static com.baeldung.collections.iterators.Iterators.failSafe1; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java index b484eecef7..25f39e9a13 100644 --- a/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java +++ b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java @@ -42,7 +42,7 @@ public class ListInitializationUnitTest { } @Test - public void givenArrayAsList_whenCreated_thenShareReference() { + public void givenArraysAsList_whenCreated_thenShareReference() { String[] array = { "foo", "bar" }; List list = Arrays.asList(array); array[0] = "baz"; diff --git a/core-java-modules/core-java-collections-list/README.md b/core-java-modules/core-java-collections-list/README.md index e83fcce5ff..367f62780d 100644 --- a/core-java-modules/core-java-collections-list/README.md +++ b/core-java-modules/core-java-collections-list/README.md @@ -11,4 +11,4 @@ - [Remove the First Element from a List](http://www.baeldung.com/java-remove-first-element-from-list) - [How to Find an Element in a List with Java](http://www.baeldung.com/find-list-element-java) - [Finding Max/Min of a List or Collection](http://www.baeldung.com/java-collection-min-max) -- [Remove All Occurrences of a Specific Value from a List](https://www.baeldung.com/java-remove-value-from-list) \ No newline at end of file +- [Remove All Occurrences of a Specific Value from a List](https://www.baeldung.com/java-remove-value-from-list) diff --git a/core-java-modules/core-java-collections/README.md b/core-java-modules/core-java-collections/README.md index b34293769d..7be7d02b3f 100644 --- a/core-java-modules/core-java-collections/README.md +++ b/core-java-modules/core-java-collections/README.md @@ -3,29 +3,13 @@ ## Core Java Collections Cookbooks and Examples ### Relevant Articles: -- [Java – Combine Multiple Collections](http://www.baeldung.com/java-combine-multiple-collections) -- [Collect a Java Stream to an Immutable Collection](http://www.baeldung.com/java-stream-immutable-collection) -- [Introduction to the Java ArrayDeque](http://www.baeldung.com/java-array-deque) -- [Getting the Size of an Iterable in Java](http://www.baeldung.com/java-iterable-size) -- [How to Filter a Collection in Java](http://www.baeldung.com/java-collection-filtering) -- [Removing the First Element of an Array](https://www.baeldung.com/java-array-remove-first-element) -- [Fail-Safe Iterator vs Fail-Fast Iterator](http://www.baeldung.com/java-fail-safe-vs-fail-fast-iterator) -- [Shuffling Collections In Java](http://www.baeldung.com/java-shuffle-collection) -- [An Introduction to Java.util.Hashtable Class](http://www.baeldung.com/java-hash-table) -- [Java Null-Safe Streams from Collections](https://www.baeldung.com/java-null-safe-streams-from-collections) +- [Collect a Java Stream to an Immutable Collection](https://www.baeldung.com/java-stream-immutable-collection) +- [Introduction to the Java ArrayDeque](https://www.baeldung.com/java-array-deque) +- [An Introduction to Java.util.Hashtable Class](https://www.baeldung.com/java-hash-table) - [Thread Safe LIFO Data Structure Implementations](https://www.baeldung.com/java-lifo-thread-safe) -- [Differences Between Collection.clear() and Collection.removeAll()](https://www.baeldung.com/java-collection-clear-vs-removeall) -- [Performance of contains() in a HashSet vs ArrayList](https://www.baeldung.com/java-hashset-arraylist-contains-performance) - [Time Complexity of Java Collections](https://www.baeldung.com/java-collections-complexity) -- [Operating on and Removing an Item from Stream](https://www.baeldung.com/java-use-remove-item-stream) -- [An Introduction to Synchronized Java Collections](https://www.baeldung.com/java-synchronized-collections) -- [Removing Elements from Java Collections](https://www.baeldung.com/java-collection-remove-elements) -- [Combining Different Types of Collections in Java](https://www.baeldung.com/java-combine-collections) -- [Sorting in Java](http://www.baeldung.com/java-sorting) -- [Join and Split Arrays and Collections in Java](http://www.baeldung.com/java-join-and-split) - [A Guide to EnumMap](https://www.baeldung.com/java-enum-map) -- [A Guide to Iterator in Java](http://www.baeldung.com/java-iterator) -- [Differences Between HashMap and Hashtable](https://www.baeldung.com/hashmap-hashtable-differences) -- [Java ArrayList vs Vector](https://www.baeldung.com/java-arraylist-vs-vector) +- [A Guide to Iterator in Java](https://www.baeldung.com/java-iterator) - [Defining a Char Stack in Java](https://www.baeldung.com/java-char-stack) -- [Time Comparison of Arrays.sort(Object[]) and Arrays.sort(int[])](https://www.baeldung.com/arrays-sortobject-vs-sortint) +- [Guide to the Java Queue Interface](https://www.baeldung.com/java-queue) +- [An Introduction to Synchronized Java Collections](https://www.baeldung.com/java-synchronized-collections) diff --git a/core-java-modules/core-java-collections/pom.xml b/core-java-modules/core-java-collections/pom.xml index e5b89c3d16..7fd702845b 100644 --- a/core-java-modules/core-java-collections/pom.xml +++ b/core-java-modules/core-java-collections/pom.xml @@ -14,33 +14,12 @@ - - org.apache.commons - commons-collections4 - ${commons-collections4.version} - - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - - - org.eclipse.collections - eclipse-collections - ${eclipse.collections.version} - org.assertj assertj-core ${assertj.version} test - - org.junit.platform - junit-platform-runner - ${junit.platform.version} - test - org.openjdk.jmh jmh-core @@ -51,11 +30,6 @@ jmh-generator-annprocess ${openjdk.jmh.version} - - org.apache.commons - commons-exec - ${commons-exec.version} - org.projectlombok lombok @@ -66,13 +40,6 @@ 1.19 - 1.2.0 - 3.8.1 - 4.1 - 4.01 - 1.7.0 3.11.1 - 7.1.0 - 1.3 diff --git a/core-java-modules/core-java-collections/src/main/java/com/baeldung/synchronizedcollections/application/Application.java b/core-java-modules/core-java-collections/src/main/java/com/baeldung/synchronizedcollections/Application.java similarity index 90% rename from core-java-modules/core-java-collections/src/main/java/com/baeldung/synchronizedcollections/application/Application.java rename to core-java-modules/core-java-collections/src/main/java/com/baeldung/synchronizedcollections/Application.java index 093308a34a..f974a24839 100644 --- a/core-java-modules/core-java-collections/src/main/java/com/baeldung/synchronizedcollections/application/Application.java +++ b/core-java-modules/core-java-collections/src/main/java/com/baeldung/synchronizedcollections/Application.java @@ -1,4 +1,4 @@ -package com.baeldung.synchronizedcollections.application; +package com.baeldung.synchronizedcollections; import java.util.Arrays; import java.util.Collections; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/java/collections/ConcurrentModificationExceptionUnitTest.java b/core-java-modules/core-java-collections/src/test/java/com/baeldung/java/collections/ConcurrentModificationExceptionUnitTest.java deleted file mode 100644 index d0d8c3923c..0000000000 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/java/collections/ConcurrentModificationExceptionUnitTest.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.baeldung.java.collections; - -import org.junit.Test; - -import java.util.*; -import java.util.concurrent.CopyOnWriteArrayList; - -import static java.util.Arrays.asList; -import static org.junit.Assert.assertEquals; - -public class ConcurrentModificationExceptionUnitTest { - - @Test - public void changingContentWithSetDoesNotThrowConcurrentModificationException() throws Exception { - ArrayList array = new ArrayList<>(asList(0, "one", 2, "three")); - - for (Object item : array) { - array.set(3, 3); - } - } - - @Test - public void removingElementUsingIteratorAPI() throws Exception { - List originalList = new ArrayList<>(asList("zero", "one", "two", "three")); - - Iterator iterator = originalList.iterator(); - - while (iterator.hasNext()) { - String next = iterator.next(); - if (Objects.equals(next, "one")) iterator.remove(); - } - - assertEquals(originalList, asList("zero", "two", "three")); - } - - @Test - public void modifyingContentAndIteratingUsingListIteratorAPI() throws Exception { - List originalList = new ArrayList<>(asList("zero", "one", "two", "three")); - - ListIterator iterator = originalList.listIterator(); - - while (iterator.hasNext()) { - String next = iterator.next(); - if (Objects.equals(next, "one")) { - iterator.set("another"); - } - - if (Objects.equals(next, "two")) { - iterator.remove(); - } - - if (Objects.equals(next, "three")) { - iterator.add("four"); - } - } - - assertEquals(originalList, asList("zero", "another", "three", "four")); - } - - @Test - public void removingElementUsingCopyAndListAPI() throws Exception { - List originalList = new ArrayList<>(asList("zero", "one", "two", "three")); - - List listCopy = new ArrayList<>(originalList); - - for (String next : listCopy) { - if (Objects.equals(next, "one")) originalList.remove(originalList.indexOf(next) - 1); - } - - assertEquals(originalList, asList("one", "two", "three")); - } - - @Test - public void copyOnWriteList() throws Exception { - List originalList = new CopyOnWriteArrayList<>(asList("zero", "one", "two", "three")); - - for (String next : originalList) { - if (Objects.equals(next, "one")) originalList.remove(originalList.indexOf(next) - 1); - } - - assertEquals(originalList, asList("one", "two", "three")); - } -} diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedCollectionUnitTest.java b/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedCollectionUnitTest.java similarity index 94% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedCollectionUnitTest.java rename to core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedCollectionUnitTest.java index fd84503226..29b1ab9e70 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedCollectionUnitTest.java +++ b/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedCollectionUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.synchronizedcollections.test; +package com.baeldung.synchronizedcollections; import java.util.ArrayList; import java.util.Arrays; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedListUnitTest.java b/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedListUnitTest.java similarity index 97% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedListUnitTest.java rename to core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedListUnitTest.java index 72354622ae..0e3c9cd217 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedListUnitTest.java +++ b/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedListUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.synchronizedcollections.test; +package com.baeldung.synchronizedcollections; import java.util.ArrayList; import java.util.Arrays; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedMapUnitTest.java b/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedMapUnitTest.java similarity index 94% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedMapUnitTest.java rename to core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedMapUnitTest.java index 842e253e9e..9a4d80b403 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedMapUnitTest.java +++ b/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedMapUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.synchronizedcollections.test; +package com.baeldung.synchronizedcollections; import java.util.Collections; import java.util.HashMap; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedSetUnitTest.java b/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedSetUnitTest.java similarity index 93% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedSetUnitTest.java rename to core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedSetUnitTest.java index f88f58a55b..88fd343f56 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedSetUnitTest.java +++ b/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedSetUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.synchronizedcollections.test; +package com.baeldung.synchronizedcollections; import java.util.Arrays; import java.util.Collections; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedSortedMapUnitTest.java b/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedSortedMapUnitTest.java similarity index 94% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedSortedMapUnitTest.java rename to core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedSortedMapUnitTest.java index 23933b2b4b..7cbfa9bfa9 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedSortedMapUnitTest.java +++ b/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedSortedMapUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.synchronizedcollections.test; +package com.baeldung.synchronizedcollections; import java.util.Collections; import java.util.Map; diff --git a/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedSortedSetUnitTest.java b/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedSortedSetUnitTest.java similarity index 94% rename from core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedSortedSetUnitTest.java rename to core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedSortedSetUnitTest.java index 3ce1e6ed26..98820665c1 100644 --- a/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/test/SynchronizedSortedSetUnitTest.java +++ b/core-java-modules/core-java-collections/src/test/java/com/baeldung/synchronizedcollections/SynchronizedSortedSetUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.synchronizedcollections.test; +package com.baeldung.synchronizedcollections; import java.util.Arrays; import java.util.Collections; diff --git a/core-java-modules/core-java-collections/src/test/java/org/baeldung/java/collections/README.md b/core-java-modules/core-java-collections/src/test/java/org/baeldung/java/collections/README.md deleted file mode 100644 index 317d81fae7..0000000000 --- a/core-java-modules/core-java-collections/src/test/java/org/baeldung/java/collections/README.md +++ /dev/null @@ -1,3 +0,0 @@ -### Relevant Articles: -- [Join and Split Arrays and Collections in Java](http://www.baeldung.com/java-join-and-split) -- [Introduction to Java Servlets](http://www.baeldung.com/intro-to-servlets) diff --git a/core-java-modules/core-java-arrays/.gitignore b/core-java-modules/core-java-concurrency-2/.gitignore similarity index 97% rename from core-java-modules/core-java-arrays/.gitignore rename to core-java-modules/core-java-concurrency-2/.gitignore index 374c8bf907..3de4cc647e 100644 --- a/core-java-modules/core-java-arrays/.gitignore +++ b/core-java-modules/core-java-concurrency-2/.gitignore @@ -16,6 +16,7 @@ *.ear # Files generated by integration tests +*.txt backup-pom.xml /bin/ /temp diff --git a/core-java-modules/core-java-concurrency-2/README.md b/core-java-modules/core-java-concurrency-2/README.md new file mode 100644 index 0000000000..749d174968 --- /dev/null +++ b/core-java-modules/core-java-concurrency-2/README.md @@ -0,0 +1,7 @@ +========= + +## Core Java Concurrency 2 Examples + +### Relevant Articles: +- [Using a Mutex Object in Java](https://www.baeldung.com/java-mutex) + diff --git a/core-java-modules/core-java-concurrency-2/pom.xml b/core-java-modules/core-java-concurrency-2/pom.xml new file mode 100644 index 0000000000..6b179a29c7 --- /dev/null +++ b/core-java-modules/core-java-concurrency-2/pom.xml @@ -0,0 +1,27 @@ + + 4.0.0 + com.baeldung + core-java-concurrency-2 + 0.1.0-SNAPSHOT + core-java-concurrency-2 + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + core-java-concurrency-2 + + + src/main/resources + true + + + + + diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGenerator.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGenerator.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGenerator.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGenerator.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingMonitor.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingMonitor.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingMonitor.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingMonitor.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingReentrantLock.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingReentrantLock.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingReentrantLock.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingReentrantLock.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSemaphore.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSemaphore.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSemaphore.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSemaphore.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedBlock.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedBlock.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedBlock.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedBlock.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedMethod.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedMethod.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedMethod.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedMethod.java diff --git a/core-java-modules/core-java-concurrency-2/src/main/resources/logback.xml b/core-java-modules/core-java-concurrency-2/src/main/resources/logback.xml new file mode 100644 index 0000000000..56af2d397e --- /dev/null +++ b/core-java-modules/core-java-concurrency-2/src/main/resources/logback.xml @@ -0,0 +1,19 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/mutex/MutexUnitTest.java b/core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/mutex/MutexUnitTest.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/mutex/MutexUnitTest.java rename to core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/mutex/MutexUnitTest.java diff --git a/core-java-modules/core-java-concurrency-2/src/test/resources/.gitignore b/core-java-modules/core-java-concurrency-2/src/test/resources/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/core-java-modules/core-java-concurrency-2/src/test/resources/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/core-java-modules/core-java-concurrency-basic-2/README.md b/core-java-modules/core-java-concurrency-basic-2/README.md new file mode 100644 index 0000000000..e72725b7cb --- /dev/null +++ b/core-java-modules/core-java-concurrency-basic-2/README.md @@ -0,0 +1,10 @@ +========= + +## Core Java Concurrency Basic 2 Examples + +### Relevant Articles: +- [How to Delay Code Execution in Java](https://www.baeldung.com/java-delay-code-execution) +- [wait and notify() Methods in Java](https://www.baeldung.com/java-wait-notify) +- [Difference Between Wait and Sleep in Java](https://www.baeldung.com/java-wait-and-sleep) +- [Guide to the Synchronized Keyword in Java](https://www.baeldung.com/java-synchronized) +- [Life Cycle of a Thread in Java](https://www.baeldung.com/java-thread-lifecycle) diff --git a/core-java-modules/core-java-concurrency-basic-2/pom.xml b/core-java-modules/core-java-concurrency-basic-2/pom.xml new file mode 100644 index 0000000000..7e0a160456 --- /dev/null +++ b/core-java-modules/core-java-concurrency-basic-2/pom.xml @@ -0,0 +1,33 @@ + + 4.0.0 + com.baeldung + core-java-concurrency-basic-2 + 0.1.0-SNAPSHOT + core-java-concurrency-basic-2 + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + + + core-java-concurrency-basic-2 + + + src/main/resources + true + + + + + + + + diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/delay/Delay.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/delay/Delay.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/delay/Delay.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/delay/Delay.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/BlockedState.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/BlockedState.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/BlockedState.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/BlockedState.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/NewState.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/NewState.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/NewState.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/NewState.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/RunnableState.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/RunnableState.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/RunnableState.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/RunnableState.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/TerminatedState.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/TerminatedState.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/TerminatedState.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/TerminatedState.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/TimedWaitingState.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/TimedWaitingState.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/TimedWaitingState.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/TimedWaitingState.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/WaitingState.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/WaitingState.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/threadlifecycle/WaitingState.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/threadlifecycle/WaitingState.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/waitandnotify/Data.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/waitandnotify/Data.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/waitandnotify/Data.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/waitandnotify/Data.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/waitandnotify/NetworkDriver.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/waitandnotify/NetworkDriver.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/waitandnotify/NetworkDriver.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/waitandnotify/NetworkDriver.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/waitandnotify/Receiver.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/waitandnotify/Receiver.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/waitandnotify/Receiver.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/waitandnotify/Receiver.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/waitandnotify/Sender.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/waitandnotify/Sender.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/waitandnotify/Sender.java rename to core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/waitandnotify/Sender.java diff --git a/core-java-modules/core-java-concurrency-basic-2/src/main/resources/logback.xml b/core-java-modules/core-java-concurrency-basic-2/src/main/resources/logback.xml new file mode 100644 index 0000000000..56af2d397e --- /dev/null +++ b/core-java-modules/core-java-concurrency-basic-2/src/main/resources/logback.xml @@ -0,0 +1,19 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockUnitTest.java b/core-java-modules/core-java-concurrency-basic-2/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockUnitTest.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockUnitTest.java rename to core-java-modules/core-java-concurrency-basic-2/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockUnitTest.java diff --git a/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsUnitTest.java b/core-java-modules/core-java-concurrency-basic-2/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsUnitTest.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsUnitTest.java rename to core-java-modules/core-java-concurrency-basic-2/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsUnitTest.java diff --git a/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/waitandnotify/NetworkIntegrationTest.java b/core-java-modules/core-java-concurrency-basic-2/src/test/java/com/baeldung/concurrent/waitandnotify/NetworkIntegrationTest.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/waitandnotify/NetworkIntegrationTest.java rename to core-java-modules/core-java-concurrency-basic-2/src/test/java/com/baeldung/concurrent/waitandnotify/NetworkIntegrationTest.java index e2bc328df3..473fe6ff8e 100644 --- a/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/waitandnotify/NetworkIntegrationTest.java +++ b/core-java-modules/core-java-concurrency-basic-2/src/test/java/com/baeldung/concurrent/waitandnotify/NetworkIntegrationTest.java @@ -1,15 +1,15 @@ package com.baeldung.concurrent.waitandnotify; -import static org.junit.Assert.assertEquals; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.io.PrintWriter; import java.io.StringWriter; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; +import static org.junit.Assert.assertEquals; public class NetworkIntegrationTest { diff --git a/core-java-modules/core-java-concurrency-basic/README.md b/core-java-modules/core-java-concurrency-basic/README.md index c498bed315..2f9d014103 100644 --- a/core-java-modules/core-java-concurrency-basic/README.md +++ b/core-java-modules/core-java-concurrency-basic/README.md @@ -3,18 +3,13 @@ ## Core Java Concurrency Basic Examples ### Relevant Articles: -- [Guide To CompletableFuture](http://www.baeldung.com/java-completablefuture) -- [A Guide to the Java ExecutorService](http://www.baeldung.com/java-executor-service-tutorial) -- [Guide to java.util.concurrent.Future](http://www.baeldung.com/java-future) -- [Difference Between Wait and Sleep in Java](http://www.baeldung.com/java-wait-and-sleep) -- [Guide to the Synchronized Keyword in Java](http://www.baeldung.com/java-synchronized) -- [Overview of the java.util.concurrent](http://www.baeldung.com/java-util-concurrent) -- [Implementing a Runnable vs Extending a Thread](http://www.baeldung.com/java-runnable-vs-extending-thread) -- [How to Kill a Java Thread](http://www.baeldung.com/java-thread-stop) -- [ExecutorService – Waiting for Threads to Finish](http://www.baeldung.com/java-executor-wait-for-threads) -- [wait and notify() Methods in Java](http://www.baeldung.com/java-wait-notify) -- [Life Cycle of a Thread in Java](http://www.baeldung.com/java-thread-lifecycle) -- [Runnable vs. Callable in Java](http://www.baeldung.com/java-runnable-callable) +- [Guide To CompletableFuture](https://www.baeldung.com/java-completablefuture) +- [A Guide to the Java ExecutorService](https://www.baeldung.com/java-executor-service-tutorial) +- [Guide to java.util.concurrent.Future](https://www.baeldung.com/java-future) +- [Overview of the java.util.concurrent](https://www.baeldung.com/java-util-concurrent) +- [Implementing a Runnable vs Extending a Thread](https://www.baeldung.com/java-runnable-vs-extending-thread) +- [How to Kill a Java Thread](https://www.baeldung.com/java-thread-stop) +- [ExecutorService – Waiting for Threads to Finish](https://www.baeldung.com/java-executor-wait-for-threads) +- [Runnable vs. Callable in Java](https://www.baeldung.com/java-runnable-callable) - [What is Thread-Safety and How to Achieve it?](https://www.baeldung.com/java-thread-safety) - [How to Start a Thread in Java](https://www.baeldung.com/java-start-thread) -- [How to Delay Code Execution in Java](https://www.baeldung.com/java-delay-code-execution) diff --git a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/CounterTest.java b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/CounterUnitTest.java similarity index 91% rename from core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/CounterTest.java rename to core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/CounterUnitTest.java index 176151083c..6761b05282 100644 --- a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/CounterTest.java +++ b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/CounterUnitTest.java @@ -1,14 +1,16 @@ -package com.baeldung.concurrent.threadsafety.tests; +package com.baeldung.concurrent.threadsafety; -import org.junit.Test; -import static org.assertj.core.api.Assertions.assertThat; import com.baeldung.concurrent.threadsafety.callables.CounterCallable; import com.baeldung.concurrent.threadsafety.services.Counter; +import org.junit.Test; + import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; -public class CounterTest { +import static org.assertj.core.api.Assertions.assertThat; + +public class CounterUnitTest { @Test public void whenCalledIncrementCounter_thenCorrect() throws Exception { diff --git a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ExtrinsicLockCounterTest.java b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ExtrinsicLockCounterUnitTest.java similarity index 91% rename from core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ExtrinsicLockCounterTest.java rename to core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ExtrinsicLockCounterUnitTest.java index e34eb250bf..2dcb846bf4 100644 --- a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ExtrinsicLockCounterTest.java +++ b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ExtrinsicLockCounterUnitTest.java @@ -1,14 +1,16 @@ -package com.baeldung.concurrent.threadsafety.tests; +package com.baeldung.concurrent.threadsafety; -import org.junit.Test; -import static org.assertj.core.api.Assertions.assertThat; import com.baeldung.concurrent.threadsafety.callables.ExtrinsicLockCounterCallable; import com.baeldung.concurrent.threadsafety.services.ExtrinsicLockCounter; +import org.junit.Test; + import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; -public class ExtrinsicLockCounterTest { +import static org.assertj.core.api.Assertions.assertThat; + +public class ExtrinsicLockCounterUnitTest { @Test public void whenCalledIncrementCounter_thenCorrect() throws Exception { diff --git a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/MathUtilsTest.java b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/MathUtilsUnitTest.java similarity index 55% rename from core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/MathUtilsTest.java rename to core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/MathUtilsUnitTest.java index 2708152906..018d4164f0 100644 --- a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/MathUtilsTest.java +++ b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/MathUtilsUnitTest.java @@ -1,13 +1,16 @@ -package com.baeldung.concurrent.threadsafety.tests; +package com.baeldung.concurrent.threadsafety; import com.baeldung.concurrent.threadsafety.mathutils.MathUtils; import org.junit.Test; + +import java.math.BigInteger; + import static org.assertj.core.api.Assertions.assertThat; -public class MathUtilsTest { +public class MathUtilsUnitTest { @Test public void whenCalledFactorialMethod_thenCorrect() { - assertThat(MathUtils.factorial(2)).isEqualTo(2); + assertThat(MathUtils.factorial(2)).isEqualTo(new BigInteger("2")); } } diff --git a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/MessageServiceTest.java b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/MessageServiceUnitTest.java similarity index 91% rename from core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/MessageServiceTest.java rename to core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/MessageServiceUnitTest.java index e62206c09a..4df695a537 100644 --- a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/MessageServiceTest.java +++ b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/MessageServiceUnitTest.java @@ -1,14 +1,16 @@ -package com.baeldung.concurrent.threadsafety.tests; +package com.baeldung.concurrent.threadsafety; -import org.junit.Test; -import static org.assertj.core.api.Assertions.assertThat; import com.baeldung.concurrent.threadsafety.callables.MessageServiceCallable; import com.baeldung.concurrent.threadsafety.services.MessageService; +import org.junit.Test; + import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; -public class MessageServiceTest { +import static org.assertj.core.api.Assertions.assertThat; + +public class MessageServiceUnitTest { @Test public void whenCalledgetMessage_thenCorrect() throws Exception { diff --git a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ReentrantLockCounterTest.java b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ReentrantLockCounterUnitTest.java similarity index 91% rename from core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ReentrantLockCounterTest.java rename to core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ReentrantLockCounterUnitTest.java index 20fa2c74da..330d2d4c86 100644 --- a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ReentrantLockCounterTest.java +++ b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ReentrantLockCounterUnitTest.java @@ -1,14 +1,16 @@ -package com.baeldung.concurrent.threadsafety.tests; +package com.baeldung.concurrent.threadsafety; import com.baeldung.concurrent.threadsafety.callables.ReentrantLockCounterCallable; import com.baeldung.concurrent.threadsafety.services.ReentrantLockCounter; +import org.junit.Test; + import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; -import static org.assertj.core.api.Assertions.assertThat; -import org.junit.Test; -public class ReentrantLockCounterTest { +import static org.assertj.core.api.Assertions.assertThat; + +public class ReentrantLockCounterUnitTest { @Test public void whenCalledIncrementCounter_thenCorrect() throws Exception { diff --git a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ReentrantReadWriteLockCounterTest.java b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ReentrantReadWriteLockCounterUnitTest.java similarity index 90% rename from core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ReentrantReadWriteLockCounterTest.java rename to core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ReentrantReadWriteLockCounterUnitTest.java index 6113473cac..71fad2c87f 100644 --- a/core-java-modules/core-java-concurrency-basic/src/test/com/baeldung/concurrent/threadsafety/tests/ReentrantReadWriteLockCounterTest.java +++ b/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/threadsafety/ReentrantReadWriteLockCounterUnitTest.java @@ -1,14 +1,16 @@ -package com.baeldung.concurrent.threadsafety.tests; +package com.baeldung.concurrent.threadsafety; import com.baeldung.concurrent.threadsafety.callables.ReentranReadWriteLockCounterCallable; import com.baeldung.concurrent.threadsafety.services.ReentrantReadWriteLockCounter; +import org.junit.Test; + import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; -import static org.assertj.core.api.Assertions.assertThat; -import org.junit.Test; -public class ReentrantReadWriteLockCounterTest { +import static org.assertj.core.api.Assertions.assertThat; + +public class ReentrantReadWriteLockCounterUnitTest { @Test public void whenCalledIncrementCounter_thenCorrect() throws Exception { @@ -16,9 +18,9 @@ public class ReentrantReadWriteLockCounterTest { ReentrantReadWriteLockCounter counter = new ReentrantReadWriteLockCounter(); Future future1 = (Future) executorService.submit(new ReentranReadWriteLockCounterCallable(counter)); Future future2 = (Future) executorService.submit(new ReentranReadWriteLockCounterCallable(counter)); - - assertThat(future1.get()).isEqualTo(1); + assertThat(future2.get()).isEqualTo(2); + assertThat(future1.get()).isEqualTo(1); } } diff --git a/core-java-modules/core-java-datetime/README.md b/core-java-modules/core-java-datetime/README.md new file mode 100644 index 0000000000..71aea2e9db --- /dev/null +++ b/core-java-modules/core-java-datetime/README.md @@ -0,0 +1,7 @@ +========= + +## Core Java 8 Cookbooks and Examples + +### Relevant Articles: +- [Set the Time Zone of a Date in Java](https://www.baeldung.com/java-set-date-time-zone) +- [Overriding System Time for Testing in Java](https://www.baeldung.com/java-override-system-time) \ No newline at end of file diff --git a/core-java-modules/core-java-datetime/pom.xml b/core-java-modules/core-java-datetime/pom.xml new file mode 100644 index 0000000000..e2f86c7254 --- /dev/null +++ b/core-java-modules/core-java-datetime/pom.xml @@ -0,0 +1,101 @@ + + 4.0.0 + com.baeldung + core-java-datetime + 0.1.0-SNAPSHOT + core-java-datetime + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + org.projectlombok + lombok + ${lombok.version} + provided + + + + org.assertj + assertj-core + ${assertj.version} + test + + + joda-time + joda-time + ${joda.version} + + + org.aspectj + aspectjrt + ${asspectj.version} + + + org.powermock + powermock-module-junit4 + ${powermock.version} + test + + + org.powermock + powermock-api-mockito2 + ${powermock.version} + test + + + org.jmockit + jmockit + ${jmockit.version} + test + + + + + core-java-datetime + + + src/main/resources + true + + + + + + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + -javaagent:${settings.localRepository}/org/jmockit/jmockit/${jmockit.version}/jmockit-${jmockit.version}.jar + + true + + + + + + + + 3.6.1 + 2.10 + + 3.6.1 + 1.8.9 + 2.0.0-RC.4 + 1.44 + + 2.22.1 + + diff --git a/core-java-modules/core-java-datetime/src/main/resources/logback.xml b/core-java-modules/core-java-datetime/src/main/resources/logback.xml new file mode 100644 index 0000000000..7d900d8ea8 --- /dev/null +++ b/core-java-modules/core-java-datetime/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/time/InstantUnitTest.java b/core-java-modules/core-java-datetime/src/test/java/com/baeldung/time/InstantUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/time/InstantUnitTest.java rename to core-java-modules/core-java-datetime/src/test/java/com/baeldung/time/InstantUnitTest.java diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/time/InstantWithJMockUnitTest.java b/core-java-modules/core-java-datetime/src/test/java/com/baeldung/time/InstantWithJMockUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/time/InstantWithJMockUnitTest.java rename to core-java-modules/core-java-datetime/src/test/java/com/baeldung/time/InstantWithJMockUnitTest.java diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/time/LocalDateTimeUnitTest.java b/core-java-modules/core-java-datetime/src/test/java/com/baeldung/time/LocalDateTimeUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/time/LocalDateTimeUnitTest.java rename to core-java-modules/core-java-datetime/src/test/java/com/baeldung/time/LocalDateTimeUnitTest.java diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/time/LocalDateTimeWithJMockUnitTest.java b/core-java-modules/core-java-datetime/src/test/java/com/baeldung/time/LocalDateTimeWithJMockUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/time/LocalDateTimeWithJMockUnitTest.java rename to core-java-modules/core-java-datetime/src/test/java/com/baeldung/time/LocalDateTimeWithJMockUnitTest.java diff --git a/core-java-modules/core-java-exceptions/README.md b/core-java-modules/core-java-exceptions/README.md index 79e5bad23a..78599c6b7b 100644 --- a/core-java-modules/core-java-exceptions/README.md +++ b/core-java-modules/core-java-exceptions/README.md @@ -1,3 +1,8 @@ ## Relevant Articles: - [Will an Error Be Caught by Catch Block in Java?](https://www.baeldung.com/java-error-catch) +- [Java Global Exception Handler](http://www.baeldung.com/java-global-exception-handler) +- [Common Java Exceptions](http://www.baeldung.com/java-common-exceptions) +- [Throw Exception in Optional in Java 8](https://www.baeldung.com/java-optional-throw-exception) +- [How to Find an Exception’s Root Cause in Java](https://www.baeldung.com/java-exception-root-cause) +- [Java – Try with Resources](https://www.baeldung.com/java-try-with-resources) diff --git a/core-java-modules/core-java-exceptions/pom.xml b/core-java-modules/core-java-exceptions/pom.xml index 2e5200944a..43c4e31033 100644 --- a/core-java-modules/core-java-exceptions/pom.xml +++ b/core-java-modules/core-java-exceptions/pom.xml @@ -26,10 +26,30 @@ commons-lang3 ${commons-lang3.version} + + org.openjdk.jmh + jmh-core + ${jmh-core.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh-generator-annprocess.version} + + + + org.assertj + assertj-core + ${assertj-core.version} + test + 3.9 + 1.19 + 3.10.0 + 1.19 diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/exceptions/Arithmetic.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/Arithmetic.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/exceptions/Arithmetic.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/Arithmetic.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/exceptions/ArrayIndexOutOfBounds.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ArrayIndexOutOfBounds.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/exceptions/ArrayIndexOutOfBounds.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ArrayIndexOutOfBounds.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/exceptions/ClassCast.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ClassCast.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/exceptions/ClassCast.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ClassCast.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/exceptions/FileNotFound.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/FileNotFound.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/exceptions/FileNotFound.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/FileNotFound.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/exceptions/GlobalExceptionHandler.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/GlobalExceptionHandler.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/exceptions/GlobalExceptionHandler.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/GlobalExceptionHandler.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/exceptions/IllegalArgument.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IllegalArgument.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/exceptions/IllegalArgument.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IllegalArgument.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/exceptions/IllegalState.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IllegalState.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/exceptions/IllegalState.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IllegalState.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/exceptions/InterruptedExceptionExample.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/InterruptedExceptionExample.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/exceptions/InterruptedExceptionExample.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/InterruptedExceptionExample.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/exceptions/MalformedURL.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/MalformedURL.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/exceptions/MalformedURL.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/MalformedURL.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/exceptions/NullPointer.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NullPointer.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/exceptions/NullPointer.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NullPointer.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/exceptions/NumberFormat.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NumberFormat.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/exceptions/NumberFormat.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NumberFormat.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/exceptions/ParseExceptionExample.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ParseExceptionExample.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/exceptions/ParseExceptionExample.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ParseExceptionExample.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/exceptions/StackTraceToString.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/StackTraceToString.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/exceptions/StackTraceToString.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/StackTraceToString.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/exceptions/StringIndexOutOfBounds.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/StringIndexOutOfBounds.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/exceptions/StringIndexOutOfBounds.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/StringIndexOutOfBounds.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/optional/PersonRepository.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/optional/PersonRepository.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/optional/PersonRepository.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/optional/PersonRepository.java diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/exceptions/GlobalExceptionHandlerUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/GlobalExceptionHandlerUnitTest.java similarity index 100% rename from core-java-modules/core-java/src/test/java/com/baeldung/exceptions/GlobalExceptionHandlerUnitTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/GlobalExceptionHandlerUnitTest.java diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/optional/PersonRepositoryUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/optional/PersonRepositoryUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/optional/PersonRepositoryUnitTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/optional/PersonRepositoryUnitTest.java diff --git a/core-java-modules/core-java-function/README.md b/core-java-modules/core-java-function/README.md new file mode 100644 index 0000000000..677f148bdb --- /dev/null +++ b/core-java-modules/core-java-function/README.md @@ -0,0 +1,6 @@ +========= + +## Core Java 8 Cookbooks and Examples + +### Relevant Articles: +- [Java 8 Predicate Chain](https://www.baeldung.com/java-predicate-chain) \ No newline at end of file diff --git a/core-java-modules/core-java-function/pom.xml b/core-java-modules/core-java-function/pom.xml new file mode 100644 index 0000000000..5ed7ca68c2 --- /dev/null +++ b/core-java-modules/core-java-function/pom.xml @@ -0,0 +1,49 @@ + + 4.0.0 + com.baeldung + core-java-function + 0.1.0-SNAPSHOT + core-java-function + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + core-java-function + + + src/main/resources + true + + + + + + + 3.6.1 + 1.8.9 + + 2.22.1 + + diff --git a/core-java-modules/core-java-function/src/main/resources/logback.xml b/core-java-modules/core-java-function/src/main/resources/logback.xml new file mode 100644 index 0000000000..7d900d8ea8 --- /dev/null +++ b/core-java-modules/core-java-function/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/java8/Java8PredicateChainUnitTest.java b/core-java-modules/core-java-function/src/test/java/com/baeldung/java8/Java8PredicateChainUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/java8/Java8PredicateChainUnitTest.java rename to core-java-modules/core-java-function/src/test/java/com/baeldung/java8/Java8PredicateChainUnitTest.java diff --git a/core-java-modules/core-java-io-2/src/test/java/com/baeldung/createfiles/CreateFilesUnitTest.java b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/createfiles/CreateFilesUnitTest.java new file mode 100644 index 0000000000..338d53c597 --- /dev/null +++ b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/createfiles/CreateFilesUnitTest.java @@ -0,0 +1,48 @@ +package com.baeldung.createfiles; + +import com.google.common.io.Files; +import org.junit.Test; + +import java.io.File; +import java.io.IOException; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class CreateFilesUnitTest { + @Test + public void givenAnExistingDirectory_whenCreatingAFileWithAbsolutePath_thenFileIsCreated() throws IOException { + File tempDirectory = new File(System.getProperty("java.io.tmpdir")); + File fileWithAbsolutePath = new File(tempDirectory.getAbsolutePath() + "/myDirectory/testFile.txt"); + + assertFalse(fileWithAbsolutePath.exists()); + + Files.touch(fileWithAbsolutePath); + + assertTrue(fileWithAbsolutePath.exists()); + } + + @Test + public void givenAnExistingDirectory_whenCreatingANewDirectoryAndFileWithRelativePath_thenFileIsCreated() throws IOException { + File tempDirectory = new File(System.getProperty("java.io.tmpdir")); + File fileWithRelativePath = new File(tempDirectory, "myDirectory/newFile.txt"); + + assertFalse(fileWithRelativePath.exists()); + + Files.touch(fileWithRelativePath); + + assertTrue(fileWithRelativePath.exists()); + } + + @Test + public void whenCreatingAFileWithFileSeparator_thenFileIsCreated() throws IOException { + File tempDirectory = new File(System.getProperty("java.io.tmpdir")); + File newFile = new File(tempDirectory.getAbsolutePath() + File.separator + "newFile.txt"); + + assertFalse(newFile.exists()); + + Files.touch(newFile); + + assertTrue(newFile.exists()); + } +} diff --git a/core-java-modules/core-java-io-files/.gitignore b/core-java-modules/core-java-io-files/.gitignore new file mode 100644 index 0000000000..c61d35324d --- /dev/null +++ b/core-java-modules/core-java-io-files/.gitignore @@ -0,0 +1,5 @@ +0.* + +# Files generated by integration tests +# *.txt +/temp \ No newline at end of file diff --git a/core-java-modules/core-java-io-files/README.md b/core-java-modules/core-java-io-files/README.md new file mode 100644 index 0000000000..80c0dc941e --- /dev/null +++ b/core-java-modules/core-java-io-files/README.md @@ -0,0 +1,6 @@ +========= + +## Core Java IO Files Cookbooks and Examples + +### Relevant Articles: +- [How to Avoid the Java FileNotFoundException When Loading Resources](https://www.baeldung.com/java-classpath-resource-cannot-be-opened) \ No newline at end of file diff --git a/core-java-modules/core-java-io-files/pom.xml b/core-java-modules/core-java-io-files/pom.xml new file mode 100644 index 0000000000..0f4b5eea1d --- /dev/null +++ b/core-java-modules/core-java-io-files/pom.xml @@ -0,0 +1,296 @@ + + 4.0.0 + core-java-io-files + 0.1.0-SNAPSHOT + core-java-io-files + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + + net.sourceforge.collections + collections-generic + ${collections-generic.version} + + + org.apache.commons + commons-collections4 + ${commons-collections4.version} + + + commons-io + commons-io + ${commons-io.version} + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + org.apache.commons + commons-math3 + ${commons-math3.version} + + + org.decimal4j + decimal4j + ${decimal4j.version} + + + org.bouncycastle + bcprov-jdk15on + ${bouncycastle.version} + + + org.unix4j + unix4j-command + ${unix4j.version} + + + com.googlecode.grep4j + grep4j + ${grep4j.version} + + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + + log4j + log4j + ${log4j.version} + + + org.slf4j + log4j-over-slf4j + ${org.slf4j.version} + + + org.projectlombok + lombok + ${lombok.version} + provided + + + + org.assertj + assertj-core + ${assertj.version} + test + + + com.jayway.awaitility + awaitility + ${avaitility.version} + test + + + commons-codec + commons-codec + ${commons-codec.version} + + + org.javamoney + moneta + ${moneta.version} + + + org.owasp.esapi + esapi + ${esapi.version} + + + com.sun.messaging.mq + fscontext + ${fscontext.version} + + + com.codepoetics + protonpack + ${protonpack.version} + + + one.util + streamex + ${streamex.version} + + + io.vavr + vavr + ${vavr.version} + + + org.openjdk.jmh + jmh-core + ${jmh-core.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh-generator-annprocess.version} + + + org.hsqldb + hsqldb + ${hsqldb.version} + runtime + + + + org.asynchttpclient + async-http-client + ${async-http-client.version} + + + com.opencsv + opencsv + ${opencsv.version} + test + + + + org.apache.tika + tika-core + ${tika.version} + + + net.sf.jmimemagic + jmimemagic + ${jmime-magic.version} + + + + + core-java-io-files + + + src/main/resources + true + + + + + org.codehaus.mojo + exec-maven-plugin + ${exec-maven-plugin.version} + + java + com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed + + -Xmx300m + -XX:+UseParallelGC + -classpath + + com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed + + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc-plugin.version} + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + + org.apache.maven.plugins + maven-jar-plugin + ${maven-jar-plugin.version} + + + + true + com.baeldung.resource.MyResourceLoader + + + + + + + + + + integration + + + + org.codehaus.mojo + exec-maven-plugin + + + + run-benchmarks + + none + + exec + + + test + java + + -classpath + + org.openjdk.jmh.Main + .* + + + + + + + + + + + + + + 1.55 + 1.10 + 3.6.1 + 1.0.3 + 4.1 + 4.01 + 0.4 + 1.8.7 + 4.6-b01 + 1.13 + 0.6.5 + 0.9.0 + 4.1 + + 3.6.1 + 1.7.0 + + + 3.0.0-M1 + 2.4.0 + 2.1.0.1 + 1.19 + 2.4.5 + + 1.18 + 0.1.5 + 3.1.0 + + + + diff --git a/core-java-modules/core-java-io-files/src/main/java/com/baeldung/resource/MyResourceLoader.java b/core-java-modules/core-java-io-files/src/main/java/com/baeldung/resource/MyResourceLoader.java new file mode 100644 index 0000000000..7512b177df --- /dev/null +++ b/core-java-modules/core-java-io-files/src/main/java/com/baeldung/resource/MyResourceLoader.java @@ -0,0 +1,42 @@ +package com.baeldung.resource; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.stream.Collectors; + +public class MyResourceLoader { + + private void loadFileWithReader() throws IOException { + + try (FileReader fileReader = new FileReader("src/main/resources/input.txt"); + BufferedReader reader = new BufferedReader(fileReader)) { + String contents = reader.lines() + .collect(Collectors.joining(System.lineSeparator())); + System.out.println(contents); + } + + } + + private void loadFileAsResource() throws IOException { + + try (InputStream inputStream = getClass().getResourceAsStream("/input.txt"); + BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { + String contents = reader.lines() + .collect(Collectors.joining(System.lineSeparator())); + System.out.println(contents); + } + } + + public static void main(String[] args) throws IOException { + + MyResourceLoader resourceLoader = new MyResourceLoader(); + + resourceLoader.loadFileAsResource(); + resourceLoader.loadFileWithReader(); + + } + +} diff --git a/core-java-modules/core-java-io-files/src/main/resources/input.txt b/core-java-modules/core-java-io-files/src/main/resources/input.txt new file mode 100644 index 0000000000..650da894e8 --- /dev/null +++ b/core-java-modules/core-java-io-files/src/main/resources/input.txt @@ -0,0 +1,45 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. In lacus enim, scelerisque id sapien ut, semper euismod quam. Nunc ullamcorper semper blandit. Praesent quis quam mollis, iaculis lectus a, fringilla leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis vitae auctor mauris. Pellentesque eu pellentesque lorem, vel ultricies libero. Pellentesque vestibulum sagittis eros. In vestibulum lacus elit. Interdum et malesuada fames ac ante ipsum primis in faucibus. + +Vivamus pharetra lacus fringilla nisl molestie eleifend. Donec et dolor non quam mattis mattis. Proin malesuada maximus elit id semper. Donec facilisis dolor ut feugiat auctor. Proin accumsan semper consectetur. Vivamus facilisis odio vel bibendum imperdiet. Sed rutrum nisi nec nisi interdum fringilla. Aliquam laoreet velit ullamcorper egestas ultrices. Aliquam ultricies sem sed orci interdum, eu porta purus malesuada. Sed accumsan, nunc ut maximus rhoncus, arcu ante pretium ex, non ultrices magna nisi et velit. Pellentesque tempor mi quis lacus consectetur, quis imperdiet enim efficitur. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. + +Nunc sed maximus erat. Aenean imperdiet finibus massa ac aliquam. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis dignissim cursus purus, eu tempus urna. Nunc sed mauris scelerisque, luctus eros ut, viverra nisi. Maecenas congue sed ligula in eleifend. Praesent nec dignissim enim, dictum efficitur massa. Nullam eros dui, rutrum quis aliquam accumsan, sollicitudin cursus eros. Phasellus euismod, lorem vitae vehicula ullamcorper, leo lorem vestibulum magna, vitae malesuada libero ipsum id lorem. Aenean finibus turpis facilisis tortor bibendum, vitae dignissim dolor dictum. Ut quis ornare nisi, non rutrum sapien. + +Etiam placerat, est eget placerat imperdiet, neque urna tristique est, a dictum nisl dolor vitae leo. Vivamus porttitor mi vitae volutpat ultrices. Quisque at ante porta mauris ultricies iaculis. Phasellus iaculis sollicitudin urna nec facilisis. Suspendisse dapibus vulputate scelerisque. Fusce felis diam, eleifend in tristique in, malesuada a purus. Suspendisse euismod ipsum sed urna imperdiet, quis venenatis lacus dapibus. Maecenas vitae est vel sem fringilla ornare at ut mi. Quisque porta, nulla at rutrum fringilla, mi ligula egestas libero, ac convallis elit diam et sapien. Vestibulum purus tortor, ornare ut enim sed, mattis lobortis erat. Maecenas ac ante tincidunt, euismod mauris a, fermentum diam. Nullam arcu est, consequat sed enim in, bibendum aliquet velit. Donec bibendum magna ac augue sagittis vehicula. Curabitur nec mauris eu augue bibendum volutpat. Fusce fringilla varius fringilla. + +Aliquam faucibus massa non orci accumsan, porta consectetur diam vulputate. Nullam nec erat mollis, imperdiet libero nec, tincidunt neque. Aenean varius purus nec est auctor, sed vulputate libero varius. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent vel neque elit. Donec vulputate fermentum nulla, ut aliquam neque tempor in. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec vel venenatis est. Suspendisse luctus elit quis dui dapibus, id sodales dolor cursus. Curabitur ut vehicula dui. Fusce aliquet est et ante feugiat, et tempus ex congue. Nunc eget dapibus leo. Nunc eu accumsan diam. Suspendisse risus eros, rutrum et volutpat in, consequat in nulla. Suspendisse id felis a orci accumsan iaculis. + +Duis tincidunt diam eget tortor aliquet sodales. Etiam sodales purus ac urna mollis, et cursus enim porttitor. Nulla viverra ligula nunc, ornare condimentum felis posuere sed. Fusce aliquet pretium sagittis. Sed ac mi elementum massa dictum ornare. Integer quis dapibus lectus. Curabitur in rhoncus justo, et vulputate justo. Integer eget efficitur felis. + +Sed finibus vel tortor ac egestas. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas vestibulum nulla mi, blandit efficitur sapien fermentum eu. Integer sed turpis eros. Phasellus sed aliquam ligula. Etiam dictum quam in dapibus mattis. Donec et tristique quam. Pellentesque gravida luctus dolor, eu ornare sapien. Donec justo ante, lacinia non sem et, ultricies dignissim nibh. Vivamus eu nisl et magna pulvinar efficitur. Sed at vehicula lectus, sit amet luctus sem. Morbi vehicula sapien nisi, nec sagittis orci vestibulum et. + +Praesent non finibus diam. Quisque sit amet nisl vitae augue lobortis commodo. Morbi ullamcorper, tortor id ornare maximus, erat ipsum ullamcorper ipsum, in imperdiet diam sem vel erat. Sed pellentesque quis ex sed volutpat. Vestibulum volutpat diam ac dignissim sollicitudin. Praesent at luctus ex, at volutpat dui. Nunc nulla dui, lobortis et pharetra quis, efficitur in turpis. Donec sodales auctor purus id mollis. Sed auctor eu erat eget bibendum. Mauris tincidunt ornare neque id consequat. Suspendisse non massa ante. Quisque velit enim, rhoncus at erat eget, scelerisque placerat elit. Donec finibus luctus dolor. In sed eleifend lorem. Sed tempor ullamcorper lorem nec tristique. Fusce nec volutpat neque, id elementum est. + +Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum mattis elementum tellus, vitae maximus nulla eleifend ut. Vestibulum eu nibh vulputate, posuere felis eget, aliquet ex. Nullam leo ex, lacinia a ante ac, accumsan efficitur ligula. Vestibulum ornare gravida tempus. Proin rhoncus felis sit amet dolor commodo facilisis. Integer aliquet, diam sed pharetra feugiat, sem massa mollis orci, eget pretium libero nunc at quam. Ut rhoncus quam vitae massa hendrerit, ornare condimentum odio varius. Donec odio sapien, tristique eget libero ac, interdum facilisis odio. Phasellus nec mauris vel dolor semper mattis et quis ligula. Donec nec porttitor nunc. Integer maximus quam vitae sem gravida, ut commodo ex porttitor. + +Sed cursus nisi turpis, vel laoreet massa blandit ut. Cras posuere velit nulla, nec pellentesque ipsum dignissim eget. Donec pharetra, ex et commodo viverra, leo dolor dapibus tellus, vel dignissim est sem ac lectus. Quisque a arcu dapibus, aliquet magna sed, rhoncus neque. Integer suscipit, nulla ac varius lacinia, orci metus scelerisque neque, a laoreet nibh risus vitae dolor. Pellentesque felis metus, pulvinar vel cursus id, ultrices non purus. Donec mi lectus, faucibus sit amet nunc at, sagittis pretium lectus. Fusce nec purus arcu. Mauris neque neque, blandit eget mi at, auctor tempus orci. Mauris sapien lorem, luctus nec tellus non, porttitor aliquam dui. + +Mauris non ex risus. Aliquam imperdiet in eros eget placerat. Sed congue sed sapien porta sollicitudin. Phasellus tempor hendrerit metus vitae tincidunt. Suspendisse congue nisi sed augue dapibus, at pretium ante mollis. Cras non posuere nulla. Proin malesuada finibus magna vel iaculis. Cras in dapibus lorem. Pellentesque volutpat dolor sit amet magna tincidunt mollis. Nunc et lectus sodales, accumsan est vitae, ornare augue. Maecenas malesuada arcu leo, eget blandit lectus porttitor et. Nam aliquam sapien sit amet purus consequat lobortis. Aenean varius, augue porta dignissim efficitur, felis velit dapibus leo, tincidunt ultricies magna felis id ligula. Duis hendrerit, lectus eu elementum euismod, elit lectus consequat mi, sit amet egestas justo massa ut urna. Proin eleifend interdum ultrices. + +Donec lacinia orci pharetra ornare tincidunt. Nulla facilisi. Maecenas malesuada dui ac elit sagittis tincidunt id dictum dolor. Quisque lobortis purus ac metus volutpat viverra. Proin finibus sapien ut odio semper consectetur. Sed gravida luctus egestas. Mauris pretium volutpat elit, at commodo arcu sagittis nec. Ut condimentum fringilla urna ac dignissim. Cras aliquam metus pulvinar, pulvinar nibh at, placerat arcu. Nulla ornare tortor sed lectus mollis, vitae fringilla tellus egestas. Vivamus efficitur tincidunt sapien, sed finibus mi congue eu. Nullam magna velit, lacinia vitae ligula eget, molestie consectetur felis. Suspendisse varius turpis orci, ac laoreet arcu accumsan sed. Fusce quis fermentum lacus, nec varius libero. Pellentesque ac odio ut justo lobortis elementum sit amet vehicula lorem. Nulla interdum nulla eget mi tristique, vitae egestas nunc egestas. + +Curabitur commodo libero eu elit tincidunt, quis placerat risus vehicula. Vestibulum vehicula id nunc iaculis fermentum. Aenean semper, tellus ac semper rutrum, justo lorem feugiat leo, quis vulputate neque dui non ligula. Etiam egestas, enim eget tempor porta, nunc est tristique ante, vel suscipit massa lorem vel diam. Donec faucibus ante id turpis rhoncus congue. Nullam laoreet, diam efficitur scelerisque consequat, ligula leo ultrices est, non fermentum elit mauris ut dolor. Morbi non porttitor lorem. Sed volutpat sapien et lorem porttitor, ultricies ultricies tellus congue. Mauris sodales, tortor nec sagittis finibus, dui odio aliquet nibh, in luctus sapien massa eu risus. Nulla in est sed ante molestie vehicula vel nec lectus. Fusce maximus a quam eget aliquam. Vivamus pulvinar quis nisi a maximus. Proin cursus lacus sapien, et hendrerit elit pretium a. Donec tellus lectus, consectetur id dolor a, luctus rutrum libero. Suspendisse auctor scelerisque dui, nec pellentesque felis viverra nec. Cras elit ex, varius sed pulvinar sed, suscipit ultrices lacus. + +Vivamus eu luctus lectus. Maecenas congue magna orci, quis semper nulla blandit vel. Phasellus dignissim risus placerat lacinia sagittis. Praesent at gravida nisi, at pulvinar diam. Nulla egestas lectus sed felis facilisis egestas. Curabitur posuere gravida urna eu vestibulum. Pellentesque at dolor gravida, placerat quam sit amet, fermentum ligula. Morbi fringilla, mi eget mollis dictum, neque dolor ullamcorper leo, a rutrum libero ipsum eget orci. Curabitur consectetur iaculis vestibulum. Suspendisse ultricies ligula et neque lacinia luctus. Sed dignissim neque id eros sollicitudin pellentesque. + +Donec et magna quis lectus pharetra finibus a fringilla sapien. Phasellus accumsan, erat eu sodales cursus, tortor elit dapibus risus, ut ornare neque arcu in tellus. Nam ac vehicula diam, at aliquam nisl. Cras in sem eget nisi ultrices rutrum sit amet eu velit. Sed molestie tellus eget ante scelerisque, sit amet pulvinar neque fringilla. Nunc volutpat facilisis egestas. Cras sodales dui ac massa egestas, in mattis leo rhoncus. Pellentesque vitae urna vehicula ipsum sodales suscipit. Sed commodo tempus fringilla. + +Etiam egestas elit vitae mi maximus fringilla quis eget libero. Fusce finibus ultrices tellus at molestie. Pellentesque posuere blandit elementum. Etiam eu erat eu urna hendrerit euismod. Nulla quis lectus rhoncus, ultricies urna eget, pretium neque. Cras sit amet ipsum sit amet purus rutrum ultricies nec vitae tortor. Sed tempor dapibus augue in pulvinar. Ut pretium sapien in malesuada accumsan. Donec eget ultrices erat, ut efficitur ligula. Sed posuere mauris est, nec convallis ipsum tempus non. + +Duis a ullamcorper ante. Quisque eu ultricies metus, at aliquet odio. Nullam tempus molestie augue ut varius. Fusce purus eros, dictum nec finibus sed, sodales et diam. Suspendisse sed mi purus. Donec eleifend ipsum diam, nec fringilla enim laoreet non. Phasellus condimentum, magna sit amet porttitor suscipit, arcu risus lobortis dolor, ac fringilla nibh nisl vel purus. Phasellus facilisis posuere orci sit amet tempus. Nam nec enim maximus, rhoncus felis a, rutrum diam. + +Suspendisse potenti. Donec vel tempor neque. In aliquet nulla in eleifend bibendum. Sed sapien sem, finibus in sodales vitae, euismod in sem. Phasellus nec elit a erat pulvinar semper. Aliquam luctus nisl in libero molestie aliquam. Nunc ac ornare felis. Ut non mauris ut ipsum rhoncus pretium. Curabitur tristique lacus a sagittis aliquam. Morbi vel volutpat tellus. Maecenas volutpat, lacus sed tempus imperdiet, eros tellus volutpat nisi, a egestas augue nulla quis arcu. In sollicitudin imperdiet efficitur. Suspendisse viverra aliquet nisi, congue ultrices arcu hendrerit in. + +Maecenas vitae vestibulum nunc. Nullam semper faucibus tincidunt. Etiam sed hendrerit risus. Proin gravida, urna nec tincidunt tempus, nulla sapien porttitor nibh, porttitor lobortis nunc quam et tortor. Praesent ut varius lacus, ut hendrerit enim. Ut nec turpis ac felis imperdiet bibendum. Phasellus porttitor enim odio, et vehicula mi convallis vel. Quisque porta scelerisque sagittis. Praesent dignissim sagittis vulputate. Aenean non justo ac est volutpat bibendum. Aliquam mattis, sapien dapibus pellentesque semper, velit urna malesuada diam, nec varius nibh eros at erat. Proin leo ante, ultricies id velit ut, faucibus porta nibh. Sed nec fermentum urna, sed mollis leo. Aliquam erat volutpat. + +Donec condimentum, urna sed hendrerit vestibulum, ante nibh lacinia dui, in tincidunt odio sem eget orci. In hac habitasse platea dictumst. Mauris id ex id ante tempus finibus eu sagittis erat. Quisque interdum urna risus, vel varius nibh euismod non. Nulla eget pellentesque quam. Aliquam vestibulum ac tortor non lobortis. Sed vitae erat sed libero dignissim dictum nec in turpis. Vivamus id ornare elit, ut facilisis lectus. Morbi dictum purus eget ipsum dignissim porttitor. Sed at vehicula purus, nec rhoncus quam. Nunc a nisl quis arcu blandit fermentum vel quis odio. Vivamus rhoncus, sapien sed lacinia hendrerit, velit urna fermentum dolor, id feugiat magna ligula sed urna. Proin euismod efficitur libero, eget porttitor lacus tempus quis. Duis tincidunt quis est a laoreet. Nam sit amet tristique nisl, sit amet mattis mi. + +Aenean id dictum nulla, sed laoreet magna. Morbi consectetur in turpis at aliquam. Maecenas rutrum feugiat metus, at ullamcorper augue fermentum ut. Vivamus in magna pretium nibh dictum rhoncus luctus at orci. In hac habitasse platea dictumst. Fusce convallis, nulla nec hendrerit suscipit, ipsum diam lobortis sem, vitae elementum lectus erat sit amet magna. Quisque sollicitudin fringilla purus, ac molestie justo congue vitae. Nulla sapien leo, ullamcorper ac tellus in, cursus rhoncus enim. Suspendisse rutrum magna non ex elementum elementum id vitae enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse ornare libero eu molestie pulvinar. Phasellus faucibus, magna eget rutrum porta, lorem turpis blandit lectus, eu viverra massa risus et ex. + +Ut consectetur eros lacus, ac ullamcorper lacus mattis a. Cras congue justo ut erat interdum, et scelerisque nisi malesuada. Quisque sed sapien sollicitudin purus tincidunt finibus vestibulum vel dolor. Cras iaculis bibendum erat, a dictum urna viverra et. Integer non neque vulputate, tincidunt purus nec, rutrum arcu. Aliquam nec magna non sem semper laoreet quis at quam. Mauris dui lectus, convallis eu efficitur at, facilisis nec lorem. Cras felis sem, egestas ac rutrum vel, mollis et ex. Aenean semper egestas libero, nec commodo mi blandit efficitur. Duis nec quam in massa dignissim sagittis vel vitae leo. Nam molestie hendrerit auctor. + +Sed suscipit egestas tellus sed cursus. Donec vel massa sit amet dui condimentum accumsan. Phasellus libero eros, lobortis a nisi id, porttitor maximus lectus. Praesent consectetur diam urna, id viverra turpis elementum in. Vivamus vitae pretium justo, nec tempor felis. Vivamus volutpat ultricies magna. Suspendisse vulputate lectus ac orci volutpat ullamcorper. Nulla eu leo pretium, commodo arcu accumsan, tempor nisl. Fusce sit amet tellus a ipsum vehicula laoreet sed vitae mauris. Duis porttitor massa mattis nibh placerat consequat. Fusce rutrum commodo tortor eget pellentesque. Suspendisse tempor enim libero, consequat dictum nibh dictum varius. Pellentesque feugiat sit amet urna sed facilisis. Curabitur a sagittis augue. \ No newline at end of file diff --git a/core-java-modules/core-java-io-files/src/test/resources/.gitignore b/core-java-modules/core-java-io-files/src/test/resources/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/core-java-modules/core-java-io-files/src/test/resources/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/core-java-modules/core-java-io/src/test/java/com/baeldung/file/FileOperationsManualTest.java b/core-java-modules/core-java-io/src/test/java/com/baeldung/readfile/FileOperationsManualTest.java similarity index 99% rename from core-java-modules/core-java-io/src/test/java/com/baeldung/file/FileOperationsManualTest.java rename to core-java-modules/core-java-io/src/test/java/com/baeldung/readfile/FileOperationsManualTest.java index e781489808..b837c6b4dd 100644 --- a/core-java-modules/core-java-io/src/test/java/com/baeldung/file/FileOperationsManualTest.java +++ b/core-java-modules/core-java-io/src/test/java/com/baeldung/readfile/FileOperationsManualTest.java @@ -1,4 +1,4 @@ -package com.baeldung.file; +package com.baeldung.readfile; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; diff --git a/core-java-modules/core-java-lambdas/README.md b/core-java-modules/core-java-lambdas/README.md index 98fff64d68..832d4783f2 100644 --- a/core-java-modules/core-java-lambdas/README.md +++ b/core-java-modules/core-java-lambdas/README.md @@ -6,3 +6,4 @@ - [Lambda Expressions and Functional Interfaces: Tips and Best Practices](http://www.baeldung.com/java-8-lambda-expressions-tips) - [Exceptions in Java 8 Lambda Expressions](http://www.baeldung.com/java-lambda-exceptions) - [Method References in Java](https://www.baeldung.com/java-method-references) +- [The Double Colon Operator in Java 8](https://www.baeldung.com/java-8-double-colon-operator) \ No newline at end of file diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/doublecolon/Computer.java b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/doublecolon/Computer.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/doublecolon/Computer.java rename to core-java-modules/core-java-lambdas/src/main/java/com/baeldung/doublecolon/Computer.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/doublecolon/ComputerUtils.java b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/doublecolon/ComputerUtils.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/doublecolon/ComputerUtils.java rename to core-java-modules/core-java-lambdas/src/main/java/com/baeldung/doublecolon/ComputerUtils.java index 317808d893..ea274072ea 100644 --- a/core-java-modules/core-java-8/src/main/java/com/baeldung/doublecolon/ComputerUtils.java +++ b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/doublecolon/ComputerUtils.java @@ -1,10 +1,10 @@ package com.baeldung.doublecolon; -import com.baeldung.doublecolon.function.ComputerPredicate; - import java.util.ArrayList; import java.util.List; +import com.baeldung.doublecolon.function.ComputerPredicate; + public class ComputerUtils { static final ComputerPredicate after2010Predicate = (c) -> (c.getAge() > 2010); diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/doublecolon/MacbookPro.java b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/doublecolon/MacbookPro.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/doublecolon/MacbookPro.java rename to core-java-modules/core-java-lambdas/src/main/java/com/baeldung/doublecolon/MacbookPro.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java rename to core-java-modules/core-java-lambdas/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/doublecolon/function/TriFunction.java b/core-java-modules/core-java-lambdas/src/main/java/com/baeldung/doublecolon/function/TriFunction.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/doublecolon/function/TriFunction.java rename to core-java-modules/core-java-lambdas/src/main/java/com/baeldung/doublecolon/function/TriFunction.java diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/doublecolon/ComputerUtilsUnitTest.java b/core-java-modules/core-java-lambdas/src/test/java/com/baeldung/doublecolon/ComputerUtilsUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/doublecolon/ComputerUtilsUnitTest.java rename to core-java-modules/core-java-lambdas/src/test/java/com/baeldung/doublecolon/ComputerUtilsUnitTest.java diff --git a/core-java-modules/core-java-lang-2/README.md b/core-java-modules/core-java-lang-2/README.md index 88a48661a0..d925e81d87 100644 --- a/core-java-modules/core-java-lang-2/README.md +++ b/core-java-modules/core-java-lang-2/README.md @@ -3,3 +3,4 @@ ## Core Java Lang Cookbooks and Examples ### Relevant Articles: +- [Java Primitives versus Objects](https://www.baeldung.com/java-primitives-vs-objects) \ No newline at end of file diff --git a/core-java-modules/core-java-lang-2/pom.xml b/core-java-modules/core-java-lang-2/pom.xml index 4b02e06be4..fb4a5bd009 100644 --- a/core-java-modules/core-java-lang-2/pom.xml +++ b/core-java-modules/core-java-lang-2/pom.xml @@ -15,6 +15,21 @@ + + org.openjdk.jmh + jmh-core + ${jmh-core.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh-generator.version} + + + org.openjdk.jmh + jmh-generator-bytecode + ${jmh-generator.version} + @@ -28,6 +43,8 @@ + 1.19 + 1.19 diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/BenchmarkRunner.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/BenchmarkRunner.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/BenchmarkRunner.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/BenchmarkRunner.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/BooleanPrimitiveLookup.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/BooleanPrimitiveLookup.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/BooleanPrimitiveLookup.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/BooleanPrimitiveLookup.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/BooleanWrapperLookup.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/BooleanWrapperLookup.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/BooleanWrapperLookup.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/BooleanWrapperLookup.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/BytePrimitiveLookup.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/BytePrimitiveLookup.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/BytePrimitiveLookup.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/BytePrimitiveLookup.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/ByteWrapperLookup.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/ByteWrapperLookup.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/ByteWrapperLookup.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/ByteWrapperLookup.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/CharPrimitiveLookup.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/CharPrimitiveLookup.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/CharPrimitiveLookup.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/CharPrimitiveLookup.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/CharacterWrapperLookup.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/CharacterWrapperLookup.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/CharacterWrapperLookup.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/CharacterWrapperLookup.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/DoublePrimitiveLookup.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/DoublePrimitiveLookup.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/DoublePrimitiveLookup.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/DoublePrimitiveLookup.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/DoubleWrapperLookup.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/DoubleWrapperLookup.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/DoubleWrapperLookup.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/DoubleWrapperLookup.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/FloatPrimitiveLookup.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/FloatPrimitiveLookup.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/FloatPrimitiveLookup.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/FloatPrimitiveLookup.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/FloatWrapperLookup.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/FloatWrapperLookup.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/FloatWrapperLookup.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/FloatWrapperLookup.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/IntPrimitiveLookup.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/IntPrimitiveLookup.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/IntPrimitiveLookup.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/IntPrimitiveLookup.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/IntegerWrapperLookup.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/IntegerWrapperLookup.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/IntegerWrapperLookup.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/IntegerWrapperLookup.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/LongPrimitiveLookup.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/LongPrimitiveLookup.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/LongPrimitiveLookup.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/LongPrimitiveLookup.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/LongWrapperLookup.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/LongWrapperLookup.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/LongWrapperLookup.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/LongWrapperLookup.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/Lookup.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/Lookup.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/Lookup.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/Lookup.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/ShortPrimitiveLookup.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/ShortPrimitiveLookup.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/ShortPrimitiveLookup.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/ShortPrimitiveLookup.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/ShortWrapperLookup.java b/core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/ShortWrapperLookup.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/primitive/ShortWrapperLookup.java rename to core-java-modules/core-java-lang-2/src/main/java/com/baeldung/primitive/ShortWrapperLookup.java diff --git a/core-java-modules/core-java-lang-math/README.md b/core-java-modules/core-java-lang-math/README.md new file mode 100644 index 0000000000..cfa3052f43 --- /dev/null +++ b/core-java-modules/core-java-lang-math/README.md @@ -0,0 +1,7 @@ +========= + +## Core Java 8 Cookbooks and Examples + +### Relevant Articles: +- [Java 8 Math New Methods](https://www.baeldung.com/java-8-math) +- [Java 8 Unsigned Arithmetic Support](https://www.baeldung.com/java-unsigned-arithmetic) diff --git a/core-java-modules/core-java-lang-math/pom.xml b/core-java-modules/core-java-lang-math/pom.xml new file mode 100644 index 0000000000..f3e5132e5b --- /dev/null +++ b/core-java-modules/core-java-lang-math/pom.xml @@ -0,0 +1,49 @@ + + 4.0.0 + com.baeldung + core-java-lang-math + 0.1.0-SNAPSHOT + core-java-lang-math + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + core-java-lang-math + + + src/main/resources + true + + + + + + + 3.6.1 + 1.8.9 + + 2.22.1 + + diff --git a/core-java-modules/core-java-lang-math/src/main/resources/logback.xml b/core-java-modules/core-java-lang-math/src/main/resources/logback.xml new file mode 100644 index 0000000000..7d900d8ea8 --- /dev/null +++ b/core-java-modules/core-java-lang-math/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/java8/UnsignedArithmeticUnitTest.java b/core-java-modules/core-java-lang-math/src/test/java/com/baeldung/java8/UnsignedArithmeticUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/java8/UnsignedArithmeticUnitTest.java rename to core-java-modules/core-java-lang-math/src/test/java/com/baeldung/java8/UnsignedArithmeticUnitTest.java diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/math/MathNewMethodsUnitTest.java b/core-java-modules/core-java-lang-math/src/test/java/com/baeldung/math/MathNewMethodsUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/math/MathNewMethodsUnitTest.java rename to core-java-modules/core-java-lang-math/src/test/java/com/baeldung/math/MathNewMethodsUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-2/README.md b/core-java-modules/core-java-lang-oop-2/README.md index 72c3c6742b..096e4ee002 100644 --- a/core-java-modules/core-java-lang-oop-2/README.md +++ b/core-java-modules/core-java-lang-oop-2/README.md @@ -7,3 +7,10 @@ - [Cannot Reference “X” Before Supertype Constructor Has Been Called](https://www.baeldung.com/java-cannot-reference-x-before-supertype-constructor-error) - [Anonymous Classes in Java](https://www.baeldung.com/java-anonymous-classes) - [Raw Types in Java](https://www.baeldung.com/raw-types-java) +- [Java ‘private’ Access Modifier](https://www.baeldung.com/java-private-keyword) +- [Marker Interfaces in Java](https://www.baeldung.com/java-marker-interfaces) +- [Java equals() and hashCode() Contracts](https://www.baeldung.com/java-equals-hashcode-contracts) +- [Immutable Objects in Java](https://www.baeldung.com/java-immutable-object) +- [Inheritance and Composition (Is-a vs Has-a relationship) in Java](https://www.baeldung.com/java-inheritance-composition) +- [A Guide to Constructors in Java](https://www.baeldung.com/java-constructors) +- [Static and Default Methods in Interfaces in Java](https://www.baeldung.com/java-static-default-methods) \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-2/pom.xml b/core-java-modules/core-java-lang-oop-2/pom.xml index b7bd72372b..d27df147b7 100644 --- a/core-java-modules/core-java-lang-oop-2/pom.xml +++ b/core-java-modules/core-java-lang-oop-2/pom.xml @@ -15,16 +15,26 @@ - - com.h2database - h2 - ${h2.version} - test - + + + org.assertj + assertj-core + ${assertj-core.version} + test + + + nl.jqno.equalsverifier + equalsverifier + ${equalsverifier.version} + test + 1.4.199 + + 3.10.0 + 3.0.3 diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/constructors/BankAccount.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/constructors/BankAccount.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/constructors/BankAccount.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/constructors/BankAccount.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/constructors/Transaction.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/constructors/Transaction.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/constructors/Transaction.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/constructors/Transaction.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Money.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Money.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Money.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Money.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Team.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Team.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Team.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Team.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Voucher.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Voucher.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Voucher.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Voucher.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/WrongTeam.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/WrongTeam.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/WrongTeam.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/WrongTeam.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Shape.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Shape.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Shape.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Shape.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Square.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Square.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Square.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Square.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/immutableobjects/Currency.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/immutableobjects/Currency.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/immutableobjects/Currency.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/immutableobjects/Currency.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/immutableobjects/Money.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/immutableobjects/Money.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/immutableobjects/Money.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/immutableobjects/Money.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/application/Application.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/application/Application.java similarity index 67% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/application/Application.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/application/Application.java index 7761fdce56..fc6db9411c 100644 --- a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/application/Application.java +++ b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/application/Application.java @@ -1,12 +1,6 @@ package com.baeldung.inheritancecomposition.application; -import com.baeldung.inheritancecomposition.model.Actress; -import com.baeldung.inheritancecomposition.model.Computer; -import com.baeldung.inheritancecomposition.model.StandardMemory; -import com.baeldung.inheritancecomposition.model.Person; -import com.baeldung.inheritancecomposition.model.StandardProcessor; -import com.baeldung.inheritancecomposition.model.StandardSoundCard; -import com.baeldung.inheritancecomposition.model.Waitress; +import com.baeldung.inheritancecomposition.model.*; public class Application { diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Person.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Person.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Person.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Person.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/DeletableShape.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/DeletableShape.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/DeletableShape.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/DeletableShape.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/Rectangle.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/Rectangle.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/Rectangle.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/Rectangle.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/Shape.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/Shape.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/Shape.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/Shape.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/ShapeDao.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/ShapeDao.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/ShapeDao.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/ShapeDao.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java similarity index 96% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java index 66c8520e34..274fe77764 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java @@ -1,11 +1,9 @@ package com.baeldung.constructors; -import com.google.common.collect.Comparators; import org.junit.Test; import java.time.LocalDateTime; import java.time.Month; -import java.util.ArrayList; import java.util.logging.Logger; import static org.assertj.core.api.Assertions.*; diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/defaultistaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/defaultistaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/defaultistaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/defaultistaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java index 60584fdb53..8fc99e0e81 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java @@ -1,10 +1,10 @@ package com.baeldung.equalshashcode; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.assertFalse; - import org.junit.Test; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + public class MoneyUnitTest { @Test diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java similarity index 99% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java index a2de408796..7dfc6d47a3 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java @@ -1,14 +1,13 @@ package com.baeldung.equalshashcode; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; +import nl.jqno.equalsverifier.EqualsVerifier; +import org.junit.Test; import java.util.HashMap; import java.util.Map; -import org.junit.Test; - -import nl.jqno.equalsverifier.EqualsVerifier; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; public class TeamUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java similarity index 94% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java index 0cb4ace0ab..05b1e3e0b9 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java @@ -1,13 +1,11 @@ package com.baeldung.equalshashcode.entities; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; - import org.junit.Assert; import org.junit.Test; -import com.baeldung.equalshashcode.entities.ComplexClass; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; public class ComplexClassUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java similarity index 89% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java index a25e8bd486..7722ee7605 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java @@ -1,11 +1,9 @@ package com.baeldung.equalshashcode.entities; -import java.awt.Color; - import org.junit.Assert; import org.junit.Test; -import com.baeldung.equalshashcode.entities.Square; +import java.awt.*; public class SquareClassUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java index 01dfeac050..7b917023ee 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java @@ -1,11 +1,11 @@ package com.baeldung.immutableobjects; -import static org.junit.Assert.assertEquals; +import org.junit.Test; import java.util.ArrayList; import java.util.List; -import org.junit.Test; +import static org.junit.Assert.assertEquals; public class ImmutableObjectsUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/ActressUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java similarity index 95% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/ActressUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java index 6dbf2302ae..e174ceceae 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/ActressUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java @@ -1,8 +1,9 @@ -package com.baeldung.inheritancecomposition.test; +package com.baeldung.inheritancecomposition; import com.baeldung.inheritancecomposition.model.Actress; import org.junit.BeforeClass; import org.junit.Test; + import static org.assertj.core.api.Assertions.*; public class ActressUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/CompositionUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java similarity index 61% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/CompositionUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java index 987af047a5..7699ecb4a7 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/CompositionUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java @@ -1,15 +1,12 @@ -package com.baeldung.inheritancecomposition.test; +package com.baeldung.inheritancecomposition; -import com.baeldung.inheritancecomposition.model.Computer; -import com.baeldung.inheritancecomposition.model.Memory; -import com.baeldung.inheritancecomposition.model.Processor; -import com.baeldung.inheritancecomposition.model.StandardMemory; -import com.baeldung.inheritancecomposition.model.StandardProcessor; -import com.baeldung.inheritancecomposition.model.StandardSoundCard; -import java.util.Optional; -import static org.assertj.core.api.Assertions.assertThat; +import com.baeldung.inheritancecomposition.model.*; import org.junit.Test; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; + public class CompositionUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/InheritanceUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java similarity index 93% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/InheritanceUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java index 3ddbc19607..515e05528b 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/InheritanceUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java @@ -1,11 +1,12 @@ -package com.baeldung.inheritancecomposition.test; +package com.baeldung.inheritancecomposition; import com.baeldung.inheritancecomposition.model.Actress; import com.baeldung.inheritancecomposition.model.Person; import com.baeldung.inheritancecomposition.model.Waitress; -import static org.assertj.core.api.Assertions.assertThat; import org.junit.Test; +import static org.assertj.core.api.Assertions.assertThat; + public class InheritanceUnitTest { @Test diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/PersonUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java similarity index 94% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/PersonUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java index 313070b274..ea0b87f6e6 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/PersonUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java @@ -1,8 +1,9 @@ -package com.baeldung.inheritancecomposition.test; +package com.baeldung.inheritancecomposition; import com.baeldung.inheritancecomposition.model.Person; import org.junit.BeforeClass; import org.junit.Test; + import static org.assertj.core.api.Assertions.*; public class PersonUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/WaitressUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java similarity index 96% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/WaitressUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java index c23fc4d403..816868be13 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/WaitressUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java @@ -1,8 +1,9 @@ -package com.baeldung.inheritancecomposition.test; +package com.baeldung.inheritancecomposition; import com.baeldung.inheritancecomposition.model.Waitress; import org.junit.BeforeClass; import org.junit.Test; + import static org.assertj.core.api.Assertions.*; public class WaitressUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java index 81cd51ce51..64e5d8cdb1 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java @@ -1,9 +1,9 @@ package com.baeldung.markerinterface; -import static org.junit.jupiter.api.Assertions.assertEquals; - import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + public class MarkerInterfaceUnitTest { @Test diff --git a/core-java-modules/core-java-lang-oop-3/README.md b/core-java-modules/core-java-lang-oop-3/README.md new file mode 100644 index 0000000000..15876d124f --- /dev/null +++ b/core-java-modules/core-java-lang-oop-3/README.md @@ -0,0 +1,11 @@ +========= + +## Core Java Lang OOP 3 Cookbooks and Examples + +### Relevant Articles: +- [Pass-By-Value as a Parameter Passing Mechanism in Java](https://www.baeldung.com/java-pass-by-value-or-pass-by-reference) +- [Access Modifiers in Java](https://www.baeldung.com/java-access-modifiers) +- [Guide to the super Java Keyword](https://www.baeldung.com/java-super) +- [Guide to the this Java Keyword](https://www.baeldung.com/java-this) +- [Java Public Access Modifier](https://www.baeldung.com/java-public-keyword) +- [Composition, Aggregation and Association in Java](https://www.baeldung.com/java-composition-aggregation-association) \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-3/pom.xml b/core-java-modules/core-java-lang-oop-3/pom.xml new file mode 100644 index 0000000000..29807b5bef --- /dev/null +++ b/core-java-modules/core-java-lang-oop-3/pom.xml @@ -0,0 +1,26 @@ + + 4.0.0 + com.baeldung + core-java-lang-oop-3 + 0.1.0-SNAPSHOT + core-java-lang-oop-3 + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + com.h2database + h2 + ${h2.version} + test + + + + diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/Public.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/Public.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/Public.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/Public.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/SubClass.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/SubClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/SubClass.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/SubClass.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/basicmethods/PersonName.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/basicmethods/PersonName.java new file mode 100644 index 0000000000..43bbf0dd62 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/basicmethods/PersonName.java @@ -0,0 +1,37 @@ +package com.baeldung.basicmethods; + +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; + +public class PersonName { + + public String getName(String firstName, String lastName) throws RuntimeException { + return firstName + " " + lastName; + } + + public String getName(String firstName, String middleName, String lastName) { + if (!middleName.equals("")) { + return firstName + " " + lastName; + } + return firstName + " " + middleName + " " + lastName; + } + + public void printFullName(String firstName, String lastName) { + System.out.println(firstName + " " + lastName); + } + + public void writeName(String name) throws IOException { + PrintWriter out = new PrintWriter(new FileWriter("OutFile.txt")); + out.println("Name: " + name); + out.close(); + } + + public static String getNameStatic(String firstName, String lastName) { + return firstName + " " + lastName; + } + + public static void callToStaticMethod() { + System.out.println("Name is: " + PersonName.getNameStatic("Alan", "Turing")); + } +} diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/KeywordDemo.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/KeywordDemo.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/KeywordDemo.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/KeywordDemo.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/aggregation/Car.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/aggregation/Car.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/Car.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/aggregation/Wheel.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/Wheel.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/aggregation/Wheel.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/Wheel.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/association/Child.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/association/Child.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/association/Child.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/association/Child.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/association/Mother.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/association/Mother.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/association/Mother.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/association/Mother.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/composition/Building.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/composition/Building.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/composition/Building.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/composition/Building.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/Department.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/Department.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/Department.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/Department.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/Professor.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/Professor.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/Professor.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/Professor.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/University.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/University.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/University.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/University.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java b/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java similarity index 99% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java rename to core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java index a2d891ac93..ed8fb4f45a 100644 --- a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java +++ b/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java @@ -1,14 +1,11 @@ package com.baeldung.accessmodifiers; +import com.baeldung.accessmodifiers.publicmodifier.ListOfThree; +import com.baeldung.accessmodifiers.publicmodifier.Student; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance.Lifecycle; -import com.baeldung.accessmodifiers.publicmodifier.ListOfThree; -import com.baeldung.accessmodifiers.publicmodifier.Student; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.jupiter.api.Assertions.assertEquals; import java.math.BigDecimal; import java.sql.Connection; import java.sql.DriverManager; @@ -17,6 +14,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; + @TestInstance(Lifecycle.PER_CLASS) public class PublicAccessModifierUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java b/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java similarity index 99% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java rename to core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java index 62f891d11b..bf0d12936d 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java +++ b/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java @@ -27,7 +27,7 @@ public class NonPrimitivesUnitTest { b1.num++; } } - + class Foo { public int num; diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java b/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java rename to core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java diff --git a/core-java-modules/core-java-lang-oop/README.md b/core-java-modules/core-java-lang-oop/README.md index c9ee9a9e94..2e7fa4d689 100644 --- a/core-java-modules/core-java-lang-oop/README.md +++ b/core-java-modules/core-java-lang-oop/README.md @@ -3,22 +3,13 @@ ## Core Java Lang OOP Cookbooks and Examples ### Relevant Articles: -- [Guide to hashCode() in Java](http://www.baeldung.com/java-hashcode) -- [A Guide to the Static Keyword in Java](http://www.baeldung.com/java-static) -- [Polymorphism in Java](http://www.baeldung.com/java-polymorphism) -- [Method Overloading and Overriding in Java](http://www.baeldung.com/java-method-overload-override) -- [How to Make a Deep Copy of an Object in Java](http://www.baeldung.com/java-deep-copy) -- [Guide to Inheritance in Java](http://www.baeldung.com/java-inheritance) -- [Object Type Casting in Java](http://www.baeldung.com/java-type-casting) -- [The “final” Keyword in Java](http://www.baeldung.com/java-final) -- [Type Erasure in Java Explained](http://www.baeldung.com/java-type-erasure) -- [Pass-By-Value as a Parameter Passing Mechanism in Java](http://www.baeldung.com/java-pass-by-value-or-pass-by-reference) -- [Variable and Method Hiding in Java](http://www.baeldung.com/java-variable-method-hiding) -- [Access Modifiers in Java](http://www.baeldung.com/java-access-modifiers) -- [Guide to the super Java Keyword](http://www.baeldung.com/java-super) -- [Guide to the this Java Keyword](http://www.baeldung.com/java-this) -- [Immutable Objects in Java](http://www.baeldung.com/java-immutable-object) -- [Inheritance and Composition (Is-a vs Has-a relationship) in Java](http://www.baeldung.com/java-inheritance-composition) -- [A Guide to Constructors in Java](https://www.baeldung.com/java-constructors) -- [Java equals() and hashCode() Contracts](https://www.baeldung.com/java-equals-hashcode-contracts) -- [Marker Interfaces in Java](https://www.baeldung.com/java-marker-interfaces) +- [Guide to hashCode() in Java](https://www.baeldung.com/java-hashcode) +- [A Guide to the Static Keyword in Java](https://www.baeldung.com/java-static) +- [Polymorphism in Java](https://www.baeldung.com/java-polymorphism) +- [Method Overloading and Overriding in Java](https://www.baeldung.com/java-method-overload-override) +- [How to Make a Deep Copy of an Object in Java](https://www.baeldung.com/java-deep-copy) +- [Guide to Inheritance in Java](https://www.baeldung.com/java-inheritance) +- [Object Type Casting in Java](https://www.baeldung.com/java-type-casting) +- [The “final” Keyword in Java](https://www.baeldung.com/java-final) +- [Type Erasure in Java Explained](https://www.baeldung.com/java-type-erasure) +- [Variable and Method Hiding in Java](https://www.baeldung.com/java-variable-method-hiding) diff --git a/core-java-modules/core-java-lang-oop/pom.xml b/core-java-modules/core-java-lang-oop/pom.xml index 46003b132b..d86347b51f 100644 --- a/core-java-modules/core-java-lang-oop/pom.xml +++ b/core-java-modules/core-java-lang-oop/pom.xml @@ -56,12 +56,6 @@ ${assertj-core.version} test - - nl.jqno.equalsverifier - equalsverifier - ${equalsverifier.version} - test - @@ -78,7 +72,6 @@ 2.8.2 3.10.0 - 3.0.3 diff --git a/core-java-modules/core-java-lang-syntax-2/README.md b/core-java-modules/core-java-lang-syntax-2/README.md new file mode 100644 index 0000000000..4cef971f75 --- /dev/null +++ b/core-java-modules/core-java-lang-syntax-2/README.md @@ -0,0 +1,6 @@ +========= + +## Core Java Lang Syntax Cookbooks and Examples + +### Relevant Articles: +- [Java ‘private’ Access Modifier](https://www.baeldung.com/java-private-keyword) diff --git a/core-java-modules/core-java-lang-syntax-2/pom.xml b/core-java-modules/core-java-lang-syntax-2/pom.xml new file mode 100644 index 0000000000..1a8316628f --- /dev/null +++ b/core-java-modules/core-java-lang-syntax-2/pom.xml @@ -0,0 +1,26 @@ + + 4.0.0 + com.baeldung + core-java-lang-syntax-2 + 0.1.0-SNAPSHOT + core-java-lang-syntax-2 + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + core-java-lang-syntax-2 + + + src/main/resources + true + + + + diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/core/modifiers/Employee.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/Employee.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/core/modifiers/Employee.java rename to core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/Employee.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/core/modifiers/ExampleClass.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/ExampleClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/core/modifiers/ExampleClass.java rename to core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/ExampleClass.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/core/modifiers/PublicOuterClass.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/PublicOuterClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/core/modifiers/PublicOuterClass.java rename to core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/PublicOuterClass.java diff --git a/core-java-modules/core-java-networking-2/README.md b/core-java-modules/core-java-networking-2/README.md index 6b6151248e..62dec41356 100644 --- a/core-java-modules/core-java-networking-2/README.md +++ b/core-java-modules/core-java-networking-2/README.md @@ -1,3 +1,7 @@ ### Relevant Articles - [Checking if a URL Exists in Java](https://www.baeldung.com/java-check-url-exists) +- [Making a JSON POST Request With HttpURLConnection](https://www.baeldung.com/httpurlconnection-post) +- [Using Curl in Java](https://www.baeldung.com/java-curl) +- [Do a Simple HTTP Request in Java](http://www.baeldung.com/java-http-request) +- [Sending Emails with Java](http://www.baeldung.com/java-email) diff --git a/core-java-modules/core-java-networking-2/pom.xml b/core-java-modules/core-java-networking-2/pom.xml index 8a26f6ab9f..2d404a553b 100644 --- a/core-java-modules/core-java-networking-2/pom.xml +++ b/core-java-modules/core-java-networking-2/pom.xml @@ -1,5 +1,5 @@ + 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-networking-2 core-java-networking-2 @@ -12,9 +12,29 @@ + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + javax.mail + mail + ${javax.mail.version} + core-java-networking-2 - + + + + 4.5.9 + 1.5.0-b01 + diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/curltojava/JavaCurlExamples.java b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/curltojava/JavaCurlExamples.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/curltojava/JavaCurlExamples.java rename to core-java-modules/core-java-networking-2/src/main/java/com/baeldung/curltojava/JavaCurlExamples.java diff --git a/core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/FullResponseBuilder.java b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/httprequest/FullResponseBuilder.java similarity index 100% rename from core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/FullResponseBuilder.java rename to core-java-modules/core-java-networking-2/src/main/java/com/baeldung/httprequest/FullResponseBuilder.java diff --git a/core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/ParameterStringBuilder.java b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/httprequest/ParameterStringBuilder.java similarity index 100% rename from core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/ParameterStringBuilder.java rename to core-java-modules/core-java-networking-2/src/main/java/com/baeldung/httprequest/ParameterStringBuilder.java diff --git a/core-java-modules/core-java-networking/src/main/java/com/baeldung/mail/EmailService.java b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/mail/EmailService.java similarity index 97% rename from core-java-modules/core-java-networking/src/main/java/com/baeldung/mail/EmailService.java rename to core-java-modules/core-java-networking-2/src/main/java/com/baeldung/mail/EmailService.java index e775b9f708..bd2024fdfa 100644 --- a/core-java-modules/core-java-networking/src/main/java/com/baeldung/mail/EmailService.java +++ b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/mail/EmailService.java @@ -1,15 +1,12 @@ package com.baeldung.mail; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.util.Properties; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; +import java.io.File; +import java.util.Properties; public class EmailService { diff --git a/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/url/auth/HttpClient.java b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/url/auth/HttpClient.java new file mode 100644 index 0000000000..779f8aa898 --- /dev/null +++ b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/url/auth/HttpClient.java @@ -0,0 +1,74 @@ +package com.baeldung.url.auth; + +import java.io.IOException; +import java.net.Authenticator; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.PasswordAuthentication; +import java.net.ProtocolException; +import java.net.URL; +import java.nio.charset.StandardCharsets; + +import org.apache.commons.codec.binary.Base64; + +public class HttpClient { + + private final String user; + private final String password; + + public HttpClient(String user, String password) { + this.user = user; + this.password = password; + } + + public int sendRquestWithAuthHeader(String url) throws IOException { + HttpURLConnection connection = null; + try { + connection = createConnection(url); + connection.setRequestProperty("Authorization", createBasicAuthHeaderValue()); + return connection.getResponseCode(); + } finally { + if (connection != null) { + connection.disconnect(); + } + } + } + + public int sendRquestWithAuthenticator(String url) throws IOException { + setAuthenticator(); + + HttpURLConnection connection = null; + try { + connection = createConnection(url); + return connection.getResponseCode(); + } finally { + if (connection != null) { + connection.disconnect(); + } + } + } + + private HttpURLConnection createConnection(String urlString) throws MalformedURLException, IOException, ProtocolException { + URL url = new URL(String.format(urlString)); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("GET"); + return connection; + } + + private String createBasicAuthHeaderValue() { + String auth = user + ":" + password; + byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(StandardCharsets.UTF_8)); + String authHeaderValue = "Basic " + new String(encodedAuth); + return authHeaderValue; + } + + private void setAuthenticator() { + Authenticator.setDefault(new BasicAuthenticator()); + } + + private final class BasicAuthenticator extends Authenticator { + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(user, password.toCharArray()); + } + } +} diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/urlconnection/PostJSONWithHttpURLConnection.java b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/urlconnection/PostJSONWithHttpURLConnection.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/urlconnection/PostJSONWithHttpURLConnection.java rename to core-java-modules/core-java-networking-2/src/main/java/com/baeldung/urlconnection/PostJSONWithHttpURLConnection.java diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/curltojava/JavaCurlExamplesLiveTest.java b/core-java-modules/core-java-networking-2/src/test/java/com/baeldung/curltojava/JavaCurlExamplesLiveTest.java similarity index 100% rename from core-java-modules/core-java/src/test/java/com/baeldung/curltojava/JavaCurlExamplesLiveTest.java rename to core-java-modules/core-java-networking-2/src/test/java/com/baeldung/curltojava/JavaCurlExamplesLiveTest.java diff --git a/core-java-modules/core-java-networking/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java b/core-java-modules/core-java-networking-2/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java similarity index 96% rename from core-java-modules/core-java-networking/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java rename to core-java-modules/core-java-networking-2/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java index 77bf9bc8db..41e0f2d6af 100644 --- a/core-java-modules/core-java-networking/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java +++ b/core-java-modules/core-java-networking-2/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java @@ -3,14 +3,7 @@ package com.baeldung.httprequest; import org.apache.commons.lang3.StringUtils; import org.junit.Test; -import com.baeldung.httprequest.FullResponseBuilder; -import com.baeldung.httprequest.ParameterStringBuilder; - -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; +import java.io.*; import java.net.CookieManager; import java.net.HttpCookie; import java.net.HttpURLConnection; diff --git a/core-java-modules/core-java-networking-2/src/test/java/com/baeldung/url/auth/HttpClientUnitTest.java b/core-java-modules/core-java-networking-2/src/test/java/com/baeldung/url/auth/HttpClientUnitTest.java new file mode 100644 index 0000000000..0ccb6e5a54 --- /dev/null +++ b/core-java-modules/core-java-networking-2/src/test/java/com/baeldung/url/auth/HttpClientUnitTest.java @@ -0,0 +1,52 @@ +package com.baeldung.url.auth; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +public class HttpClientUnitTest { + + @Test + public void sendRquestWithAuthHeader() throws Exception { + HttpClient httpClient = new HttpClient("user1", "pass1"); + + int status = httpClient.sendRquestWithAuthHeader("https://httpbin.org/basic-auth/user1/pass1"); + + assertTrue(isSuccess(status)); + } + + @Test + public void sendRquestWithAuthHeader_whenIncorrectCredentials_thenNotSuccessful() throws Exception { + HttpClient httpClient = new HttpClient("John", "Smith"); + + int status = httpClient.sendRquestWithAuthHeader("https://httpbin.org/basic-auth/user1/pass1"); + + assertTrue(isUnauthorized(status)); + } + + @Test + public void sendRquestWithAuthenticator() throws Exception { + HttpClient httpClient = new HttpClient("user2", "pass2"); + + int status = httpClient.sendRquestWithAuthenticator("https://httpbin.org/basic-auth/user2/pass2"); + + assertTrue(isSuccess(status)); + } + + @Test + public void sendRquestWithAuthenticator_whenIncorrectCredentials_thenNotSuccessful() throws Exception { + HttpClient httpClient = new HttpClient("John", "Smith"); + + int status = httpClient.sendRquestWithAuthenticator("https://httpbin.org/basic-auth/user2/pass2"); + + assertTrue(isUnauthorized(status)); + } + + private boolean isSuccess(int status) { + return (status >= 200) && (status < 300); + } + + private boolean isUnauthorized(int status) { + return status == 401; + } +} diff --git a/core-java-modules/core-java-networking/README.md b/core-java-modules/core-java-networking/README.md index 2341520df7..33fc3684a3 100644 --- a/core-java-modules/core-java-networking/README.md +++ b/core-java-modules/core-java-networking/README.md @@ -7,12 +7,10 @@ - [Connecting Through Proxy Servers in Core Java](https://www.baeldung.com/java-connect-via-proxy-server) - [Broadcasting and Multicasting in Java](http://www.baeldung.com/java-broadcast-multicast) - [A Guide To UDP In Java](http://www.baeldung.com/udp-in-java) -- [Sending Emails with Java](http://www.baeldung.com/java-email) - [A Guide To HTTP Cookies In Java](http://www.baeldung.com/cookies-java) - [A Guide to the Java URL](http://www.baeldung.com/java-url) - [Working with Network Interfaces in Java](http://www.baeldung.com/java-network-interfaces) - [A Guide to Java Sockets](http://www.baeldung.com/a-guide-to-java-sockets) - [Guide to Java URL Encoding/Decoding](http://www.baeldung.com/java-url-encoding-decoding) -- [Do a Simple HTTP Request in Java](http://www.baeldung.com/java-http-request) - [Difference between URL and URI](http://www.baeldung.com/java-url-vs-uri) - [Read an InputStream using the Java Server Socket](https://www.baeldung.com/java-inputstream-server-socket) diff --git a/core-java-modules/core-java-networking/pom.xml b/core-java-modules/core-java-networking/pom.xml index e2ee7b2fcc..b5071bf7df 100644 --- a/core-java-modules/core-java-networking/pom.xml +++ b/core-java-modules/core-java-networking/pom.xml @@ -14,11 +14,6 @@ - - javax.mail - mail - ${javax.mail.version} - commons-io commons-io @@ -29,11 +24,6 @@ spring-web ${springframework.spring-web.version} - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - @@ -41,7 +31,6 @@ - 1.5.0-b01 4.3.4.RELEASE diff --git a/core-java-modules/core-java-optional/README.md b/core-java-modules/core-java-optional/README.md index b6848b5d33..22ac8736fa 100644 --- a/core-java-modules/core-java-optional/README.md +++ b/core-java-modules/core-java-optional/README.md @@ -4,3 +4,5 @@ ### Relevant Articles: - [Java Optional as Return Type](https://www.baeldung.com/java-optional-return) +- [Guide To Java 8 Optional](https://www.baeldung.com/java-optional) +- [Java Optional – orElse() vs orElseGet()](https://www.baeldung.com/java-optional-or-else-vs-or-else-get) \ No newline at end of file diff --git a/core-java-modules/core-java-optional/pom.xml b/core-java-modules/core-java-optional/pom.xml index ca6158ef5a..d5ccd43e55 100644 --- a/core-java-modules/core-java-optional/pom.xml +++ b/core-java-modules/core-java-optional/pom.xml @@ -27,6 +27,21 @@ jackson-databind ${jackson.version} + + org.openjdk.jmh + jmh-core + ${jmh-core.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh-generator.version} + + + org.openjdk.jmh + jmh-generator-bytecode + ${jmh-generator.version} + @@ -49,5 +64,7 @@ 1.8 1.8 5.4.0.Final + 1.19 + 1.19 \ No newline at end of file diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/optional/Modem.java b/core-java-modules/core-java-optional/src/main/java/com/baeldung/optional/Modem.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/optional/Modem.java rename to core-java-modules/core-java-optional/src/main/java/com/baeldung/optional/Modem.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/optional/OrElseAndOrElseGet.java b/core-java-modules/core-java-optional/src/main/java/com/baeldung/optional/OrElseAndOrElseGet.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/optional/OrElseAndOrElseGet.java rename to core-java-modules/core-java-optional/src/main/java/com/baeldung/optional/OrElseAndOrElseGet.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/optional/OrElseAndOrElseGetBenchmarkRunner.java b/core-java-modules/core-java-optional/src/main/java/com/baeldung/optional/OrElseAndOrElseGetBenchmarkRunner.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/optional/OrElseAndOrElseGetBenchmarkRunner.java rename to core-java-modules/core-java-optional/src/main/java/com/baeldung/optional/OrElseAndOrElseGetBenchmarkRunner.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/optional/Person.java b/core-java-modules/core-java-optional/src/main/java/com/baeldung/optional/Person.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/optional/Person.java rename to core-java-modules/core-java-optional/src/main/java/com/baeldung/optional/Person.java diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/java8/optional/OptionalChainingUnitTest.java b/core-java-modules/core-java-optional/src/test/java/com/baeldung/java8/optional/OptionalChainingUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/java8/optional/OptionalChainingUnitTest.java rename to core-java-modules/core-java-optional/src/test/java/com/baeldung/java8/optional/OptionalChainingUnitTest.java diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/java8/optional/OptionalUnitTest.java b/core-java-modules/core-java-optional/src/test/java/com/baeldung/java8/optional/OptionalUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/java8/optional/OptionalUnitTest.java rename to core-java-modules/core-java-optional/src/test/java/com/baeldung/java8/optional/OptionalUnitTest.java diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/java8/optional/OrElseAndOrElseGetUnitTest.java b/core-java-modules/core-java-optional/src/test/java/com/baeldung/java8/optional/OrElseAndOrElseGetUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/java8/optional/OrElseAndOrElseGetUnitTest.java rename to core-java-modules/core-java-optional/src/test/java/com/baeldung/java8/optional/OrElseAndOrElseGetUnitTest.java diff --git a/core-java-modules/core-java-reflection/README.MD b/core-java-modules/core-java-reflection/README.MD index e46a97cd3d..840d488968 100644 --- a/core-java-modules/core-java-reflection/README.MD +++ b/core-java-modules/core-java-reflection/README.MD @@ -1,8 +1,9 @@ ## Relevant Articles - [Void Type in Java](https://www.baeldung.com/java-void-type) +- [Retrieve Fields from a Java Class Using Reflection](https://www.baeldung.com/java-reflection-class-fields) - [Method Parameter Reflection in Java](http://www.baeldung.com/java-parameter-reflection) - [Guide to Java Reflection](http://www.baeldung.com/java-reflection) - [Call Methods at Runtime Using Java Reflection](http://www.baeldung.com/java-method-reflection) - [Changing Annotation Parameters At Runtime](http://www.baeldung.com/java-reflection-change-annotation-params) -- [Dynamic Proxies in Java](http://www.baeldung.com/java-dynamic-proxies) +- [Dynamic Proxies in Java](http://www.baeldung.com/java-dynamic-proxies) \ No newline at end of file diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/reflection/BaeldungReflectionUtils.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/BaeldungReflectionUtils.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/reflection/BaeldungReflectionUtils.java rename to core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/BaeldungReflectionUtils.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/reflection/Customer.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/Customer.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/reflection/Customer.java rename to core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/Customer.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/reflection/Employee.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/Employee.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/reflection/Employee.java rename to core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/Employee.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/reflection/MonthEmployee.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/MonthEmployee.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/reflection/MonthEmployee.java rename to core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/MonthEmployee.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/reflection/Person.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/Person.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/reflection/Person.java rename to core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/Person.java diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/reflection/BaeldungReflectionUtilsUnitTest.java b/core-java-modules/core-java-reflection/src/test/java/com/baeldung/reflection/BaeldungReflectionUtilsUnitTest.java similarity index 100% rename from core-java-modules/core-java/src/test/java/com/baeldung/reflection/BaeldungReflectionUtilsUnitTest.java rename to core-java-modules/core-java-reflection/src/test/java/com/baeldung/reflection/BaeldungReflectionUtilsUnitTest.java diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/reflection/PersonAndEmployeeReflectionUnitTest.java b/core-java-modules/core-java-reflection/src/test/java/com/baeldung/reflection/PersonAndEmployeeReflectionUnitTest.java similarity index 100% rename from core-java-modules/core-java/src/test/java/com/baeldung/reflection/PersonAndEmployeeReflectionUnitTest.java rename to core-java-modules/core-java-reflection/src/test/java/com/baeldung/reflection/PersonAndEmployeeReflectionUnitTest.java diff --git a/core-java-modules/core-java-streams/README.md b/core-java-modules/core-java-streams/README.md new file mode 100644 index 0000000000..e97641c221 --- /dev/null +++ b/core-java-modules/core-java-streams/README.md @@ -0,0 +1,9 @@ +========= + +## Core Java 8 Cookbooks and Examples + +### Relevant Articles: +- [The Difference Between map() and flatMap()](https://www.baeldung.com/java-difference-map-and-flatmap) +- [How to Use if/else Logic in Java 8 Streams](https://www.baeldung.com/java-8-streams-if-else-logic) +- [The Difference Between Collection.stream().forEach() and Collection.forEach()](https://www.baeldung.com/java-collection-stream-foreach) +- [Guide to Java 8’s Collectors](https://www.baeldung.com/java-8-collectors) \ No newline at end of file diff --git a/core-java-modules/core-java-streams/pom.xml b/core-java-modules/core-java-streams/pom.xml new file mode 100644 index 0000000000..4ff8e8aaba --- /dev/null +++ b/core-java-modules/core-java-streams/pom.xml @@ -0,0 +1,54 @@ + + 4.0.0 + com.baeldung + core-java-streams + 0.1.0-SNAPSHOT + core-java-streams + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + org.projectlombok + lombok + ${lombok.version} + provided + + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + core-java-streams + + + src/main/resources + true + + + + + + + 3.6.1 + + 2.22.1 + + diff --git a/core-java-modules/core-java-8-2/src/main/java/com/baeldung/forEach/ReverseList.java b/core-java-modules/core-java-streams/src/main/java/com/baeldung/forEach/ReverseList.java similarity index 100% rename from core-java-modules/core-java-8-2/src/main/java/com/baeldung/forEach/ReverseList.java rename to core-java-modules/core-java-streams/src/main/java/com/baeldung/forEach/ReverseList.java diff --git a/core-java-modules/core-java-streams/src/main/resources/logback.xml b/core-java-modules/core-java-streams/src/main/resources/logback.xml new file mode 100644 index 0000000000..7d900d8ea8 --- /dev/null +++ b/core-java-modules/core-java-streams/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java b/core-java-modules/core-java-streams/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java rename to core-java-modules/core-java-streams/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/stream/conditional/StreamForEachIfElseUnitTest.java b/core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/conditional/StreamForEachIfElseUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/stream/conditional/StreamForEachIfElseUnitTest.java rename to core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/conditional/StreamForEachIfElseUnitTest.java diff --git a/core-java-modules/core-java-text/README.md b/core-java-modules/core-java-text/README.md new file mode 100644 index 0000000000..5a6db4e8fd --- /dev/null +++ b/core-java-modules/core-java-text/README.md @@ -0,0 +1,6 @@ +========= + +## Core Java 8 Cookbooks and Examples + +### Relevant Articles: +- [An Overview of Regular Expressions Performance in Java](https://www.baeldung.com/java-regex-performance) \ No newline at end of file diff --git a/core-java-modules/core-java-text/pom.xml b/core-java-modules/core-java-text/pom.xml new file mode 100644 index 0000000000..f831ec5f40 --- /dev/null +++ b/core-java-modules/core-java-text/pom.xml @@ -0,0 +1,32 @@ + + 4.0.0 + com.baeldung + core-java-text + 0.1.0-SNAPSHOT + core-java-text + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + + + core-java-text + + + src/main/resources + true + + + + + + + diff --git a/core-java-modules/core-java-text/src/main/resources/logback.xml b/core-java-modules/core-java-text/src/main/resources/logback.xml new file mode 100644 index 0000000000..7d900d8ea8 --- /dev/null +++ b/core-java-modules/core-java-text/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/jsonposturlconnection/PostJSONWithHttpURLConnection.java b/core-java-modules/core-java/src/main/java/com/baeldung/jsonposturlconnection/PostJSONWithHttpURLConnection.java new file mode 100644 index 0000000000..b2469ac984 --- /dev/null +++ b/core-java-modules/core-java/src/main/java/com/baeldung/jsonposturlconnection/PostJSONWithHttpURLConnection.java @@ -0,0 +1,46 @@ +package com.baeldung.jsonposturlconnection; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; + +public class PostJSONWithHttpURLConnection { + + public static void main (String []args) throws IOException{ + //Change the URL with any other publicly accessible POST resource, which accepts JSON request body + URL url = new URL ("https://reqres.in/api/users"); + + HttpURLConnection con = (HttpURLConnection)url.openConnection(); + con.setRequestMethod("POST"); + + con.setRequestProperty("Content-Type", "application/json; utf-8"); + con.setRequestProperty("Accept", "application/json"); + + con.setDoOutput(true); + + //JSON String need to be constructed for the specific resource. + //We may construct complex JSON using any third-party JSON libraries such as jackson or org.json + String jsonInputString = "{\"name\": \"Upendra\", \"job\": \"Programmer\"}"; + + try(OutputStream os = con.getOutputStream()){ + byte[] input = jsonInputString.getBytes("utf-8"); + os.write(input, 0, input.length); + } + + int code = con.getResponseCode(); + System.out.println(code); + + try(BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"))){ + StringBuilder response = new StringBuilder(); + String responseLine = null; + while ((responseLine = br.readLine()) != null) { + response.append(responseLine.trim()); + } + System.out.println(response.toString()); + } + } + +} diff --git a/guava-io/README.md b/guava-io/README.md new file mode 100644 index 0000000000..df7775a36d --- /dev/null +++ b/guava-io/README.md @@ -0,0 +1,4 @@ +### Relevant Articles: + +- [Using Guava CountingOutputStream](http://www.baeldung.com/guava-counting-outputstream) +- [Guava – Write to File, Read from File](http://www.baeldung.com/guava-write-to-file-read-from-file) diff --git a/guava-io/pom.xml b/guava-io/pom.xml new file mode 100644 index 0000000000..2a66baba80 --- /dev/null +++ b/guava-io/pom.xml @@ -0,0 +1,26 @@ + + 4.0.0 + com.baeldung + guava-io + 0.1.0-SNAPSHOT + guava-io + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../parent-java + + + + guava-io + + + src/main/resources + true + + + + + \ No newline at end of file diff --git a/guava/src/test/java/org/baeldung/guava/GuavaCountingOutputStreamUnitTest.java b/guava-io/src/main/test/java/com/baeldung/guava/GuavaCountingOutputStreamUnitTest.java similarity index 100% rename from guava/src/test/java/org/baeldung/guava/GuavaCountingOutputStreamUnitTest.java rename to guava-io/src/main/test/java/com/baeldung/guava/GuavaCountingOutputStreamUnitTest.java diff --git a/guava/src/test/java/org/baeldung/guava/GuavaIOUnitTest.java b/guava-io/src/main/test/java/com/baeldung/guava/GuavaIOUnitTest.java similarity index 100% rename from guava/src/test/java/org/baeldung/guava/GuavaIOUnitTest.java rename to guava-io/src/main/test/java/com/baeldung/guava/GuavaIOUnitTest.java diff --git a/guava/README.md b/guava/README.md index 60754dbe57..d3bbbf6de5 100644 --- a/guava/README.md +++ b/guava/README.md @@ -1,11 +1,8 @@ -========= - -## Guava and Hamcrest Cookbooks and Examples +## Guava Examples ### Relevant Articles: - [Guava Functional Cookbook](http://www.baeldung.com/guava-functions-predicates) -- [Guava – Write to File, Read from File](http://www.baeldung.com/guava-write-to-file-read-from-file) - [Guide to Guava’s Ordering](http://www.baeldung.com/guava-ordering) - [Guide to Guava’s PreConditions](http://www.baeldung.com/guava-preconditions) - [Introduction to Guava CacheLoader](http://www.baeldung.com/guava-cacheloader) @@ -14,7 +11,5 @@ - [Guide to Guava’s Reflection Utilities](http://www.baeldung.com/guava-reflection) - [Guide to Mathematical Utilities in Guava](http://www.baeldung.com/guava-math) - [Bloom Filter in Java using Guava](http://www.baeldung.com/guava-bloom-filter) -- [Using Guava CountingOutputStream](http://www.baeldung.com/guava-counting-outputstream) -- [Hamcrest Text Matchers](http://www.baeldung.com/hamcrest-text-matchers) - [Quick Guide to the Guava RateLimiter](http://www.baeldung.com/guava-rate-limiter) -- [Hamcrest File Matchers](https://www.baeldung.com/hamcrest-file-matchers) + diff --git a/guava/pom.xml b/guava/pom.xml index 34eb7eafa6..3a19901a02 100644 --- a/guava/pom.xml +++ b/guava/pom.xml @@ -27,13 +27,7 @@ test - - - org.hamcrest - java-hamcrest - ${java-hamcrest.version} - test - + @@ -52,7 +46,6 @@ 3.6.1 - 2.0.0.0 \ No newline at end of file diff --git a/guava/src/test/java/org/baeldung/hamcrest/README.md b/guava/src/test/java/org/baeldung/hamcrest/README.md deleted file mode 100644 index 7266ecda3a..0000000000 --- a/guava/src/test/java/org/baeldung/hamcrest/README.md +++ /dev/null @@ -1,2 +0,0 @@ -### Relevant Articles: -- [Testing with Hamcrest](http://www.baeldung.com/java-junit-hamcrest-guide) diff --git a/jackson/src/test/java/com/baeldung/jackson/test/JacksonExceptionsUnitTest.java b/jackson/src/test/java/com/baeldung/jackson/exception/test/JacksonExceptionsUnitTest.java similarity index 99% rename from jackson/src/test/java/com/baeldung/jackson/test/JacksonExceptionsUnitTest.java rename to jackson/src/test/java/com/baeldung/jackson/exception/test/JacksonExceptionsUnitTest.java index cd2c2925d6..dd0fe8dc56 100644 --- a/jackson/src/test/java/com/baeldung/jackson/test/JacksonExceptionsUnitTest.java +++ b/jackson/src/test/java/com/baeldung/jackson/exception/test/JacksonExceptionsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.test; +package com.baeldung.jackson.exception.test; import static org.hamcrest.Matchers.containsString; import static org.junit.Assert.assertEquals; diff --git a/java-blockchain/README.md b/java-blockchain/README.md index 600f4dd610..5afd0d356b 100644 --- a/java-blockchain/README.md +++ b/java-blockchain/README.md @@ -1,6 +1,7 @@ -========= +## Java Blockchain -## Basic Implementation of Blockchian in Java +This module contains articles about Blockchain in Java ### Relevant Articles: -- []() + +- [Implementing a Simple Blockchain in Java](https://www.baeldung.com/java-blockchain) diff --git a/java-collections-maps-2/README.md b/java-collections-maps-2/README.md index 3740639339..09c4b4fbb3 100644 --- a/java-collections-maps-2/README.md +++ b/java-collections-maps-2/README.md @@ -2,3 +2,11 @@ - [Map of Primitives in Java](https://www.baeldung.com/java-map-primitives) - [Copying a HashMap in Java](https://www.baeldung.com/java-copy-hashmap) - [Guide to Java HashMap]() +- [Guide to WeakHashMap in Java](https://www.baeldung.com/java-weakhashmap) +- [Map to String Conversion in Java](https://www.baeldung.com/java-map-to-string-conversion) +- [Iterate over a Map in Java](https://www.baeldung.com/java-iterate-map) +- [Merging Two Maps with Java 8](https://www.baeldung.com/java-merge-maps) +- [Sort a HashMap in Java](https://www.baeldung.com/java-hashmap-sort) +- [Finding the Highest Value in a Java Map](https://www.baeldung.com/java-find-map-max) +- [Initialize a HashMap in Java](https://www.baeldung.com/java-initialize-hashmap) +- [Java TreeMap vs HashMap](https://www.baeldung.com/java-treemap-vs-hashmap) diff --git a/java-collections-maps-2/pom.xml b/java-collections-maps-2/pom.xml index e242a8655e..a246559f61 100644 --- a/java-collections-maps-2/pom.xml +++ b/java-collections-maps-2/pom.xml @@ -41,6 +41,22 @@ commons-lang3 ${commons-lang3.version} + + org.apache.commons + commons-collections4 + ${commons-collections4.version} + + + one.util + streamex + ${streamex.version} + + + com.jayway.awaitility + awaitility + ${avaitility.version} + test + org.assertj assertj-core @@ -50,6 +66,9 @@ + 0.6.5 + 4.1 + 1.7.0 8.2.0 3.0.2 8.1.0 diff --git a/java-collections-maps/src/main/java/com/baeldung/convert/MapToString.java b/java-collections-maps-2/src/main/java/com/baeldung/map/convert/MapToString.java similarity index 96% rename from java-collections-maps/src/main/java/com/baeldung/convert/MapToString.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/convert/MapToString.java index aca0d05ef1..d13be924ff 100644 --- a/java-collections-maps/src/main/java/com/baeldung/convert/MapToString.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/convert/MapToString.java @@ -1,4 +1,4 @@ -package com.baeldung.convert; +package com.baeldung.map.convert; import com.google.common.base.Joiner; import org.apache.commons.lang3.StringUtils; diff --git a/java-collections-maps/src/main/java/com/baeldung/convert/StringToMap.java b/java-collections-maps-2/src/main/java/com/baeldung/map/convert/StringToMap.java similarity index 94% rename from java-collections-maps/src/main/java/com/baeldung/convert/StringToMap.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/convert/StringToMap.java index caabca4a09..416ba4dd9a 100644 --- a/java-collections-maps/src/main/java/com/baeldung/convert/StringToMap.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/convert/StringToMap.java @@ -1,4 +1,4 @@ -package com.baeldung.convert; +package com.baeldung.map.convert; import com.google.common.base.Splitter; diff --git a/java-collections-maps-2/src/main/java/com/baeldung/map/CopyHashMap.java b/java-collections-maps-2/src/main/java/com/baeldung/map/copyhashmap/CopyHashMap.java similarity index 98% rename from java-collections-maps-2/src/main/java/com/baeldung/map/CopyHashMap.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/copyhashmap/CopyHashMap.java index 2ebc9413c8..cb18f3aa11 100644 --- a/java-collections-maps-2/src/main/java/com/baeldung/map/CopyHashMap.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/copyhashmap/CopyHashMap.java @@ -1,4 +1,6 @@ -package com.baeldung.map; +package com.baeldung.map.copyhashmap; + +import org.apache.commons.lang3.SerializationUtils; import java.util.HashMap; import java.util.Map; @@ -6,8 +8,6 @@ import java.util.Map.Entry; import java.util.Set; import java.util.stream.Collectors; -import org.apache.commons.lang3.SerializationUtils; - public class CopyHashMap { public static HashMap copyUsingConstructor(HashMap originalMap) { diff --git a/java-collections-maps/src/main/java/com/baeldung/java/map/initialize/MapInitializer.java b/java-collections-maps-2/src/main/java/com/baeldung/map/initialize/MapInitializer.java similarity index 98% rename from java-collections-maps/src/main/java/com/baeldung/java/map/initialize/MapInitializer.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/initialize/MapInitializer.java index 4dbaceac62..4d63abcfd0 100644 --- a/java-collections-maps/src/main/java/com/baeldung/java/map/initialize/MapInitializer.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/initialize/MapInitializer.java @@ -1,4 +1,4 @@ -package com.baeldung.java.map.initialize; +package com.baeldung.map.initialize; import java.util.AbstractMap; import java.util.Collections; diff --git a/java-collections-maps/src/main/java/com/baeldung/map/iteration/MapIteration.java b/java-collections-maps-2/src/main/java/com/baeldung/map/iteration/MapIteration.java similarity index 100% rename from java-collections-maps/src/main/java/com/baeldung/map/iteration/MapIteration.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/iteration/MapIteration.java diff --git a/java-collections-maps/src/main/java/com/baeldung/map/util/MapMax.java b/java-collections-maps-2/src/main/java/com/baeldung/map/mapmax/MapMax.java similarity index 94% rename from java-collections-maps/src/main/java/com/baeldung/map/util/MapMax.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/mapmax/MapMax.java index 93a98ba6fd..8c33c857ee 100644 --- a/java-collections-maps/src/main/java/com/baeldung/map/util/MapMax.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/mapmax/MapMax.java @@ -1,11 +1,7 @@ -package com.baeldung.map.util; +package com.baeldung.map.mapmax; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; -import java.util.Optional; public class MapMax { diff --git a/java-collections-maps/src/main/java/com/baeldung/sort/Employee.java b/java-collections-maps-2/src/main/java/com/baeldung/map/mergemaps/Employee.java similarity index 97% rename from java-collections-maps/src/main/java/com/baeldung/sort/Employee.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/mergemaps/Employee.java index b5e56f6141..d7fb0d1a1d 100644 --- a/java-collections-maps/src/main/java/com/baeldung/sort/Employee.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/mergemaps/Employee.java @@ -1,4 +1,4 @@ -package com.baeldung.sort; +package com.baeldung.map.mergemaps; public class Employee implements Comparable { diff --git a/java-collections-maps/src/main/java/com/baeldung/map/java_8/MergeMaps.java b/java-collections-maps-2/src/main/java/com/baeldung/map/mergemaps/MergeMaps.java similarity index 97% rename from java-collections-maps/src/main/java/com/baeldung/map/java_8/MergeMaps.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/mergemaps/MergeMaps.java index 052cfb8bad..4f187bad90 100644 --- a/java-collections-maps/src/main/java/com/baeldung/map/java_8/MergeMaps.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/mergemaps/MergeMaps.java @@ -1,7 +1,7 @@ -package com.baeldung.map.java_8; +package com.baeldung.map.mergemaps; -import com.baeldung.sort.Employee; import one.util.streamex.EntryStream; + import java.util.HashMap; import java.util.Map; import java.util.stream.Collectors; diff --git a/java-collections-maps-2/src/main/java/com/baeldung/map/PrimitiveMaps.java b/java-collections-maps-2/src/main/java/com/baeldung/map/primitives/PrimitiveMaps.java similarity index 98% rename from java-collections-maps-2/src/main/java/com/baeldung/map/PrimitiveMaps.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/primitives/PrimitiveMaps.java index d835950c68..30bec12ccc 100644 --- a/java-collections-maps-2/src/main/java/com/baeldung/map/PrimitiveMaps.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/primitives/PrimitiveMaps.java @@ -1,4 +1,4 @@ -package com.baeldung.map; +package com.baeldung.map.primitives; import cern.colt.map.AbstractIntDoubleMap; import cern.colt.map.OpenIntDoubleHashMap; diff --git a/java-collections-maps/src/main/java/com/baeldung/sort/SortHashMap.java b/java-collections-maps-2/src/main/java/com/baeldung/map/sort/SortHashMap.java similarity index 97% rename from java-collections-maps/src/main/java/com/baeldung/sort/SortHashMap.java rename to java-collections-maps-2/src/main/java/com/baeldung/map/sort/SortHashMap.java index b8a2b32060..14610ffb00 100644 --- a/java-collections-maps/src/main/java/com/baeldung/sort/SortHashMap.java +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/sort/SortHashMap.java @@ -1,8 +1,8 @@ -package com.baeldung.sort; +package com.baeldung.map.sort; +import com.baeldung.map.mergemaps.Employee; import com.google.common.base.Functions; import com.google.common.collect.ImmutableSortedMap; -import com.google.common.collect.Lists; import com.google.common.collect.Ordering; import java.util.*; diff --git a/java-collections-maps/src/test/java/com/baeldung/convert/MapToStringUnitTest.java b/java-collections-maps-2/src/test/java/com/baeldung/map/convert/MapToStringUnitTest.java similarity index 97% rename from java-collections-maps/src/test/java/com/baeldung/convert/MapToStringUnitTest.java rename to java-collections-maps-2/src/test/java/com/baeldung/map/convert/MapToStringUnitTest.java index d9923e74a0..4517dea328 100644 --- a/java-collections-maps/src/test/java/com/baeldung/convert/MapToStringUnitTest.java +++ b/java-collections-maps-2/src/test/java/com/baeldung/map/convert/MapToStringUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.convert; +package com.baeldung.map.convert; import org.apache.commons.collections4.MapUtils; import org.junit.Assert; diff --git a/java-collections-maps/src/test/java/com/baeldung/convert/StringToMapUnitTest.java b/java-collections-maps-2/src/test/java/com/baeldung/map/convert/StringToMapUnitTest.java similarity index 95% rename from java-collections-maps/src/test/java/com/baeldung/convert/StringToMapUnitTest.java rename to java-collections-maps-2/src/test/java/com/baeldung/map/convert/StringToMapUnitTest.java index 8fb906efd0..2f80b30871 100644 --- a/java-collections-maps/src/test/java/com/baeldung/convert/StringToMapUnitTest.java +++ b/java-collections-maps-2/src/test/java/com/baeldung/map/convert/StringToMapUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.convert; +package com.baeldung.map.convert; import org.junit.Assert; import org.junit.jupiter.api.Test; diff --git a/java-collections-maps-2/src/test/java/com/baeldung/map/CopyHashMapUnitTest.java b/java-collections-maps-2/src/test/java/com/baeldung/map/copyhashmap/CopyHashMapUnitTest.java similarity index 98% rename from java-collections-maps-2/src/test/java/com/baeldung/map/CopyHashMapUnitTest.java rename to java-collections-maps-2/src/test/java/com/baeldung/map/copyhashmap/CopyHashMapUnitTest.java index c400eea153..e2d5e327e1 100644 --- a/java-collections-maps-2/src/test/java/com/baeldung/map/CopyHashMapUnitTest.java +++ b/java-collections-maps-2/src/test/java/com/baeldung/map/copyhashmap/CopyHashMapUnitTest.java @@ -1,13 +1,12 @@ -package com.baeldung.map; +package com.baeldung.map.copyhashmap; -import static org.assertj.core.api.Assertions.assertThat; +import com.google.common.collect.ImmutableMap; +import org.junit.Test; import java.util.HashMap; import java.util.Map; -import org.junit.Test; - -import com.google.common.collect.ImmutableMap; +import static org.assertj.core.api.Assertions.assertThat; public class CopyHashMapUnitTest { diff --git a/java-collections-maps-2/src/test/java/com/baeldung/map/Employee.java b/java-collections-maps-2/src/test/java/com/baeldung/map/copyhashmap/Employee.java similarity index 91% rename from java-collections-maps-2/src/test/java/com/baeldung/map/Employee.java rename to java-collections-maps-2/src/test/java/com/baeldung/map/copyhashmap/Employee.java index 7963fa811c..5db55c26ea 100644 --- a/java-collections-maps-2/src/test/java/com/baeldung/map/Employee.java +++ b/java-collections-maps-2/src/test/java/com/baeldung/map/copyhashmap/Employee.java @@ -1,4 +1,4 @@ -package com.baeldung.map; +package com.baeldung.map.copyhashmap; import java.io.Serializable; diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/initialize/MapInitializerUnitTest.java b/java-collections-maps-2/src/test/java/com/baeldung/map/initialize/MapInitializerUnitTest.java similarity index 94% rename from java-collections-maps/src/test/java/com/baeldung/java/map/initialize/MapInitializerUnitTest.java rename to java-collections-maps-2/src/test/java/com/baeldung/map/initialize/MapInitializerUnitTest.java index 80a8983d6f..7c6dffe787 100644 --- a/java-collections-maps/src/test/java/com/baeldung/java/map/initialize/MapInitializerUnitTest.java +++ b/java-collections-maps-2/src/test/java/com/baeldung/map/initialize/MapInitializerUnitTest.java @@ -1,10 +1,10 @@ -package com.baeldung.java.map.initialize; +package com.baeldung.map.initialize; -import static org.junit.Assert.assertEquals; +import org.junit.Test; import java.util.Map; -import org.junit.Test; +import static org.junit.Assert.assertEquals; public class MapInitializerUnitTest { diff --git a/java-collections-maps/src/test/java/com/baeldung/map/util/MapMaxUnitTest.java b/java-collections-maps-2/src/test/java/com/baeldung/map/mapmax/MapMaxUnitTest.java similarity index 97% rename from java-collections-maps/src/test/java/com/baeldung/map/util/MapMaxUnitTest.java rename to java-collections-maps-2/src/test/java/com/baeldung/map/mapmax/MapMaxUnitTest.java index 883265cc8b..30b945bfc8 100644 --- a/java-collections-maps/src/test/java/com/baeldung/map/util/MapMaxUnitTest.java +++ b/java-collections-maps-2/src/test/java/com/baeldung/map/mapmax/MapMaxUnitTest.java @@ -1,14 +1,13 @@ -package com.baeldung.map.util; +package com.baeldung.map.mapmax; - -import static org.junit.Assert.assertEquals; +import org.junit.Before; +import org.junit.Test; import java.util.HashMap; import java.util.Map; -import org.junit.Before; -import org.junit.Test; +import static org.junit.Assert.assertEquals; public class MapMaxUnitTest { diff --git a/java-collections-maps/src/test/java/com/baeldung/collection/WhenComparingTreeMapVsHashMap.java b/java-collections-maps-2/src/test/java/com/baeldung/map/treemaphashmap/TreeMapVsHashMapUnitTest.java similarity index 91% rename from java-collections-maps/src/test/java/com/baeldung/collection/WhenComparingTreeMapVsHashMap.java rename to java-collections-maps-2/src/test/java/com/baeldung/map/treemaphashmap/TreeMapVsHashMapUnitTest.java index f2dfc992c2..1057e3b9f0 100644 --- a/java-collections-maps/src/test/java/com/baeldung/collection/WhenComparingTreeMapVsHashMap.java +++ b/java-collections-maps-2/src/test/java/com/baeldung/map/treemaphashmap/TreeMapVsHashMapUnitTest.java @@ -1,16 +1,14 @@ -package com.baeldung.collection; - -import java.util.ConcurrentModificationException; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.TreeMap; +package com.baeldung.map.treemaphashmap; import org.hamcrest.Matchers; import org.junit.Assert; import org.junit.Test; -public class WhenComparingTreeMapVsHashMap { +import java.util.HashMap; +import java.util.Map; +import java.util.TreeMap; + +public class TreeMapVsHashMapUnitTest { @Test public void whenInsertObjectsTreeMap_thenNaturalOrder() { diff --git a/java-collections-maps/src/test/java/com/baeldung/weakhashmap/WeakHashMapUnitTest.java b/java-collections-maps-2/src/test/java/com/baeldung/map/weakhashmap/WeakHashMapUnitTest.java similarity index 98% rename from java-collections-maps/src/test/java/com/baeldung/weakhashmap/WeakHashMapUnitTest.java rename to java-collections-maps-2/src/test/java/com/baeldung/map/weakhashmap/WeakHashMapUnitTest.java index d7bcb31867..293f24c378 100644 --- a/java-collections-maps/src/test/java/com/baeldung/weakhashmap/WeakHashMapUnitTest.java +++ b/java-collections-maps-2/src/test/java/com/baeldung/map/weakhashmap/WeakHashMapUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.weakhashmap; +package com.baeldung.map.weakhashmap; import org.junit.Test; diff --git a/java-collections-maps/README.md b/java-collections-maps/README.md index 2eeb2c8843..3a6ad1d10c 100644 --- a/java-collections-maps/README.md +++ b/java-collections-maps/README.md @@ -3,21 +3,13 @@ ## Java Collections Cookbooks and Examples ### Relevant Articles: -- [Guide to WeakHashMap in Java](http://www.baeldung.com/java-weakhashmap) -- [Guide to the Guava BiMap](http://www.baeldung.com/guava-bimap) -- [The Java HashMap Under the Hood](http://www.baeldung.com/java-hashmap) -- [A Guide to LinkedHashMap in Java](http://www.baeldung.com/java-linked-hashmap) -- [A Guide to TreeMap in Java](http://www.baeldung.com/java-treemap) -- [Iterate over a Map in Java](http://www.baeldung.com/java-iterate-map) -- [Java TreeMap vs HashMap](http://www.baeldung.com/java-treemap-vs-hashmap) -- [How to Store Duplicate Keys in a Map in Java?](http://www.baeldung.com/java-map-duplicate-keys) -- [Initialize a HashMap in Java](https://www.baeldung.com/java-initialize-hashmap) +- [Guide to the Guava BiMap](https://www.baeldung.com/guava-bimap) +- [The Java HashMap Under the Hood](https://www.baeldung.com/java-hashmap) +- [A Guide to LinkedHashMap in Java](https://www.baeldung.com/java-linked-hashmap) +- [A Guide to TreeMap in Java](https://www.baeldung.com/java-treemap) +- [How to Store Duplicate Keys in a Map in Java?](https://www.baeldung.com/java-map-duplicate-keys) - [Get the Key for a Value from a Java Map](https://www.baeldung.com/java-map-key-from-value) -- [Sort a HashMap in Java](https://www.baeldung.com/java-hashmap-sort) -- [Finding the Highest Value in a Java Map](https://www.baeldung.com/java-find-map-max) -- [Merging Two Maps with Java 8](https://www.baeldung.com/java-merge-maps) - [How to Check If a Key Exists in a Map](https://www.baeldung.com/java-map-key-exists) - [Comparing Two HashMaps in Java](https://www.baeldung.com/java-compare-hashmaps) - [Immutable Map Implementations in Java](https://www.baeldung.com/java-immutable-maps) -- [Map to String Conversion in Java](https://www.baeldung.com/java-map-to-string-conversion) - [Guide to Apache Commons MultiValuedMap](https://www.baeldung.com/apache-commons-multi-valued-map) diff --git a/java-collections-maps/pom.xml b/java-collections-maps/pom.xml index 83cc97a21e..b755582580 100644 --- a/java-collections-maps/pom.xml +++ b/java-collections-maps/pom.xml @@ -36,11 +36,6 @@ ${assertj.version} test - - one.util - streamex - ${streamex.version} - @@ -49,6 +44,5 @@ 1.7.0 3.6.1 7.1.0 - 0.6.5 diff --git a/java-collections-maps/src/main/java/com/baeldung/java/map/MapUtil.java b/java-collections-maps/src/main/java/com/baeldung/map/MapUtil.java similarity index 96% rename from java-collections-maps/src/main/java/com/baeldung/java/map/MapUtil.java rename to java-collections-maps/src/main/java/com/baeldung/map/MapUtil.java index 688c7592f3..91b7197a92 100644 --- a/java-collections-maps/src/main/java/com/baeldung/java/map/MapUtil.java +++ b/java-collections-maps/src/main/java/com/baeldung/map/MapUtil.java @@ -1,12 +1,12 @@ /** * */ -package com.baeldung.java.map; +package com.baeldung.map; import java.util.HashSet; import java.util.Map; -import java.util.Set; import java.util.Map.Entry; +import java.util.Set; import java.util.stream.Stream; /** diff --git a/java-collections-maps/src/main/java/com/baeldung/java/map/MyKey.java b/java-collections-maps/src/main/java/com/baeldung/map/MyKey.java similarity index 97% rename from java-collections-maps/src/main/java/com/baeldung/java/map/MyKey.java rename to java-collections-maps/src/main/java/com/baeldung/map/MyKey.java index ae3c3edc39..9993d7862c 100644 --- a/java-collections-maps/src/main/java/com/baeldung/java/map/MyKey.java +++ b/java-collections-maps/src/main/java/com/baeldung/map/MyKey.java @@ -1,4 +1,4 @@ -package com.baeldung.java.map; +package com.baeldung.map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/java-collections-maps/src/main/java/com/baeldung/java/map/MyLinkedHashMap.java b/java-collections-maps/src/main/java/com/baeldung/map/MyLinkedHashMap.java similarity index 94% rename from java-collections-maps/src/main/java/com/baeldung/java/map/MyLinkedHashMap.java rename to java-collections-maps/src/main/java/com/baeldung/map/MyLinkedHashMap.java index 1e237580ec..b687e57d85 100644 --- a/java-collections-maps/src/main/java/com/baeldung/java/map/MyLinkedHashMap.java +++ b/java-collections-maps/src/main/java/com/baeldung/map/MyLinkedHashMap.java @@ -1,4 +1,4 @@ -package com.baeldung.java.map; +package com.baeldung.map; import java.util.LinkedHashMap; import java.util.Map; diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/ImmutableMapUnitTest.java b/java-collections-maps/src/test/java/com/baeldung/map/ImmutableMapUnitTest.java similarity index 92% rename from java-collections-maps/src/test/java/com/baeldung/java/map/ImmutableMapUnitTest.java rename to java-collections-maps/src/test/java/com/baeldung/map/ImmutableMapUnitTest.java index b239ae07d8..d308aac7eb 100644 --- a/java-collections-maps/src/test/java/com/baeldung/java/map/ImmutableMapUnitTest.java +++ b/java-collections-maps/src/test/java/com/baeldung/map/ImmutableMapUnitTest.java @@ -1,16 +1,13 @@ -package com.baeldung.java.map; +package com.baeldung.map; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; +import com.google.common.collect.ImmutableMap; +import org.junit.jupiter.api.Test; import java.util.Collections; import java.util.HashMap; import java.util.Map; -import org.junit.jupiter.api.Test; - -import com.google.common.collect.ImmutableMap; +import static org.junit.jupiter.api.Assertions.*; public class ImmutableMapUnitTest { diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/KeyCheckUnitTest.java b/java-collections-maps/src/test/java/com/baeldung/map/KeyCheckUnitTest.java similarity index 78% rename from java-collections-maps/src/test/java/com/baeldung/java/map/KeyCheckUnitTest.java rename to java-collections-maps/src/test/java/com/baeldung/map/KeyCheckUnitTest.java index 2c97a97690..dbad2e5b5e 100644 --- a/java-collections-maps/src/test/java/com/baeldung/java/map/KeyCheckUnitTest.java +++ b/java-collections-maps/src/test/java/com/baeldung/map/KeyCheckUnitTest.java @@ -1,13 +1,11 @@ -package com.baeldung.java.map; +package com.baeldung.map; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; +import org.junit.Test; import java.util.Collections; import java.util.Map; -import org.junit.Test; +import static org.junit.Assert.*; public class KeyCheckUnitTest { diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/MapMultipleValuesUnitTest.java b/java-collections-maps/src/test/java/com/baeldung/map/MapMultipleValuesUnitTest.java similarity index 96% rename from java-collections-maps/src/test/java/com/baeldung/java/map/MapMultipleValuesUnitTest.java rename to java-collections-maps/src/test/java/com/baeldung/map/MapMultipleValuesUnitTest.java index 3a0affa6f3..721b48ea7b 100644 --- a/java-collections-maps/src/test/java/com/baeldung/java/map/MapMultipleValuesUnitTest.java +++ b/java-collections-maps/src/test/java/com/baeldung/map/MapMultipleValuesUnitTest.java @@ -1,13 +1,9 @@ -package com.baeldung.java.map; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +package com.baeldung.map; +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.LinkedHashMultimap; +import com.google.common.collect.Multimap; +import com.google.common.collect.TreeMultimap; import org.apache.commons.collections4.MultiMap; import org.apache.commons.collections4.MultiMapUtils; import org.apache.commons.collections4.MultiValuedMap; @@ -18,10 +14,9 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.LinkedHashMultimap; -import com.google.common.collect.Multimap; -import com.google.common.collect.TreeMultimap; +import java.util.*; + +import static org.assertj.core.api.Assertions.assertThat; public class MapMultipleValuesUnitTest { private static final Logger LOG = LoggerFactory.getLogger(MapMultipleValuesUnitTest.class); diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/MapUnitTest.java b/java-collections-maps/src/test/java/com/baeldung/map/MapUnitTest.java similarity index 99% rename from java-collections-maps/src/test/java/com/baeldung/java/map/MapUnitTest.java rename to java-collections-maps/src/test/java/com/baeldung/map/MapUnitTest.java index 7582eb87fb..eaf68ccba5 100644 --- a/java-collections-maps/src/test/java/com/baeldung/java/map/MapUnitTest.java +++ b/java-collections-maps/src/test/java/com/baeldung/map/MapUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.java.map; +package com.baeldung.map; import org.junit.Test; import org.slf4j.Logger; diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/MapUtilUnitTest.java b/java-collections-maps/src/test/java/com/baeldung/map/MapUtilUnitTest.java similarity index 99% rename from java-collections-maps/src/test/java/com/baeldung/java/map/MapUtilUnitTest.java rename to java-collections-maps/src/test/java/com/baeldung/map/MapUtilUnitTest.java index e31385e972..f8e4c8fd8a 100644 --- a/java-collections-maps/src/test/java/com/baeldung/java/map/MapUtilUnitTest.java +++ b/java-collections-maps/src/test/java/com/baeldung/map/MapUtilUnitTest.java @@ -1,9 +1,12 @@ /** * */ -package com.baeldung.java.map; +package com.baeldung.map; -import static org.junit.Assert.assertEquals; +import com.google.common.collect.HashBiMap; +import org.apache.commons.collections4.BidiMap; +import org.apache.commons.collections4.bidimap.DualHashBidiMap; +import org.junit.Test; import java.util.Arrays; import java.util.HashMap; @@ -11,11 +14,7 @@ import java.util.HashSet; import java.util.Map; import java.util.stream.Collectors; -import org.apache.commons.collections4.BidiMap; -import org.apache.commons.collections4.bidimap.DualHashBidiMap; -import org.junit.Test; - -import com.google.common.collect.HashBiMap; +import static org.junit.Assert.assertEquals; /** * @author swpraman diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/MultiValuedMapUnitTest.java b/java-collections-maps/src/test/java/com/baeldung/map/MultiValuedMapUnitTest.java similarity index 99% rename from java-collections-maps/src/test/java/com/baeldung/java/map/MultiValuedMapUnitTest.java rename to java-collections-maps/src/test/java/com/baeldung/map/MultiValuedMapUnitTest.java index b3aaf8925f..686c1cef87 100644 --- a/java-collections-maps/src/test/java/com/baeldung/java/map/MultiValuedMapUnitTest.java +++ b/java-collections-maps/src/test/java/com/baeldung/map/MultiValuedMapUnitTest.java @@ -1,15 +1,4 @@ -package com.baeldung.java.map; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.assertTrue; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; +package com.baeldung.map; import org.apache.commons.collections4.MultiMapUtils; import org.apache.commons.collections4.MultiSet; @@ -18,6 +7,17 @@ import org.apache.commons.collections4.multimap.ArrayListValuedHashMap; import org.apache.commons.collections4.multimap.HashSetValuedHashMap; import org.junit.Test; +import java.util.Arrays; +import java.util.Collection; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; + public class MultiValuedMapUnitTest { @Test diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/compare/HashMapComparisonUnitTest.java b/java-collections-maps/src/test/java/com/baeldung/map/compare/HashMapComparisonUnitTest.java similarity index 97% rename from java-collections-maps/src/test/java/com/baeldung/java/map/compare/HashMapComparisonUnitTest.java rename to java-collections-maps/src/test/java/com/baeldung/map/compare/HashMapComparisonUnitTest.java index e8aa12d4bd..0edd0cd87b 100644 --- a/java-collections-maps/src/test/java/com/baeldung/java/map/compare/HashMapComparisonUnitTest.java +++ b/java-collections-maps/src/test/java/com/baeldung/map/compare/HashMapComparisonUnitTest.java @@ -1,24 +1,21 @@ -package com.baeldung.java.map.compare; +package com.baeldung.map.compare; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.collection.IsMapContaining.hasEntry; -import static org.hamcrest.collection.IsMapContaining.hasKey; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import com.google.common.base.Equivalence; +import com.google.common.collect.MapDifference; +import com.google.common.collect.MapDifference.ValueDifference; +import com.google.common.collect.Maps; +import org.junit.Before; +import org.junit.Test; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.stream.Collectors; -import org.junit.Before; -import org.junit.Test; - -import com.google.common.base.Equivalence; -import com.google.common.collect.MapDifference; -import com.google.common.collect.MapDifference.ValueDifference; -import com.google.common.collect.Maps; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.collection.IsMapContaining.hasEntry; +import static org.hamcrest.collection.IsMapContaining.hasKey; +import static org.junit.Assert.*; public class HashMapComparisonUnitTest { diff --git a/java-dates-2/pom.xml b/java-dates-2/pom.xml index c1419514ef..08b2076d03 100644 --- a/java-dates-2/pom.xml +++ b/java-dates-2/pom.xml @@ -20,7 +20,13 @@ joda-time ${joda-time.version} - + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + commons-validator @@ -63,6 +69,7 @@ 3.6.1 2.10 + 3.9 1.6 1.9 1.9 diff --git a/java-dates-2/src/main/java/com/baeldung/date/comparison/DateTimeComparisonUtils.java b/java-dates-2/src/main/java/com/baeldung/date/comparison/DateTimeComparisonUtils.java new file mode 100644 index 0000000000..4d732df795 --- /dev/null +++ b/java-dates-2/src/main/java/com/baeldung/date/comparison/DateTimeComparisonUtils.java @@ -0,0 +1,35 @@ +package com.baeldung.date.comparison; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; + +import static java.time.temporal.ChronoUnit.*; + +public class DateTimeComparisonUtils { + + public static boolean isSameDay(LocalDateTime timestamp, LocalDate localDateToCompare) { + return timestamp.toLocalDate().isEqual(localDateToCompare); + } + + public static boolean isSameDay(LocalDateTime timestamp, LocalDateTime timestampToCompare) { + return timestamp.truncatedTo(DAYS).isEqual(timestampToCompare.truncatedTo(DAYS)); + } + + public static boolean isSameHour(LocalDateTime timestamp, LocalDateTime timestampToCompare) { + return timestamp.truncatedTo(HOURS).isEqual(timestampToCompare.truncatedTo(HOURS)); + } + + public static boolean isSameMinute(LocalDateTime timestamp, LocalDateTime timestampToCompare) { + return timestamp.truncatedTo(MINUTES).isEqual(timestampToCompare.truncatedTo(MINUTES)); + } + + public static boolean isSameHour(ZonedDateTime zonedTimestamp, ZonedDateTime zonedTimestampToCompare) { + return zonedTimestamp.truncatedTo(HOURS).isEqual(zonedTimestampToCompare.truncatedTo(HOURS)); + } + + public static boolean isSameHour(ZonedDateTime zonedDateTime, LocalDateTime localDateTime, ZoneId zoneId) { + return isSameHour(zonedDateTime, localDateTime.atZone(zoneId)); + } +} diff --git a/java-dates-2/src/main/java/com/baeldung/date/comparison/LegacyDateComparisonUtils.java b/java-dates-2/src/main/java/com/baeldung/date/comparison/LegacyDateComparisonUtils.java new file mode 100644 index 0000000000..9519bc316a --- /dev/null +++ b/java-dates-2/src/main/java/com/baeldung/date/comparison/LegacyDateComparisonUtils.java @@ -0,0 +1,17 @@ +package com.baeldung.date.comparison; + +import org.apache.commons.lang3.time.DateUtils; + +import java.util.Calendar; +import java.util.Date; + +public class LegacyDateComparisonUtils { + + public static boolean isSameDay(Date date, Date dateToCompare) { + return DateUtils.isSameDay(date, dateToCompare); + } + + public static boolean isSameHour(Date date, Date dateToCompare) { + return DateUtils.truncatedEquals(date, dateToCompare, Calendar.HOUR); + } +} diff --git a/java-dates-2/src/test/java/com/baeldung/date/comparison/DateTimeComparisonUtilsUnitTest.java b/java-dates-2/src/test/java/com/baeldung/date/comparison/DateTimeComparisonUtilsUnitTest.java new file mode 100644 index 0000000000..0db0d1e8d7 --- /dev/null +++ b/java-dates-2/src/test/java/com/baeldung/date/comparison/DateTimeComparisonUtilsUnitTest.java @@ -0,0 +1,75 @@ +package com.baeldung.date.comparison; + +import org.junit.jupiter.api.Test; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; + +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; + +class DateTimeComparisonUtilsUnitTest { + + @Test + void givenLocalDateTimes_whenIsSameDay_thenCompareTrue() { + LocalDateTime firstTimestamp = LocalDateTime.of(2019, 8, 10, 11, 00, 0); + LocalDateTime secondTimestamp = firstTimestamp.plusHours(5); + LocalDateTime thirdTimestamp = firstTimestamp.plusDays(1); + + assertThat(DateTimeComparisonUtils.isSameDay(firstTimestamp, secondTimestamp), is(true)); + + assertThat(DateTimeComparisonUtils.isSameDay(secondTimestamp, thirdTimestamp), is(false)); + } + + @Test + void givenLocalDateAndLocalDateTime_whenIsSameDay_thenCompareTrue() { + LocalDate localDate = LocalDate.of(2019, 8, 10); + LocalDateTime localDateTime = LocalDateTime.of(2019, 8, 10, 11, 30, 0); + + assertThat(DateTimeComparisonUtils.isSameDay(localDateTime, localDate), is(true)); + } + + @Test + void givenLocalDateTimes_whenIsSameHour_thenCompareTrue() { + LocalDateTime firstTimestamp = LocalDateTime.of(2019, 8, 10, 8, 00, 0); + LocalDateTime secondTimestamp = firstTimestamp.plusMinutes(15); + LocalDateTime thirdTimestamp = firstTimestamp.plusHours(2); + + assertThat(DateTimeComparisonUtils.isSameHour(firstTimestamp, secondTimestamp), is(true)); + + assertThat(DateTimeComparisonUtils.isSameHour(secondTimestamp, thirdTimestamp), is(false)); + } + + @Test + void givenLocalDateTimes_whenIsSameMinute_thenCompareTrue() { + LocalDateTime firstTimestamp = LocalDateTime.of(2019, 8, 10, 8, 15, 0); + LocalDateTime secondTimestamp = firstTimestamp.plusSeconds(30); + LocalDateTime thirdTimestamp = firstTimestamp.plusMinutes(5); + + assertThat(DateTimeComparisonUtils.isSameMinute(firstTimestamp, secondTimestamp), is(true)); + + assertThat(DateTimeComparisonUtils.isSameMinute(secondTimestamp, thirdTimestamp), is(false)); + } + + @Test + void givenZonedDateTimes_whenIsSameHour_thenCompareTrue() { + ZonedDateTime zonedTimestamp = ZonedDateTime.of(2019, 8, 10, 8, 0, 0, 30, + ZoneId.of("America/New_York")); + ZonedDateTime zonedTimestampToCompare = ZonedDateTime.of(2019, 8, 10, 14, 0, 0, 0, + ZoneId.of("Europe/Berlin")); + + assertThat(DateTimeComparisonUtils.isSameHour(zonedTimestamp, zonedTimestampToCompare), is(true)); + } + + @Test + void givenZonedDateTimeAndLocalDateTime_whenIsSameHour_thenCompareTrue() { + ZonedDateTime zonedTimestamp = ZonedDateTime.of(2019, 8, 10, 8, 15, 0, 0, + ZoneId.of("America/New_York")); + LocalDateTime localTimestamp = LocalDateTime.of(2019, 8, 10, 14, 20, 0); + ZoneId zoneId = ZoneId.of("Europe/Berlin"); + + assertThat(DateTimeComparisonUtils.isSameHour(zonedTimestamp, localTimestamp, zoneId), is(true)); + } +} \ No newline at end of file diff --git a/java-dates-2/src/test/java/com/baeldung/date/comparison/Java8DateTimeApiGeneralComparisonsUnitTest.java b/java-dates-2/src/test/java/com/baeldung/date/comparison/Java8DateTimeApiGeneralComparisonsUnitTest.java new file mode 100644 index 0000000000..ff51476e7c --- /dev/null +++ b/java-dates-2/src/test/java/com/baeldung/date/comparison/Java8DateTimeApiGeneralComparisonsUnitTest.java @@ -0,0 +1,83 @@ +package com.baeldung.date.comparison; + +import org.junit.Test; + +import java.time.*; + +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; + +public class Java8DateTimeApiGeneralComparisonsUnitTest { + + @Test + public void givenLocalDates_whenComparing_thenAssertsPass() { + LocalDate firstDate = LocalDate.of(2019, 8, 10); + LocalDate secondDate = LocalDate.of(2019, 7, 1); + LocalDate thirdDate = LocalDate.of(2019, 7, 1); // same date as secondDate + + assertThat(firstDate.isAfter(secondDate), is(true)); + assertThat(firstDate.isBefore(secondDate), is(false)); + + assertThat(firstDate.isEqual(secondDate), is(false)); + assertThat(firstDate.equals(secondDate), is(false)); + + assertThat(firstDate.compareTo(secondDate), is(1)); + assertThat(secondDate.compareTo(firstDate), is(-1)); + + assertThat(secondDate.isAfter(thirdDate), is(false)); + assertThat(secondDate.isBefore(thirdDate), is(false)); + assertThat(secondDate.isEqual(thirdDate), is(true)); + assertThat(secondDate.equals(thirdDate), is(true)); + assertThat(secondDate.compareTo(thirdDate), is(0)); + } + + @Test + public void givenLocalDateTimes_whenComparing_thenAssertsPass() { + LocalDateTime firstTimestamp = LocalDateTime.of(2019, 8, 10, 11, 30, 0); + LocalDateTime secondTimestamp = LocalDateTime.of(2019, 8, 10, 11, 15, 0); + LocalDateTime thirdTimestamp = LocalDateTime.of(2019, 8, 10, 11, 15, 0); // same as secondTimestamp + + assertThat(firstTimestamp.isAfter(secondTimestamp), is(true)); + assertThat(firstTimestamp.isBefore(secondTimestamp), is(false)); + + assertThat(firstTimestamp.isEqual(secondTimestamp), is(false)); + assertThat(firstTimestamp.equals(secondTimestamp), is(false)); + + assertThat(firstTimestamp.compareTo(secondTimestamp), is(1)); + assertThat(secondTimestamp.compareTo(firstTimestamp), is(-1)); + + assertThat(secondTimestamp.isAfter(thirdTimestamp), is(false)); + assertThat(secondTimestamp.isBefore(thirdTimestamp), is(false)); + assertThat(secondTimestamp.isEqual(thirdTimestamp), is(true)); + assertThat(secondTimestamp.compareTo(thirdTimestamp), is(0)); + } + + @Test + public void givenZonedDateTimes_whenComparing_thenAssertsPass() { + ZonedDateTime timeInNewYork = ZonedDateTime.of(2019, 8, 10, 8, 0, 0, 0, + ZoneId.of("America/New_York")); + ZonedDateTime timeInBerlin = ZonedDateTime.of(2019, 8, 10, 14, 0, 0, 0, + ZoneId.of("Europe/Berlin")); + + assertThat(timeInNewYork.isAfter(timeInBerlin), is(false)); + assertThat(timeInNewYork.isBefore(timeInBerlin), is(false)); + + assertThat(timeInNewYork.isEqual(timeInBerlin), is(true)); + assertThat(timeInNewYork.equals(timeInBerlin), is(false)); + + assertThat(timeInNewYork.compareTo(timeInBerlin), is(-1)); + } + + @Test + public void givenLocalTimes_whenComparing_thenAssertsPass() { + LocalTime firstTime = LocalTime.of(8, 30); + LocalTime secondTime = LocalTime.of(9, 45); + + assertThat(firstTime.isAfter(secondTime), is(false)); + assertThat(firstTime.isBefore(secondTime), is(true)); + + assertThat(firstTime.equals(secondTime), is(false)); + + assertThat(firstTime.compareTo(secondTime), is(-1)); + } +} \ No newline at end of file diff --git a/java-dates-2/src/test/java/com/baeldung/date/comparison/LegacyDateComparisonUtilsUnitTest.java b/java-dates-2/src/test/java/com/baeldung/date/comparison/LegacyDateComparisonUtilsUnitTest.java new file mode 100644 index 0000000000..a501cb8888 --- /dev/null +++ b/java-dates-2/src/test/java/com/baeldung/date/comparison/LegacyDateComparisonUtilsUnitTest.java @@ -0,0 +1,54 @@ +package com.baeldung.date.comparison; + +import org.junit.jupiter.api.Test; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Date; + +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; + +class LegacyDateComparisonUtilsUnitTest { + + private Date toDate(LocalDateTime localDateTime) { + return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); + } + + @Test + void givenDatesWithDifferentHours_whenIsSameDay_thenReturnsTrue() { + Date firstDate = toDate(LocalDateTime.of(2019, 8, 10, 11, 00, 00)); + Date secondDate = toDate(LocalDateTime.of(2019, 8, 10, 12, 00, 00)); + Date thirdDate = toDate(LocalDateTime.of(2019, 8, 15, 12, 00, 00)); + + assertThat(LegacyDateComparisonUtils.isSameDay(firstDate, secondDate), is(true)); + assertThat(LegacyDateComparisonUtils.isSameDay(secondDate, thirdDate), is(false)); + } + + @Test + void givenDatesWithingSameHour_whenIsSameHour_thenReturnsTrue() { + Date firstDate = toDate(LocalDateTime.of(2019, 8, 10, 11, 00, 00)); + Date secondDate = toDate(LocalDateTime.of(2019, 8, 10, 11, 15, 00)); + Date thirdDate = toDate(LocalDateTime.of(2019, 8, 10, 12, 00, 00)); + + assertThat(LegacyDateComparisonUtils.isSameHour(firstDate, secondDate), is(true)); + assertThat(LegacyDateComparisonUtils.isSameHour(secondDate, thirdDate), is(false)); + } + + @Test + void givenDates__whenComparing_thenAssertsPass() { + Date firstDate = toDate(LocalDateTime.of(2019, 8, 10, 0, 00, 00)); + Date secondDate = toDate(LocalDateTime.of(2019, 8, 15, 0, 00, 00)); + Date thirdDate = toDate(LocalDateTime.of(2019, 8, 15, 0, 00, 00)); // same date as secondDate + + assertThat(firstDate.after(secondDate), is(false)); + assertThat(firstDate.before(secondDate), is(true)); + assertThat(firstDate.compareTo(secondDate), is(-1)); + assertThat(firstDate.equals(secondDate), is(false)); + + assertThat(thirdDate.after(secondDate), is(false)); + assertThat(thirdDate.before(secondDate), is(false)); + assertThat(thirdDate.compareTo(secondDate), is(0)); + assertThat(thirdDate.equals(secondDate), is(true)); + } +} \ No newline at end of file diff --git a/java-math/README.md b/java-math/README.md index 244417d1a5..b0921e55ae 100644 --- a/java-math/README.md +++ b/java-math/README.md @@ -9,3 +9,4 @@ - [Calculate Percentage in Java](https://www.baeldung.com/java-calculate-percentage) - [Convert Latitude and Longitude to a 2D Point in Java](https://www.baeldung.com/java-convert-latitude-longitude) - [Debugging with Eclipse](https://www.baeldung.com/eclipse-debugging) +- [Matrix Multiplication in Java](https://www.baeldung.com/java-matrix-multiplication) diff --git a/java-numbers-2/README.md b/java-numbers-2/README.md index 52ffc822b9..1d2919aa63 100644 --- a/java-numbers-2/README.md +++ b/java-numbers-2/README.md @@ -1,2 +1,10 @@ ## Relevant Articles - [Lossy Conversion in Java](https://www.baeldung.com/java-lossy-conversion) +- [A Guide to the Java Math Class](https://www.baeldung.com/java-lang-math) +- [Calculate the Area of a Circle in Java](https://www.baeldung.com/java-calculate-circle-area) +- [NaN in Java](http://www.baeldung.com/java-not-a-number) +- [Generating Prime Numbers in Java](http://www.baeldung.com/java-generate-prime-numbers) +- [Using Math.pow in Java](http://www.baeldung.com/java-math-pow) +- [Check If a Number Is Prime in Java](http://www.baeldung.com/java-prime-numbers) +- [Binary Numbers in Java](https://www.baeldung.com/java-binary-numbers) +- [Finding the Least Common Multiple in Java](https://www.baeldung.com/java-least-common-multiple) diff --git a/java-numbers/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java b/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java rename to java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java diff --git a/java-numbers/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java b/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java rename to java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java diff --git a/java-numbers/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java b/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java rename to java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java diff --git a/java-numbers/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java b/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java rename to java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java diff --git a/java-numbers/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java b/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java rename to java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java diff --git a/java-numbers/src/main/java/com/baeldung/area/circle/Circle.java b/java-numbers-2/src/main/java/com/baeldung/area/circle/Circle.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/area/circle/Circle.java rename to java-numbers-2/src/main/java/com/baeldung/area/circle/Circle.java diff --git a/java-numbers/src/main/java/com/baeldung/area/circle/CircleArea.java b/java-numbers-2/src/main/java/com/baeldung/area/circle/CircleArea.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/area/circle/CircleArea.java rename to java-numbers-2/src/main/java/com/baeldung/area/circle/CircleArea.java diff --git a/java-numbers/src/main/java/com/baeldung/nan/NaNExample.java b/java-numbers-2/src/main/java/com/baeldung/nan/NaNExample.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/nan/NaNExample.java rename to java-numbers-2/src/main/java/com/baeldung/nan/NaNExample.java diff --git a/java-numbers/src/main/java/com/baeldung/pow/PowerExample.java b/java-numbers-2/src/main/java/com/baeldung/pow/PowerExample.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/pow/PowerExample.java rename to java-numbers-2/src/main/java/com/baeldung/pow/PowerExample.java diff --git a/java-numbers/src/main/java/com/baeldung/prime/PrimeGenerator.java b/java-numbers-2/src/main/java/com/baeldung/prime/PrimeGenerator.java similarity index 96% rename from java-numbers/src/main/java/com/baeldung/prime/PrimeGenerator.java rename to java-numbers-2/src/main/java/com/baeldung/prime/PrimeGenerator.java index 750807ce77..7511141a84 100644 --- a/java-numbers/src/main/java/com/baeldung/prime/PrimeGenerator.java +++ b/java-numbers-2/src/main/java/com/baeldung/prime/PrimeGenerator.java @@ -1,59 +1,59 @@ -package com.baeldung.prime; - -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - -public class PrimeGenerator { - public static List sieveOfEratosthenes(int n) { - final boolean prime[] = new boolean[n + 1]; - Arrays.fill(prime, true); - - for (int p = 2; p * p <= n; p++) { - if (prime[p]) { - for (int i = p * 2; i <= n; i += p) - prime[i] = false; - } - } - - final List primes = new LinkedList<>(); - for (int i = 2; i <= n; i++) { - if (prime[i]) - primes.add(i); - } - return primes; - } - - public static List primeNumbersBruteForce(int max) { - final List primeNumbers = new LinkedList(); - for (int i = 2; i <= max; i++) { - if (isPrimeBruteForce(i)) { - primeNumbers.add(i); - } - } - return primeNumbers; - } - - private static boolean isPrimeBruteForce(int x) { - for (int i = 2; i < x; i++) { - if (x % i == 0) { - return false; - } - } - return true; - } - - public static List primeNumbersTill(int max) { - return IntStream.rangeClosed(2, max) - .filter(x -> isPrime(x)) - .boxed() - .collect(Collectors.toList()); - } - - private static boolean isPrime(int x) { - return IntStream.rangeClosed(2, (int) (Math.sqrt(x))) - .allMatch(n -> x % n != 0); - } -} +package com.baeldung.prime; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class PrimeGenerator { + public static List sieveOfEratosthenes(int n) { + final boolean prime[] = new boolean[n + 1]; + Arrays.fill(prime, true); + + for (int p = 2; p * p <= n; p++) { + if (prime[p]) { + for (int i = p * 2; i <= n; i += p) + prime[i] = false; + } + } + + final List primes = new LinkedList<>(); + for (int i = 2; i <= n; i++) { + if (prime[i]) + primes.add(i); + } + return primes; + } + + public static List primeNumbersBruteForce(int max) { + final List primeNumbers = new LinkedList(); + for (int i = 2; i <= max; i++) { + if (isPrimeBruteForce(i)) { + primeNumbers.add(i); + } + } + return primeNumbers; + } + + private static boolean isPrimeBruteForce(int x) { + for (int i = 2; i < x; i++) { + if (x % i == 0) { + return false; + } + } + return true; + } + + public static List primeNumbersTill(int max) { + return IntStream.rangeClosed(2, max) + .filter(x -> isPrime(x)) + .boxed() + .collect(Collectors.toList()); + } + + private static boolean isPrime(int x) { + return IntStream.rangeClosed(2, (int) (Math.sqrt(x))) + .allMatch(n -> x % n != 0); + } +} diff --git a/java-numbers/src/test/java/com/baeldung/algorithms/primechecker/PrimeCheckerUnitTest.java b/java-numbers-2/src/test/java/com/baeldung/algorithms/primechecker/PrimeCheckerUnitTest.java similarity index 100% rename from java-numbers/src/test/java/com/baeldung/algorithms/primechecker/PrimeCheckerUnitTest.java rename to java-numbers-2/src/test/java/com/baeldung/algorithms/primechecker/PrimeCheckerUnitTest.java diff --git a/java-numbers/src/test/java/com/baeldung/java/math/MathUnitTest.java b/java-numbers-2/src/test/java/com/baeldung/java/math/MathUnitTest.java similarity index 100% rename from java-numbers/src/test/java/com/baeldung/java/math/MathUnitTest.java rename to java-numbers-2/src/test/java/com/baeldung/java/math/MathUnitTest.java diff --git a/java-numbers/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java b/java-numbers-2/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java similarity index 97% rename from java-numbers/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java rename to java-numbers-2/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java index 210bde076b..2509bd73d4 100644 --- a/java-numbers/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java +++ b/java-numbers-2/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java @@ -1,28 +1,29 @@ -package com.baeldung.prime; - -import java.util.Arrays; -import java.util.List; -import org.junit.Test; - -import static com.baeldung.prime.PrimeGenerator.*; -import static org.junit.Assert.*; - -public class PrimeGeneratorUnitTest { - @Test - public void whenBruteForced_returnsSuccessfully() { - final List primeNumbers = primeNumbersBruteForce(20); - assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); - } - - @Test - public void whenOptimized_returnsSuccessfully() { - final List primeNumbers = primeNumbersTill(20); - assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); - } - - @Test - public void whenSieveOfEratosthenes_returnsSuccessfully() { - final List primeNumbers = sieveOfEratosthenes(20); - assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); - } -} +package com.baeldung.prime; + +import org.junit.Test; + +import java.util.Arrays; +import java.util.List; + +import static com.baeldung.prime.PrimeGenerator.*; +import static org.junit.Assert.*; + +public class PrimeGeneratorUnitTest { + @Test + public void whenBruteForced_returnsSuccessfully() { + final List primeNumbers = primeNumbersBruteForce(20); + assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); + } + + @Test + public void whenOptimized_returnsSuccessfully() { + final List primeNumbers = primeNumbersTill(20); + assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); + } + + @Test + public void whenSieveOfEratosthenes_returnsSuccessfully() { + final List primeNumbers = sieveOfEratosthenes(20); + assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); + } +} diff --git a/java-numbers/README.md b/java-numbers/README.md index 2b1131f325..7885232c46 100644 --- a/java-numbers/README.md +++ b/java-numbers/README.md @@ -4,11 +4,7 @@ ### Relevant Articles: - [Number of Digits in an Integer in Java](http://www.baeldung.com/java-number-of-digits-in-int) -- [NaN in Java](http://www.baeldung.com/java-not-a-number) - [How to Round a Number to N Decimal Places in Java](http://www.baeldung.com/java-round-decimal-number) -- [Check If a Number Is Prime in Java](http://www.baeldung.com/java-prime-numbers) -- [Using Math.pow in Java](http://www.baeldung.com/java-math-pow) -- [Generating Prime Numbers in Java](http://www.baeldung.com/java-generate-prime-numbers) - [BigDecimal and BigInteger in Java](http://www.baeldung.com/java-bigdecimal-biginteger) - [Find All Pairs of Numbers in an Array That Add Up to a Given Sum](http://www.baeldung.com/java-algorithm-number-pairs-sum) - [Java – Random Long, Float, Integer and Double](http://www.baeldung.com/java-generate-random-long-float-integer-double) @@ -17,5 +13,3 @@ - [Calculating the nth Root in Java](https://www.baeldung.com/java-nth-root) - [Convert Double to String, Removing Decimal Places](https://www.baeldung.com/java-double-to-string) - [Changing the Order in a Sum Operation Can Produce Different Results?](https://www.baeldung.com/java-floating-point-sum-order) -- [Calculate the Area of a Circle in Java](https://www.baeldung.com/java-calculate-circle-area) -- [A Guide to the Java Math Class](https://www.baeldung.com/java-lang-math) \ No newline at end of file diff --git a/java-strings-3/pom.xml b/java-strings-3/pom.xml index 1e5f757943..4589780c15 100644 --- a/java-strings-3/pom.xml +++ b/java-strings-3/pom.xml @@ -68,6 +68,12 @@ ${assertj.version} test + + org.bitbucket.cowwoc + diff-match-patch + 1.2 + test + diff --git a/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java b/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java new file mode 100644 index 0000000000..20e87a1f4e --- /dev/null +++ b/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java @@ -0,0 +1,73 @@ +package com.baeldung.stringdiff; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.TimeUnit; + +import org.apache.commons.lang3.RandomStringUtils; +import org.apache.commons.lang3.StringUtils; +import org.bitbucket.cowwoc.diffmatchpatch.DiffMatchPatch; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +@BenchmarkMode(Mode.AverageTime) +@OutputTimeUnit(TimeUnit.MILLISECONDS) +@State(Scope.Benchmark) +public class StringDiffBenchmarkUnitTest { + + private DiffMatchPatch diffMatchPatch = new DiffMatchPatch(); + + private List inputs = randomizeInputs(10000); + + public static void main(String[] args) throws RunnerException { + Options opts = new OptionsBuilder().include(".*") + .warmupIterations(1) + .measurementIterations(50) + .jvmArgs("-Xms2g", "-Xmx2g") + .shouldDoGC(true) + .forks(1) + .build(); + + new Runner(opts).run(); + } + + @Benchmark + public int diffMatchPatch() { + for (int i = 0; i < inputs.size() - 1; i++) { + diffMatchPatch.diffMain(inputs.get(i), inputs.get(i + 1), false); + } + return inputs.size(); + } + + @Benchmark + public int stringUtils() { + for (int i = 0; i < inputs.size() - 1; i++) { + StringUtils.difference(inputs.get(i), inputs.get(i + 1)); + } + return inputs.size(); + } + + /** + * Creates a list of a given size, containing 30 character long strings, + * each starting with a static prefix of 10 characters and followed by + * a random 20 character suffix + * + * @return a {@link List} of randomised strings + */ + private List randomizeInputs(int size) { + String staticPart = "ABCDEF1234"; + List inputs = new ArrayList<>(); + for (int i = 0; i < size; i++) { + inputs.add(staticPart + RandomStringUtils.randomAlphabetic(20)); + } + return inputs; + } +} diff --git a/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java b/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java new file mode 100644 index 0000000000..94b7deb64d --- /dev/null +++ b/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java @@ -0,0 +1,39 @@ +package com.baeldung.stringdiff; + +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; + +import org.apache.commons.lang3.StringUtils; +import org.bitbucket.cowwoc.diffmatchpatch.DiffMatchPatch; +import org.bitbucket.cowwoc.diffmatchpatch.DiffMatchPatch.Operation; +import org.junit.Test; + +public class StringDiffUnitTest { + + private DiffMatchPatch diffMatchPatch = new DiffMatchPatch(); + + // Test samples + private final String text1 = "ABCDELMN"; + private final String text2 = "ABCFGLMN"; + + @Test + public void givenTwoStrings_whenDiffMatchPatch_thenReturnCorrectDiff() { + assertThat(diffMatchPatch.diffMain(text1, text2, false), containsInAnyOrder( + new DiffMatchPatch.Diff(Operation.EQUAL, "ABC"), + new DiffMatchPatch.Diff(Operation.DELETE, "DE"), + new DiffMatchPatch.Diff(Operation.INSERT, "FG"), + new DiffMatchPatch.Diff(Operation.EQUAL, "LMN"))); + assertThat(diffMatchPatch.diffMain(text2, text1, false), containsInAnyOrder( + new DiffMatchPatch.Diff(Operation.EQUAL, "ABC"), + new DiffMatchPatch.Diff(Operation.INSERT, "DE"), + new DiffMatchPatch.Diff(Operation.DELETE, "FG"), + new DiffMatchPatch.Diff(Operation.EQUAL, "LMN"))); + } + + @Test + public void givenTwoStrings_whenStringUtilsDifference_thenReturnCorrectDiff() { + assertThat(StringUtils.difference(text1, text2), is("FGLMN")); + assertThat(StringUtils.difference(text2, text1), is("DELMN")); + } +} diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/CompleteInfo.java b/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/CompleteInfo.java new file mode 100644 index 0000000000..c989ea3a6f --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/CompleteInfo.java @@ -0,0 +1,8 @@ +package org.baeldung.javabeanconstraints.validationgroup; + +import javax.validation.GroupSequence; + +@GroupSequence({BasicInfo.class, AdvanceInfo.class}) +public interface CompleteInfo { + +} diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationForm.java b/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationForm.java index 154d9821b6..ac8da5c26b 100644 --- a/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationForm.java +++ b/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationForm.java @@ -13,6 +13,9 @@ public class RegistrationForm { @NotBlank(groups = BasicInfo.class) private String phone; + @NotBlank(groups = { BasicInfo.class, AdvanceInfo.class }) + private String captcha; + @NotBlank(groups = AdvanceInfo.class) private String street; @NotBlank(groups = AdvanceInfo.class) @@ -95,5 +98,13 @@ public class RegistrationForm { public void setPhone(String phone) { this.phone = phone; } + + public String getCaptcha() { + return captcha; + } + + public void setCaptcha(String captcha) { + this.captcha = captcha; + } } diff --git a/javaxval/src/test/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationFormUnitTest.java b/javaxval/src/test/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationFormUnitTest.java index f8944524f3..bd7034476e 100644 --- a/javaxval/src/test/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationFormUnitTest.java +++ b/javaxval/src/test/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationFormUnitTest.java @@ -43,6 +43,61 @@ public class RegistrationFormUnitTest { }); } + @Test + public void whenCaptchaIsBlank_thenShouldGiveConstraintViolationsForBasicInfo() { + RegistrationForm form = buildRegistrationFormWithBasicInfo(); + form.setCaptcha(""); + Set> violations = validator.validate(form, BasicInfo.class); + assertThat(violations.size()).isEqualTo(1); + violations.forEach(action -> { + assertThat(action.getMessage()).isEqualTo("must not be blank"); + assertThat(action.getPropertyPath().toString()).isEqualTo("captcha"); + }); + } + + @Test + public void whenCaptchaIsBlank_thenShouldGiveConstraintViolationsForAdvanceInfo() { + RegistrationForm form = buildRegistrationFormWithAdvanceInfo(); + form.setCaptcha(""); + Set> violations = validator.validate(form, AdvanceInfo.class); + assertThat(violations.size()).isEqualTo(1); + violations.forEach(action -> { + assertThat(action.getMessage()).isEqualTo("must not be blank"); + assertThat(action.getPropertyPath().toString()).isEqualTo("captcha"); + }); + } + + @Test + public void whenBasicInfoIsNotComplete_thenShouldGiveConstraintViolationsForBasicInfoOnly() { + RegistrationForm form = buildRegistrationFormWithBasicInfo(); + form.setFirstName(""); + Set> violations = validator.validate(form, CompleteInfo.class); + assertThat(violations.size()).isEqualTo(1); + violations.forEach(action -> { + assertThat(action.getMessage()).isEqualTo("must not be blank"); + assertThat(action.getPropertyPath().toString()).isEqualTo("firstName"); + }); + } + + @Test + public void whenBasicInfoIsCompleteAndAdvanceInfoIsNotComplete_thenShouldGiveConstraintViolationsForAdvanceInfo() { + RegistrationForm form = buildRegistrationFormWithBasicAndAdvanceInfo(); + form.setZipCode(""); + Set> violations = validator.validate(form, CompleteInfo.class); + assertThat(violations.size()).isEqualTo(1); + violations.forEach(action -> { + assertThat(action.getMessage()).isEqualTo("must not be blank"); + assertThat(action.getPropertyPath().toString()).isEqualTo("zipCode"); + }); + } + + @Test + public void whenBasicAndAdvanceInfoIsComplete_thenShouldNotGiveConstraintViolationsWithCompleteInfoValidationGroup() { + RegistrationForm form = buildRegistrationFormWithBasicAndAdvanceInfo(); + Set> violations = validator.validate(form, CompleteInfo.class); + assertThat(violations.size()).isEqualTo(0); + } + @Test public void whenBasicAndAdvanceInfoIsComplete_thenShouldNotGiveConstraintViolations() { RegistrationForm form = buildRegistrationFormWithBasicAndAdvanceInfo(); @@ -56,6 +111,7 @@ public class RegistrationFormUnitTest { form.setLastName("kumar"); form.setEmail("anyemail@yopmail.com"); form.setPhone("12345"); + form.setCaptcha("Y2HAhU5T"); return form; } @@ -70,6 +126,7 @@ public class RegistrationFormUnitTest { form.setStreet("alexa str."); form.setZipCode("19923"); form.setHouseNumber("2a"); + form.setCaptcha("Y2HAhU5T"); return form; } diff --git a/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/Book.java b/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/Book.java new file mode 100644 index 0000000000..0625c58344 --- /dev/null +++ b/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/Book.java @@ -0,0 +1,25 @@ +package com.baeldung.jaxb.dateunmarshalling; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.datatype.XMLGregorianCalendar; + +@XmlRootElement(name = "book") +public class Book { + + @XmlElement(name = "title", required = true) + private String title; + + @XmlElement(name = "published", required = true) + private XMLGregorianCalendar published; + + public XMLGregorianCalendar getPublished() { + return published; + } + + @Override + public String toString() { + return "[title: " + title + "; published: " + published.toString() + "]"; + } + +} \ No newline at end of file diff --git a/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/BookDateAdapter.java b/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/BookDateAdapter.java new file mode 100644 index 0000000000..c882f37a04 --- /dev/null +++ b/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/BookDateAdapter.java @@ -0,0 +1,27 @@ +package com.baeldung.jaxb.dateunmarshalling; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import java.util.Date; + +@XmlRootElement(name = "book") +public class BookDateAdapter { + + @XmlElement(name = "title", required = true) + private String title; + + @XmlElement(name = "published", required = true) + @XmlJavaTypeAdapter(DateAdapter.class) + private Date published; + + public Date getPublished() { + return published; + } + + @Override + public String toString() { + return "[title: " + title + "; published: " + published.toString() + "]"; + } + +} \ No newline at end of file diff --git a/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/BookLocalDateTimeAdapter.java b/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/BookLocalDateTimeAdapter.java new file mode 100644 index 0000000000..53a780a87a --- /dev/null +++ b/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/BookLocalDateTimeAdapter.java @@ -0,0 +1,27 @@ +package com.baeldung.jaxb.dateunmarshalling; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import java.time.LocalDateTime; + +@XmlRootElement(name = "book") +public class BookLocalDateTimeAdapter { + + @XmlElement(name = "title", required = true) + private String title; + + @XmlElement(name = "published", required = true) + @XmlJavaTypeAdapter(LocalDateTimeAdapter.class) + private LocalDateTime published; + + public LocalDateTime getPublished() { + return published; + } + + @Override + public String toString() { + return "[title: " + title + "; published: " + published.toString() + "]"; + } + +} \ No newline at end of file diff --git a/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/DateAdapter.java b/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/DateAdapter.java new file mode 100644 index 0000000000..3b0fd0bd26 --- /dev/null +++ b/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/DateAdapter.java @@ -0,0 +1,21 @@ +package com.baeldung.jaxb.dateunmarshalling; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class DateAdapter extends XmlAdapter { + + private static final String CUSTOM_FORMAT_STRING = "yyyy-MM-dd HH:mm:ss"; + + @Override + public String marshal(Date v) { + return new SimpleDateFormat(CUSTOM_FORMAT_STRING).format(v); + } + + @Override + public Date unmarshal(String v) throws Exception { + return new SimpleDateFormat(CUSTOM_FORMAT_STRING).parse(v); + } + +} \ No newline at end of file diff --git a/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/JaxbDateUnmarshalling.java b/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/JaxbDateUnmarshalling.java new file mode 100644 index 0000000000..205859b2bf --- /dev/null +++ b/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/JaxbDateUnmarshalling.java @@ -0,0 +1,45 @@ +package com.baeldung.jaxb.dateunmarshalling; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Unmarshaller; +import java.io.InputStream; + +public class JaxbDateUnmarshalling { + + public static final String DEFAULT_DATE_UNMARSHALLING_FILE = "default-date-unmarshalling.xml"; + public static final String CUSTOM_DATE_UNMARSHALLING_FILE = "custom-date-unmarshalling.xml"; + + public static Book unmarshalDates(InputStream inputFile) throws JAXBException { + JAXBContext jaxbContext = JAXBContext.newInstance(Book.class); + Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); + return (Book) jaxbUnmarshaller.unmarshal(inputFile); + } + + public static BookDateAdapter unmarshalDatesUsingCustomXmlAdapter(InputStream inputFile) throws JAXBException { + JAXBContext jaxbContext = JAXBContext.newInstance(BookDateAdapter.class); + Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); + return (BookDateAdapter) jaxbUnmarshaller.unmarshal(inputFile); + } + + public static BookLocalDateTimeAdapter unmarshalDatesUsingJava8(InputStream inputFile) throws JAXBException { + JAXBContext jaxbContext = JAXBContext.newInstance(BookLocalDateTimeAdapter.class); + Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); + return (BookLocalDateTimeAdapter) jaxbUnmarshaller.unmarshal(inputFile); + } + + public static InputStream getInputStream(String file) { + ClassLoader classLoader = JaxbDateUnmarshalling.class.getClassLoader(); + return classLoader.getResourceAsStream(file); + } + + public static void main(String[] args) throws JAXBException { + Book book = unmarshalDates(getInputStream(DEFAULT_DATE_UNMARSHALLING_FILE)); + BookDateAdapter bookDateAdapter = unmarshalDatesUsingCustomXmlAdapter(getInputStream(CUSTOM_DATE_UNMARSHALLING_FILE)); + BookLocalDateTimeAdapter bookLocalDateTimeAdapter = unmarshalDatesUsingJava8(getInputStream(CUSTOM_DATE_UNMARSHALLING_FILE)); + System.out.println(book); + System.out.println(bookDateAdapter); + System.out.println(bookLocalDateTimeAdapter); + } + +} diff --git a/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/LocalDateTimeAdapter.java b/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/LocalDateTimeAdapter.java new file mode 100644 index 0000000000..7fa224334c --- /dev/null +++ b/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/LocalDateTimeAdapter.java @@ -0,0 +1,21 @@ +package com.baeldung.jaxb.dateunmarshalling; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public class LocalDateTimeAdapter extends XmlAdapter { + + private DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + @Override + public String marshal(LocalDateTime dateTime) { + return dateTime.format(dateFormat); + } + + @Override + public LocalDateTime unmarshal(String dateTime) { + return LocalDateTime.parse(dateTime, dateFormat); + } + +} \ No newline at end of file diff --git a/jaxb/src/main/resources/custom-date-unmarshalling.xml b/jaxb/src/main/resources/custom-date-unmarshalling.xml new file mode 100644 index 0000000000..f4cc7a4f79 --- /dev/null +++ b/jaxb/src/main/resources/custom-date-unmarshalling.xml @@ -0,0 +1,5 @@ + + + Book1 + 1979-11-28 02:31:32 + \ No newline at end of file diff --git a/jaxb/src/main/resources/default-date-unmarshalling.xml b/jaxb/src/main/resources/default-date-unmarshalling.xml new file mode 100644 index 0000000000..44cfa7e6c5 --- /dev/null +++ b/jaxb/src/main/resources/default-date-unmarshalling.xml @@ -0,0 +1,5 @@ + + + Book1 + 1979-11-28T02:31:32 + \ No newline at end of file diff --git a/jaxb/src/test/java/com/baeldung/jaxb/dateunmarshalling/JaxbDateUnmarshallingUnitTest.java b/jaxb/src/test/java/com/baeldung/jaxb/dateunmarshalling/JaxbDateUnmarshallingUnitTest.java new file mode 100644 index 0000000000..298034be3d --- /dev/null +++ b/jaxb/src/test/java/com/baeldung/jaxb/dateunmarshalling/JaxbDateUnmarshallingUnitTest.java @@ -0,0 +1,52 @@ +package com.baeldung.jaxb.dateunmarshalling; + +import org.junit.Test; + +import javax.xml.bind.JAXBException; +import javax.xml.datatype.DatatypeConfigurationException; +import javax.xml.datatype.DatatypeFactory; +import javax.xml.datatype.XMLGregorianCalendar; +import java.io.InputStream; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Date; + +import static org.junit.Assert.assertEquals; + +public class JaxbDateUnmarshallingUnitTest { + + @Test + public void whenUnmarshalDatesIsCalled_ThenCorrectDateIsReturned() throws JAXBException, DatatypeConfigurationException { + InputStream inputStream = JaxbDateUnmarshalling.getInputStream(JaxbDateUnmarshalling.DEFAULT_DATE_UNMARSHALLING_FILE); + XMLGregorianCalendar expected = DatatypeFactory.newInstance().newXMLGregorianCalendar("1979-11-28T02:31:32"); + + Book book = JaxbDateUnmarshalling.unmarshalDates(inputStream); + + assertEquals(expected, book.getPublished()); + } + + @Test + public void whenUnmarshalDatesUsingCustomXmlAdapterIsCalled_ThenCorrectDateIsReturned() throws JAXBException, ParseException { + InputStream inputStream = JaxbDateUnmarshalling.getInputStream(JaxbDateUnmarshalling.CUSTOM_DATE_UNMARSHALLING_FILE); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); + Date expected = format.parse("1979-11-28 02:31:32"); + + BookDateAdapter book = JaxbDateUnmarshalling.unmarshalDatesUsingCustomXmlAdapter(inputStream); + + assertEquals(expected, book.getPublished()); + } + + @Test + public void whenUnmarshalDatesUsingJava8IsCalled_ThenCorrectDateIsReturned() throws JAXBException { + InputStream inputStream = JaxbDateUnmarshalling.getInputStream(JaxbDateUnmarshalling.CUSTOM_DATE_UNMARSHALLING_FILE); + DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime expected = LocalDateTime.parse("1979-11-28 02:31:32", dateFormat); + + BookLocalDateTimeAdapter book = JaxbDateUnmarshalling.unmarshalDatesUsingJava8(inputStream); + + assertEquals(expected, book.getPublished()); + } + +} \ No newline at end of file diff --git a/kotlin-libraries/pom.xml b/kotlin-libraries/pom.xml index e252329426..5299b5029e 100644 --- a/kotlin-libraries/pom.xml +++ b/kotlin-libraries/pom.xml @@ -100,7 +100,7 @@ io.arrow-kt arrow-core - 0.7.3 + ${arrow-core.version} @@ -117,7 +117,7 @@ nl.komponents.kovenant kovenant - 3.3.0 + ${kovenant.version} pom @@ -132,13 +132,13 @@ com.google.guava guava - 27.1-jre + ${guava.version} org.jetbrains.kotlinx kotlinx-collections-immutable - 0.1 + ${kotlinx-collections-immutable.version} @@ -151,26 +151,26 @@ net.bytebuddy byte-buddy - 1.8.13 + ${byte-buddy.version} compile net.bytebuddy byte-buddy-agent - 1.8.13 + ${byte-buddy.version} compile org.objenesis objenesis - 2.6 + ${objenesis.version} compile io.reactivex.rxjava2 rxkotlin - 2.3.0 + ${rxkotlin.version} @@ -186,6 +186,13 @@ 3.10.0 0.10.4 1.9.3 + 27.1-jre + 3.3.0 + 1.8.13 + 2.6 + 2.3.0 + 0.1 + 0.7.3 diff --git a/libraries-2/README.md b/libraries-2/README.md index 400aa475d1..7d7fc67fa7 100644 --- a/libraries-2/README.md +++ b/libraries-2/README.md @@ -8,6 +8,5 @@ - [A Guide to Crawler4j](https://www.baeldung.com/crawler4j) - [Decode an OkHttp JSON Response](https://www.baeldung.com/okhttp-json-response) - [Key Value Store with Chronicle Map](https://www.baeldung.com/java-chronicle-map) -- [Matrix Multiplication in Java](https://www.baeldung.com/java-matrix-multiplication) - [Guide to MapDB](https://www.baeldung.com/mapdb) - [A Guide to Apache Mesos](https://www.baeldung.com/apache-mesos) diff --git a/libraries-apache-commons-collections/README.md b/libraries-apache-commons-collections/README.md new file mode 100644 index 0000000000..998ad1da09 --- /dev/null +++ b/libraries-apache-commons-collections/README.md @@ -0,0 +1,13 @@ +## Apache Commons Collections + +This module contains articles about Apache Commons Collections + +### Relevant articles + +- [Apache Commons Collections SetUtils](https://www.baeldung.com/apache-commons-setutils) +- [Apache Commons Collections OrderedMap](https://www.baeldung.com/apache-commons-ordered-map) +- [Guide to Apache Commons CircularFifoQueue](https://www.baeldung.com/commons-circular-fifo-queue) +- [Apache Commons Collections Bag](https://www.baeldung.com/apache-commons-bag) +- [A Guide to Apache Commons Collections CollectionUtils](https://www.baeldung.com/apache-commons-collection-utils) +- [Apache Commons Collections BidiMap](https://www.baeldung.com/commons-collections-bidi-map) +- [Apache Commons Collections MapUtils](https://www.baeldung.com/apache-commons-map-utils) \ No newline at end of file diff --git a/libraries-apache-commons-collections/pom.xml b/libraries-apache-commons-collections/pom.xml new file mode 100644 index 0000000000..eba0ad331e --- /dev/null +++ b/libraries-apache-commons-collections/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + libraries-apache-commons-collections + libraries-apache-commons-collections + + + parent-modules + com.baeldung + 1.0.0-SNAPSHOT + + + + + org.apache.commons + commons-collections4 + ${commons.collections.version} + + + org.hamcrest + java-hamcrest + ${org.hamcrest.java-hamcrest.version} + test + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + 4.1 + 3.6.2 + 2.0.0.0 + + + diff --git a/libraries-apache-commons/src/main/java/com/baeldung/commons/collectionutil/Address.java b/libraries-apache-commons-collections/src/main/java/com/baeldung/commons/collections/collectionutils/Address.java similarity index 94% rename from libraries-apache-commons/src/main/java/com/baeldung/commons/collectionutil/Address.java rename to libraries-apache-commons-collections/src/main/java/com/baeldung/commons/collections/collectionutils/Address.java index a1e231ec85..02c36a46f9 100644 --- a/libraries-apache-commons/src/main/java/com/baeldung/commons/collectionutil/Address.java +++ b/libraries-apache-commons-collections/src/main/java/com/baeldung/commons/collections/collectionutils/Address.java @@ -1,4 +1,4 @@ -package com.baeldung.commons.collectionutil; +package com.baeldung.commons.collections.collectionutils; public class Address { diff --git a/libraries-apache-commons/src/main/java/com/baeldung/commons/collectionutil/Customer.java b/libraries-apache-commons-collections/src/main/java/com/baeldung/commons/collections/collectionutils/Customer.java similarity index 97% rename from libraries-apache-commons/src/main/java/com/baeldung/commons/collectionutil/Customer.java rename to libraries-apache-commons-collections/src/main/java/com/baeldung/commons/collections/collectionutils/Customer.java index 1c6a8dc4f1..7d6db68474 100644 --- a/libraries-apache-commons/src/main/java/com/baeldung/commons/collectionutil/Customer.java +++ b/libraries-apache-commons-collections/src/main/java/com/baeldung/commons/collections/collectionutils/Customer.java @@ -1,4 +1,4 @@ -package com.baeldung.commons.collectionutil; +package com.baeldung.commons.collections.collectionutils; public class Customer implements Comparable { diff --git a/libraries-apache-commons/src/test/java/com/baeldung/commons/collections4/BagUnitTest.java b/libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/BagUnitTest.java similarity index 98% rename from libraries-apache-commons/src/test/java/com/baeldung/commons/collections4/BagUnitTest.java rename to libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/BagUnitTest.java index ebad4093f0..0877e6d4ac 100644 --- a/libraries-apache-commons/src/test/java/com/baeldung/commons/collections4/BagUnitTest.java +++ b/libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/BagUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.commons.collections4; +package com.baeldung.commons.collections; import org.apache.commons.collections4.Bag; import org.apache.commons.collections4.SortedBag; diff --git a/libraries-apache-commons/src/test/java/com/baeldung/commons/collections/BidiMapUnitTest.java b/libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/BidiMapUnitTest.java similarity index 100% rename from libraries-apache-commons/src/test/java/com/baeldung/commons/collections/BidiMapUnitTest.java rename to libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/BidiMapUnitTest.java diff --git a/libraries-apache-commons/src/test/java/com/baeldung/commons/collections/MapUtilsUnitTest.java b/libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/MapUtilsUnitTest.java similarity index 100% rename from libraries-apache-commons/src/test/java/com/baeldung/commons/collections/MapUtilsUnitTest.java rename to libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/MapUtilsUnitTest.java diff --git a/libraries-apache-commons/src/test/java/com/baeldung/commons/collections/SetUtilsUnitTest.java b/libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/SetUtilsUnitTest.java similarity index 100% rename from libraries-apache-commons/src/test/java/com/baeldung/commons/collections/SetUtilsUnitTest.java rename to libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/SetUtilsUnitTest.java diff --git a/libraries-apache-commons/src/test/java/com/baeldung/circularfifoqueue/CircularFifoQueueUnitTest.java b/libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/circularfifoqueue/CircularFifoQueueUnitTest.java similarity index 98% rename from libraries-apache-commons/src/test/java/com/baeldung/circularfifoqueue/CircularFifoQueueUnitTest.java rename to libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/circularfifoqueue/CircularFifoQueueUnitTest.java index 39384a7442..5664c7b44e 100644 --- a/libraries-apache-commons/src/test/java/com/baeldung/circularfifoqueue/CircularFifoQueueUnitTest.java +++ b/libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/circularfifoqueue/CircularFifoQueueUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.circularfifoqueue; +package com.baeldung.commons.collections.circularfifoqueue; import java.util.ArrayList; import java.util.List; diff --git a/libraries-apache-commons/src/test/java/com/baeldung/commons/collections/CollectionUtilsGuideUnitTest.java b/libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/collectionutils/CollectionUtilsGuideUnitTest.java similarity index 96% rename from libraries-apache-commons/src/test/java/com/baeldung/commons/collections/CollectionUtilsGuideUnitTest.java rename to libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/collectionutils/CollectionUtilsGuideUnitTest.java index 448c5b0729..e9a4612280 100644 --- a/libraries-apache-commons/src/test/java/com/baeldung/commons/collections/CollectionUtilsGuideUnitTest.java +++ b/libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/collectionutils/CollectionUtilsGuideUnitTest.java @@ -1,7 +1,7 @@ -package com.baeldung.commons.collections; +package com.baeldung.commons.collections.collectionutils; -import com.baeldung.commons.collectionutil.Address; -import com.baeldung.commons.collectionutil.Customer; +import com.baeldung.commons.collections.collectionutils.Address; +import com.baeldung.commons.collections.collectionutils.Customer; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.Predicate; import org.apache.commons.collections4.Transformer; diff --git a/libraries-apache-commons/src/test/java/com/baeldung/commons/collections/orderedmap/OrderedMapUnitTest.java b/libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/orderedmap/OrderedMapUnitTest.java similarity index 97% rename from libraries-apache-commons/src/test/java/com/baeldung/commons/collections/orderedmap/OrderedMapUnitTest.java rename to libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/orderedmap/OrderedMapUnitTest.java index c64143cba7..1ffc4a825f 100644 --- a/libraries-apache-commons/src/test/java/com/baeldung/commons/collections/orderedmap/OrderedMapUnitTest.java +++ b/libraries-apache-commons-collections/src/test/java/com/baeldung/commons/collections/orderedmap/OrderedMapUnitTest.java @@ -1,211 +1,211 @@ -package com.baeldung.commons.collections.orderedmap; - -import org.apache.commons.collections4.OrderedMap; -import org.apache.commons.collections4.OrderedMapIterator; -import org.apache.commons.collections4.map.LinkedMap; -import org.apache.commons.collections4.map.ListOrderedMap; -import org.junit.Before; -import org.junit.Test; - -import java.util.ArrayList; -import java.util.List; - -import static org.junit.Assert.assertEquals; - -public class OrderedMapUnitTest { - - private String[] names = { "Emily", "Mathew", "Rose", "John", "Anna" }; - private Integer[] ages = { 37, 28, 40, 36, 21 }; - - private int RUNNERS_COUNT = names.length; - - private OrderedMap runnersLinkedMap; - private OrderedMap runnersListOrderedMap; - - @Before - public void createRunners() { - // First implementation: ListOrderedMap - this.runnersListOrderedMap = new ListOrderedMap<>(); - this.loadOrderedMapOfRunners(this.runnersListOrderedMap); - - // Second implementation: LinkedMap - this.runnersLinkedMap = new LinkedMap<>(); - this.loadOrderedMapOfRunners(this.runnersLinkedMap); - } - - private void loadOrderedMapOfRunners(OrderedMap runners) { - for (int i = 0; i < RUNNERS_COUNT; i++) { - runners.put(this.names[i], this.ages[i]); - } - } - - @Test - public void givenALinkedMap_whenIteratedWithMapIterator_thenPreservesOrder() { - // Tests that the order in map iterator is the same - // as defined in the constant arrays of names and ages: - - OrderedMapIterator runnersIterator = this.runnersLinkedMap.mapIterator(); - int i = 0; - while (runnersIterator.hasNext()) { - runnersIterator.next(); - assertEquals(runnersIterator.getKey(), this.names[i]); - assertEquals(runnersIterator.getValue(), this.ages[i]); - i++; - } - } - - @Test - public void givenAListOrderedMap_whenIteratedWithMapIterator_thenPreservesOrder() { - // Tests that the order in map iterator is the same - // as defined in the constant arrays of names and ages: - - OrderedMapIterator runnersIterator = this.runnersListOrderedMap.mapIterator(); - int i = 0; - while (runnersIterator.hasNext()) { - runnersIterator.next(); - assertEquals(runnersIterator.getKey(), this.names[i]); - assertEquals(runnersIterator.getValue(), this.ages[i]); - i++; - } - } - - @Test - public void givenALinkedMap_whenIteratedForwards_thenPreservesOrder() { - // Tests that the order in the forward iteration is the same - // as defined in the constant arrays of names and ages - - String name = this.runnersLinkedMap.firstKey(); - int i = 0; - while (name != null) { - assertEquals(name, this.names[i]); - name = this.runnersLinkedMap.nextKey(name); - i++; - } - } - - @Test - public void givenAListOrderedMap_whenIteratedForwards_thenPreservesOrder() { - // Tests that the order in the forward iteration is the same - // as defined in the constant arrays of names and ages - - String name = this.runnersListOrderedMap.firstKey(); - int i = 0; - while (name != null) { - assertEquals(name, this.names[i]); - name = this.runnersListOrderedMap.nextKey(name); - i++; - } - } - - @Test - public void givenALinkedMap_whenIteratedBackwards_thenPreservesOrder() { - // Tests that the order in the backwards iteration is the same - // as defined in the constant arrays of names and ages - - String name = this.runnersLinkedMap.lastKey(); - int i = RUNNERS_COUNT - 1; - while (name != null) { - assertEquals(name, this.names[i]); - name = this.runnersLinkedMap.previousKey(name); - i--; - } - } - - @Test - public void givenAListOrderedMap_whenIteratedBackwards_thenPreservesOrder() { - // Tests that the order in the backwards iteration is the same - // as defined in the constant arrays of names and ages - - String name = this.runnersListOrderedMap.lastKey(); - int i = RUNNERS_COUNT - 1; - while (name != null) { - assertEquals(name, this.names[i]); - name = this.runnersListOrderedMap.previousKey(name); - i--; - } - } - - @Test - public void givenALinkedMap_whenObjectIsSearched_thenMatchesConstantArray() { - assertEquals(ages[4], this.runnersLinkedMap.get("Anna")); - } - - @Test - public void givenALinkedMap_whenConvertedToList_thenMatchesKeySet() { - // Casting the OrderedMap to a LinkedMap we can use asList() method - - LinkedMap lmap = (LinkedMap) this.runnersLinkedMap; - List listKeys = new ArrayList<>(); - listKeys.addAll(this.runnersLinkedMap.keySet()); - List linkedMap = lmap.asList(); - assertEquals(listKeys, linkedMap); - } - - @Test - public void givenALinkedMap_whenSearchByIndexIsUsed_thenMatchesConstantArray() { - LinkedMap lmap = (LinkedMap) this.runnersLinkedMap; - - for (int i = 0; i < RUNNERS_COUNT; i++) { - // accessed by index: - String name = lmap.get(i); - assertEquals(name, this.names[i]); - - // index of key concides with position in array - assertEquals(lmap.indexOf(this.names[i]), i); - } - } - - @Test - public void givenALinkedMap_whenElementRemoved_thenSizeDecrease() { - LinkedMap lmap = (LinkedMap) this.runnersLinkedMap; - Integer johnAge = lmap.remove("John");// by object - assertEquals(johnAge, new Integer(36)); - assertEquals(lmap.size(), RUNNERS_COUNT - 1); - - Integer emilyAge = lmap.remove(0);// by index - assertEquals(emilyAge, new Integer(37)); - assertEquals(lmap.size(), RUNNERS_COUNT - 2); - } - - @Test - public void givenAListOrderedMap_whenObjectIsSearched_thenMatchesConstantArray() { - assertEquals(ages[4], this.runnersListOrderedMap.get("Anna")); - } - - @Test - public void givenAListOrderedMap_whenConvertedToList_thenMatchesKeySet() { - ListOrderedMap lomap = (ListOrderedMap) this.runnersListOrderedMap; - List listKeys = new ArrayList<>(); - listKeys.addAll(this.runnersListOrderedMap.keySet()); - List lomapList = lomap.asList(); - assertEquals(listKeys, lomapList); - } - - @Test - public void givenAListOrderedMap_whenSearchByIndexIsUsed_thenMatchesConstantArray() { - ListOrderedMap lomap = (ListOrderedMap) this.runnersListOrderedMap; - - for (int i = 0; i < RUNNERS_COUNT; i++) { - // accessed by index: - String name = lomap.get(i); - assertEquals(name, this.names[i]); - - // index of key concides with position in array - assertEquals(lomap.indexOf(this.names[i]), i); - } - } - - @Test - public void givenAListOrderedMap_whenElementRemoved_thenSizeDecrease() { - ListOrderedMap lomap = (ListOrderedMap) this.runnersListOrderedMap; - - Integer johnAge = lomap.remove("John");// by object - - assertEquals(johnAge, new Integer(36)); - assertEquals(lomap.size(), RUNNERS_COUNT - 1); - - Integer emilyAge = lomap.remove(0);// by index - assertEquals(emilyAge, new Integer(37)); - assertEquals(lomap.size(), RUNNERS_COUNT - 2); - } -} +package com.baeldung.commons.collections.orderedmap; + +import org.apache.commons.collections4.OrderedMap; +import org.apache.commons.collections4.OrderedMapIterator; +import org.apache.commons.collections4.map.LinkedMap; +import org.apache.commons.collections4.map.ListOrderedMap; +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.assertEquals; + +public class OrderedMapUnitTest { + + private String[] names = { "Emily", "Mathew", "Rose", "John", "Anna" }; + private Integer[] ages = { 37, 28, 40, 36, 21 }; + + private int RUNNERS_COUNT = names.length; + + private OrderedMap runnersLinkedMap; + private OrderedMap runnersListOrderedMap; + + @Before + public void createRunners() { + // First implementation: ListOrderedMap + this.runnersListOrderedMap = new ListOrderedMap<>(); + this.loadOrderedMapOfRunners(this.runnersListOrderedMap); + + // Second implementation: LinkedMap + this.runnersLinkedMap = new LinkedMap<>(); + this.loadOrderedMapOfRunners(this.runnersLinkedMap); + } + + private void loadOrderedMapOfRunners(OrderedMap runners) { + for (int i = 0; i < RUNNERS_COUNT; i++) { + runners.put(this.names[i], this.ages[i]); + } + } + + @Test + public void givenALinkedMap_whenIteratedWithMapIterator_thenPreservesOrder() { + // Tests that the order in map iterator is the same + // as defined in the constant arrays of names and ages: + + OrderedMapIterator runnersIterator = this.runnersLinkedMap.mapIterator(); + int i = 0; + while (runnersIterator.hasNext()) { + runnersIterator.next(); + assertEquals(runnersIterator.getKey(), this.names[i]); + assertEquals(runnersIterator.getValue(), this.ages[i]); + i++; + } + } + + @Test + public void givenAListOrderedMap_whenIteratedWithMapIterator_thenPreservesOrder() { + // Tests that the order in map iterator is the same + // as defined in the constant arrays of names and ages: + + OrderedMapIterator runnersIterator = this.runnersListOrderedMap.mapIterator(); + int i = 0; + while (runnersIterator.hasNext()) { + runnersIterator.next(); + assertEquals(runnersIterator.getKey(), this.names[i]); + assertEquals(runnersIterator.getValue(), this.ages[i]); + i++; + } + } + + @Test + public void givenALinkedMap_whenIteratedForwards_thenPreservesOrder() { + // Tests that the order in the forward iteration is the same + // as defined in the constant arrays of names and ages + + String name = this.runnersLinkedMap.firstKey(); + int i = 0; + while (name != null) { + assertEquals(name, this.names[i]); + name = this.runnersLinkedMap.nextKey(name); + i++; + } + } + + @Test + public void givenAListOrderedMap_whenIteratedForwards_thenPreservesOrder() { + // Tests that the order in the forward iteration is the same + // as defined in the constant arrays of names and ages + + String name = this.runnersListOrderedMap.firstKey(); + int i = 0; + while (name != null) { + assertEquals(name, this.names[i]); + name = this.runnersListOrderedMap.nextKey(name); + i++; + } + } + + @Test + public void givenALinkedMap_whenIteratedBackwards_thenPreservesOrder() { + // Tests that the order in the backwards iteration is the same + // as defined in the constant arrays of names and ages + + String name = this.runnersLinkedMap.lastKey(); + int i = RUNNERS_COUNT - 1; + while (name != null) { + assertEquals(name, this.names[i]); + name = this.runnersLinkedMap.previousKey(name); + i--; + } + } + + @Test + public void givenAListOrderedMap_whenIteratedBackwards_thenPreservesOrder() { + // Tests that the order in the backwards iteration is the same + // as defined in the constant arrays of names and ages + + String name = this.runnersListOrderedMap.lastKey(); + int i = RUNNERS_COUNT - 1; + while (name != null) { + assertEquals(name, this.names[i]); + name = this.runnersListOrderedMap.previousKey(name); + i--; + } + } + + @Test + public void givenALinkedMap_whenObjectIsSearched_thenMatchesConstantArray() { + assertEquals(ages[4], this.runnersLinkedMap.get("Anna")); + } + + @Test + public void givenALinkedMap_whenConvertedToList_thenMatchesKeySet() { + // Casting the OrderedMap to a LinkedMap we can use asList() method + + LinkedMap lmap = (LinkedMap) this.runnersLinkedMap; + List listKeys = new ArrayList<>(); + listKeys.addAll(this.runnersLinkedMap.keySet()); + List linkedMap = lmap.asList(); + assertEquals(listKeys, linkedMap); + } + + @Test + public void givenALinkedMap_whenSearchByIndexIsUsed_thenMatchesConstantArray() { + LinkedMap lmap = (LinkedMap) this.runnersLinkedMap; + + for (int i = 0; i < RUNNERS_COUNT; i++) { + // accessed by index: + String name = lmap.get(i); + assertEquals(name, this.names[i]); + + // index of key concides with position in array + assertEquals(lmap.indexOf(this.names[i]), i); + } + } + + @Test + public void givenALinkedMap_whenElementRemoved_thenSizeDecrease() { + LinkedMap lmap = (LinkedMap) this.runnersLinkedMap; + Integer johnAge = lmap.remove("John");// by object + assertEquals(johnAge, new Integer(36)); + assertEquals(lmap.size(), RUNNERS_COUNT - 1); + + Integer emilyAge = lmap.remove(0);// by index + assertEquals(emilyAge, new Integer(37)); + assertEquals(lmap.size(), RUNNERS_COUNT - 2); + } + + @Test + public void givenAListOrderedMap_whenObjectIsSearched_thenMatchesConstantArray() { + assertEquals(ages[4], this.runnersListOrderedMap.get("Anna")); + } + + @Test + public void givenAListOrderedMap_whenConvertedToList_thenMatchesKeySet() { + ListOrderedMap lomap = (ListOrderedMap) this.runnersListOrderedMap; + List listKeys = new ArrayList<>(); + listKeys.addAll(this.runnersListOrderedMap.keySet()); + List lomapList = lomap.asList(); + assertEquals(listKeys, lomapList); + } + + @Test + public void givenAListOrderedMap_whenSearchByIndexIsUsed_thenMatchesConstantArray() { + ListOrderedMap lomap = (ListOrderedMap) this.runnersListOrderedMap; + + for (int i = 0; i < RUNNERS_COUNT; i++) { + // accessed by index: + String name = lomap.get(i); + assertEquals(name, this.names[i]); + + // index of key concides with position in array + assertEquals(lomap.indexOf(this.names[i]), i); + } + } + + @Test + public void givenAListOrderedMap_whenElementRemoved_thenSizeDecrease() { + ListOrderedMap lomap = (ListOrderedMap) this.runnersListOrderedMap; + + Integer johnAge = lomap.remove("John");// by object + + assertEquals(johnAge, new Integer(36)); + assertEquals(lomap.size(), RUNNERS_COUNT - 1); + + Integer emilyAge = lomap.remove(0);// by index + assertEquals(emilyAge, new Integer(37)); + assertEquals(lomap.size(), RUNNERS_COUNT - 2); + } +} diff --git a/libraries-apache-commons-io/README.md b/libraries-apache-commons-io/README.md new file mode 100644 index 0000000000..d5f29499d2 --- /dev/null +++ b/libraries-apache-commons-io/README.md @@ -0,0 +1,7 @@ +## Apache Commons Collections + +This module contains articles about Apache Commons IO + +### Relevant articles +- [Apache Commons IO](https://www.baeldung.com/apache-commons-io) +- [Introduction to Apache Commons CSV](https://www.baeldung.com/apache-commons-csv) diff --git a/libraries-apache-commons-io/pom.xml b/libraries-apache-commons-io/pom.xml new file mode 100644 index 0000000000..7ec71d8264 --- /dev/null +++ b/libraries-apache-commons-io/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + libraries-apache-commons-io + libraries-apache-commons-io + + + parent-modules + com.baeldung + 1.0.0-SNAPSHOT + + + + + org.apache.commons + commons-csv + ${commons-csv.version} + + + commons-io + commons-io + ${commons-io.version} + + + + + 1.4 + + + diff --git a/libraries-apache-commons/src/main/java/com/baeldung/commons/io/FileMonitor.java b/libraries-apache-commons-io/src/main/java/com/baeldung/commons/io/FileMonitor.java similarity index 100% rename from libraries-apache-commons/src/main/java/com/baeldung/commons/io/FileMonitor.java rename to libraries-apache-commons-io/src/main/java/com/baeldung/commons/io/FileMonitor.java diff --git a/libraries-apache-commons/src/test/java/com/baeldung/commons/io/CommonsIOUnitTest.java b/libraries-apache-commons-io/src/test/java/com/baeldung/commons/io/CommonsIOUnitTest.java similarity index 100% rename from libraries-apache-commons/src/test/java/com/baeldung/commons/io/CommonsIOUnitTest.java rename to libraries-apache-commons-io/src/test/java/com/baeldung/commons/io/CommonsIOUnitTest.java diff --git a/libraries-apache-commons/src/test/java/com/baeldung/commons/csv/CSVReaderWriterUnitTest.java b/libraries-apache-commons-io/src/test/java/com/baeldung/commons/io/csv/CSVReaderWriterUnitTest.java similarity index 98% rename from libraries-apache-commons/src/test/java/com/baeldung/commons/csv/CSVReaderWriterUnitTest.java rename to libraries-apache-commons-io/src/test/java/com/baeldung/commons/io/csv/CSVReaderWriterUnitTest.java index f93e59ed75..b99f4e8bc3 100644 --- a/libraries-apache-commons/src/test/java/com/baeldung/commons/csv/CSVReaderWriterUnitTest.java +++ b/libraries-apache-commons-io/src/test/java/com/baeldung/commons/io/csv/CSVReaderWriterUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.commons.csv; +package com.baeldung.commons.io.csv; import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVPrinter; diff --git a/libraries-apache-commons/src/test/resources/aaa.txt b/libraries-apache-commons-io/src/test/resources/aaa.txt similarity index 100% rename from libraries-apache-commons/src/test/resources/aaa.txt rename to libraries-apache-commons-io/src/test/resources/aaa.txt diff --git a/libraries-apache-commons/src/test/resources/book.csv b/libraries-apache-commons-io/src/test/resources/book.csv similarity index 100% rename from libraries-apache-commons/src/test/resources/book.csv rename to libraries-apache-commons-io/src/test/resources/book.csv diff --git a/libraries-apache-commons/src/test/resources/fileTest.txt b/libraries-apache-commons-io/src/test/resources/fileTest.txt similarity index 100% rename from libraries-apache-commons/src/test/resources/fileTest.txt rename to libraries-apache-commons-io/src/test/resources/fileTest.txt diff --git a/libraries-apache-commons/src/test/resources/sample.txt b/libraries-apache-commons-io/src/test/resources/sample.txt similarity index 100% rename from libraries-apache-commons/src/test/resources/sample.txt rename to libraries-apache-commons-io/src/test/resources/sample.txt diff --git a/libraries-apache-commons/.gitignore b/libraries-apache-commons/.gitignore deleted file mode 100644 index e594daf27a..0000000000 --- a/libraries-apache-commons/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -*.class - -# Folders # -/gensrc -/target - -# Packaged files # -*.jar -/bin/ diff --git a/libraries-apache-commons/README.md b/libraries-apache-commons/README.md index 01f2379588..ae424cb6c5 100644 --- a/libraries-apache-commons/README.md +++ b/libraries-apache-commons/README.md @@ -1,20 +1,11 @@ ### Relevant articles -- [Array Processing with Apache Commons Lang 3](http://www.baeldung.com/array-processing-commons-lang) -- [String Processing with Apache Commons Lang 3](http://www.baeldung.com/string-processing-commons-lang) -- [Introduction to Apache Commons Math](http://www.baeldung.com/apache-commons-math) -- [Apache Commons Collections SetUtils](http://www.baeldung.com/apache-commons-setutils) -- [Apache Commons Collections OrderedMap](http://www.baeldung.com/apache-commons-ordered-map) -- [Introduction to Apache Commons Text](http://www.baeldung.com/java-apache-commons-text) -- [A Guide to Apache Commons DbUtils](http://www.baeldung.com/apache-commons-dbutils) -- [Guide to Apache Commons CircularFifoQueue](http://www.baeldung.com/commons-circular-fifo-queue) -- [Apache Commons Chain](http://www.baeldung.com/apache-commons-chain) -- [Introduction to Apache Commons CSV](http://www.baeldung.com/apache-commons-csv) -- [Apache Commons IO](http://www.baeldung.com/apache-commons-io) -- [Apache Commons Collections Bag](http://www.baeldung.com/apache-commons-bag) -- [A Guide to Apache Commons Collections CollectionUtils](http://www.baeldung.com/apache-commons-collection-utils) -- [Apache Commons BeanUtils](http://www.baeldung.com/apache-commons-beanutils) -- [Apache Commons Collections BidiMap](http://www.baeldung.com/commons-collections-bidi-map) -- [Apache Commons Collections MapUtils](http://www.baeldung.com/apache-commons-map-utils) -- [Histograms with Apache Commons Frequency](http://www.baeldung.com/apache-commons-frequency) +- [Array Processing with Apache Commons Lang 3](https://www.baeldung.com/array-processing-commons-lang) +- [String Processing with Apache Commons Lang 3](https://www.baeldung.com/string-processing-commons-lang) +- [Introduction to Apache Commons Math](https://www.baeldung.com/apache-commons-math) +- [Introduction to Apache Commons Text](https://www.baeldung.com/java-apache-commons-text) +- [A Guide to Apache Commons DbUtils](https://www.baeldung.com/apache-commons-dbutils) +- [Apache Commons Chain](https://www.baeldung.com/apache-commons-chain) +- [Apache Commons BeanUtils](https://www.baeldung.com/apache-commons-beanutils) +- [Histograms with Apache Commons Frequency](https://www.baeldung.com/apache-commons-frequency) - [An Introduction to Apache Commons Lang 3](https://www.baeldung.com/java-commons-lang-3) \ No newline at end of file diff --git a/libraries-apache-commons/pom.xml b/libraries-apache-commons/pom.xml index 05d11d83fe..f83a8c7304 100644 --- a/libraries-apache-commons/pom.xml +++ b/libraries-apache-commons/pom.xml @@ -32,21 +32,11 @@ commons-text ${commons-text.version} - - commons-io - commons-io - ${commons-io.version} - commons-chain commons-chain ${commons-chain.version} - - org.apache.commons - commons-csv - ${commons-csv.version} - commons-dbutils commons-dbutils @@ -72,18 +62,6 @@ xchart ${xchart-version} - - org.apache.commons - commons-collections4 - ${commons.collections.version} - - - org.hamcrest - java-hamcrest - ${org.hamcrest.java-hamcrest.version} - test - - @@ -91,11 +69,8 @@ 1.1 1.9.3 1.2 - 1.4 3.6.2 1.6 - 4.1 - 2.0.0.0 1.10.L001 3.5.2 3.6 diff --git a/libraries-testing/README.md b/libraries-testing/README.md index 6b25a3b875..fb2c7123a3 100644 --- a/libraries-testing/README.md +++ b/libraries-testing/README.md @@ -5,4 +5,5 @@ - [Serenity BDD and Screenplay](http://www.baeldung.com/serenity-screenplay) - [Serenity BDD with Spring and JBehave](http://www.baeldung.com/serenity-spring-jbehave) - [Introduction to Awaitlity](http://www.baeldung.com/awaitlity-testing) -- [Introduction to Hoverfly in Java](http://www.baeldung.com/hoverfly) \ No newline at end of file +- [Introduction to Hoverfly in Java](http://www.baeldung.com/hoverfly) +- [Testing with Hamcrest](http://www.baeldung.com/java-junit-hamcrest-guide) \ No newline at end of file diff --git a/libraries-testing/pom.xml b/libraries-testing/pom.xml index 8f7a27bbfa..a2fbed31b2 100644 --- a/libraries-testing/pom.xml +++ b/libraries-testing/pom.xml @@ -43,6 +43,12 @@ serenity-rest-assured ${serenity.version} test + + + io.rest-assured + rest-assured + + net.serenity-bdd @@ -112,6 +118,13 @@ assertj-core ${assertj.version} + + + org.hamcrest + java-hamcrest + ${java-hamcrest.version} + test + net.serenity-bdd @@ -155,16 +168,17 @@ - 1.9.26 - 1.41.0 + 1.9.9 + 1.9.0 1.9.0 1.9.27 1.5.0 3.0.0 0.8.1 4.3.8.RELEASE - 3.0.3 + 4.1.1 3.6.2 + 2.0.0.0 diff --git a/guava/src/test/java/org/baeldung/hamcrest/Animal.java b/libraries-testing/src/test/java/com/baeldung/hamcrest/Animal.java similarity index 94% rename from guava/src/test/java/org/baeldung/hamcrest/Animal.java rename to libraries-testing/src/test/java/com/baeldung/hamcrest/Animal.java index 1a0266f5a3..1d37eef59b 100644 --- a/guava/src/test/java/org/baeldung/hamcrest/Animal.java +++ b/libraries-testing/src/test/java/com/baeldung/hamcrest/Animal.java @@ -1,4 +1,4 @@ -package org.baeldung.hamcrest; +package com.baeldung.hamcrest; public class Animal { String name; diff --git a/guava/src/test/java/org/baeldung/hamcrest/Cat.java b/libraries-testing/src/test/java/com/baeldung/hamcrest/Cat.java similarity index 82% rename from guava/src/test/java/org/baeldung/hamcrest/Cat.java rename to libraries-testing/src/test/java/com/baeldung/hamcrest/Cat.java index 892e5b6e30..b15a3628da 100644 --- a/guava/src/test/java/org/baeldung/hamcrest/Cat.java +++ b/libraries-testing/src/test/java/com/baeldung/hamcrest/Cat.java @@ -1,4 +1,4 @@ -package org.baeldung.hamcrest; +package com.baeldung.hamcrest; public class Cat extends Animal { diff --git a/guava/src/test/java/org/baeldung/hamcrest/HamcrestMatcherUnitTest.java b/libraries-testing/src/test/java/com/baeldung/hamcrest/HamcrestMatcherUnitTest.java similarity index 99% rename from guava/src/test/java/org/baeldung/hamcrest/HamcrestMatcherUnitTest.java rename to libraries-testing/src/test/java/com/baeldung/hamcrest/HamcrestMatcherUnitTest.java index cf9fde7114..f5887ba79b 100644 --- a/guava/src/test/java/org/baeldung/hamcrest/HamcrestMatcherUnitTest.java +++ b/libraries-testing/src/test/java/com/baeldung/hamcrest/HamcrestMatcherUnitTest.java @@ -1,10 +1,10 @@ -package org.baeldung.hamcrest; +package com.baeldung.hamcrest; import org.junit.Test; import java.util.*; -import static org.baeldung.hamcrest.IsPositiveInteger.isAPositiveInteger; +import static com.baeldung.hamcrest.IsPositiveInteger.isAPositiveInteger; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; import static org.hamcrest.beans.HasProperty.hasProperty; diff --git a/guava/src/test/java/org/baeldung/hamcrest/IsPositiveInteger.java b/libraries-testing/src/test/java/com/baeldung/hamcrest/IsPositiveInteger.java similarity index 94% rename from guava/src/test/java/org/baeldung/hamcrest/IsPositiveInteger.java rename to libraries-testing/src/test/java/com/baeldung/hamcrest/IsPositiveInteger.java index 0d8d262538..4d2ef8a8e5 100644 --- a/guava/src/test/java/org/baeldung/hamcrest/IsPositiveInteger.java +++ b/libraries-testing/src/test/java/com/baeldung/hamcrest/IsPositiveInteger.java @@ -1,4 +1,4 @@ -package org.baeldung.hamcrest; +package com.baeldung.hamcrest; import org.hamcrest.Description; import org.hamcrest.Factory; diff --git a/guava/src/test/java/org/baeldung/hamcrest/Person.java b/libraries-testing/src/test/java/com/baeldung/hamcrest/Person.java similarity index 94% rename from guava/src/test/java/org/baeldung/hamcrest/Person.java rename to libraries-testing/src/test/java/com/baeldung/hamcrest/Person.java index 0053c98043..417daa866e 100644 --- a/guava/src/test/java/org/baeldung/hamcrest/Person.java +++ b/libraries-testing/src/test/java/com/baeldung/hamcrest/Person.java @@ -1,4 +1,4 @@ -package org.baeldung.hamcrest; +package com.baeldung.hamcrest; public class Person { String name; diff --git a/libraries/pom.xml b/libraries/pom.xml index a8ded19a1e..9511563817 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -579,7 +579,7 @@ org.asciidoctor asciidoctor-maven-plugin - 1.5.7.1 + ${asciidoctor-maven-plugin.version} @@ -789,6 +789,7 @@ 2.7.1 3.6 0.9.11 + 1.5.7.1 diff --git a/linux-bash/loops/src/main/bash/find_directories.sh b/linux-bash/loops/src/main/bash/find_directories.sh new file mode 100755 index 0000000000..8a9b20294d --- /dev/null +++ b/linux-bash/loops/src/main/bash/find_directories.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +find . -maxdepth 1 -mindepth 1 -type d -printf '%f\n' + +find . -maxdepth 1 -mindepth 1 -type d | while read dir; do + echo "$dir" +done + +find . -maxdepth 1 -type d -exec echo {} \; \ No newline at end of file diff --git a/linux-bash/loops/src/main/bash/loop_directories.sh b/linux-bash/loops/src/main/bash/loop_directories.sh new file mode 100755 index 0000000000..77e661d710 --- /dev/null +++ b/linux-bash/loops/src/main/bash/loop_directories.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +for dir in */; do + echo "$dir" +done + +for file in *; do + if [ -d "$file" ]; then + echo "$file" + fi +done \ No newline at end of file diff --git a/linux-bash/text/src/main/bash/remove_characters.sh b/linux-bash/text/src/main/bash/remove_characters.sh new file mode 100755 index 0000000000..a8f51468f4 --- /dev/null +++ b/linux-bash/text/src/main/bash/remove_characters.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +my_var="Hola Mundo" +echo ${my_var} + +my_filename="interesting-text-file.txt" +echo ${my_filename:0:21} + +echo ${my_filename%.*} + +complicated_filename="hello-world.tar.gz" +echo ${complicated_filename%%.*} + +echo ${my_filename/.*/} + +echo 'interesting-text-file.txt' | sed 's/.txt*//' + +echo 'interesting-text-file.txt' | cut -f1 -d"." +echo ${complicated_filename} | cut -f1 -d"." diff --git a/logging-modules/flogger/pom.xml b/logging-modules/flogger/pom.xml new file mode 100644 index 0000000000..0bba719616 --- /dev/null +++ b/logging-modules/flogger/pom.xml @@ -0,0 +1,66 @@ + + + + logging-modules + com.baeldung + 1.0.0-SNAPSHOT + + 4.0.0 + + flogger + + + + com.google.flogger + flogger + 0.4 + + + + com.google.flogger + flogger-system-backend + 0.4 + runtime + + + + com.google.flogger + flogger-slf4j-backend + 0.4 + + + + com.google.flogger + flogger-log4j-backend + 0.4 + + + com.sun.jmx + jmxri + + + com.sun.jdmk + jmxtools + + + javax.jms + jms + + + + + + log4j + log4j + 1.2.17 + + + log4j + apache-log4j-extras + 1.2.17 + + + + \ No newline at end of file diff --git a/logging-modules/flogger/src/main/java/com/baeldung/flogger/FloggerExamples.java b/logging-modules/flogger/src/main/java/com/baeldung/flogger/FloggerExamples.java new file mode 100644 index 0000000000..252d2d38e4 --- /dev/null +++ b/logging-modules/flogger/src/main/java/com/baeldung/flogger/FloggerExamples.java @@ -0,0 +1,17 @@ +package com.baeldung.flogger; + +import com.google.common.flogger.FluentLogger; +import com.google.common.flogger.LoggerConfig; + +import java.util.logging.Level; + +public class FloggerExamples { + + private static final FluentLogger logger = FluentLogger.forEnclosingClass(); + + public static void main(String[] args) { + LoggerConfig.of(logger).setLevel(Level.FINE); + Exception exception = new Exception("This is a test exception."); + logger.atInfo().withCause(exception).log("Log message with: %s", "Alfred"); + } +} diff --git a/logging-modules/flogger/src/test/java/com/baeldung/flogger/FloggerIntegrationTest.java b/logging-modules/flogger/src/test/java/com/baeldung/flogger/FloggerIntegrationTest.java new file mode 100644 index 0000000000..80fa0edd96 --- /dev/null +++ b/logging-modules/flogger/src/test/java/com/baeldung/flogger/FloggerIntegrationTest.java @@ -0,0 +1,96 @@ +package com.baeldung.flogger; + +import com.google.common.flogger.FluentLogger; +import com.google.common.flogger.LoggerConfig; +import com.google.common.flogger.StackSize; +import org.junit.Test; + +import java.util.concurrent.TimeUnit; +import java.util.logging.Level; +import java.util.stream.IntStream; + +import static com.google.common.flogger.LazyArgs.lazy; + +public class FloggerIntegrationTest { + static { +// System.setProperty("flogger.backend_factory", "com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"); + System.setProperty("flogger.backend_factory", "com.google.common.flogger.backend.slf4j.Slf4jBackendFactory#getInstance"); + } + private static final FluentLogger logger = FluentLogger.forEnclosingClass(); + + @Test + public void givenAnInterval_shouldLogAfterEveryInterval() { + IntStream.range(0, 100).forEach(value -> { + logger.atInfo().every(40).log("This log shows [every 40 iterations] => %d", value); + }); + } + + @Test + public void givenATimeInterval_shouldLogAfterEveryTimeInterval() { + IntStream.range(0, 1_000_0000).forEach(value -> { + logger.atInfo().atMostEvery(10, TimeUnit.SECONDS).log("This log shows [every 10 seconds] => %d", value); + }); + } + + @Test + public void givenAnObject_shouldLogTheObject() { + User user = new User(); + logger.atInfo().log("The user is: %s", user); //correct + + //The following ways of logging are not recommended + logger.atInfo().log("The user is: %s", user.toString()); + logger.atInfo().log("The user is: %s" + user); + } + + @Test + public void givenASimpleOperation_shouldLogTheResult() { + int result = 45 / 3; + logger.atInfo().log("The result is %d", result); + } + + @Test + public void givenCodeThatThrowsAndException_shouldLogTheException() { + try { + int result = 45 / 0; + } catch (RuntimeException re) { + logger.atInfo().withStackTrace(StackSize.FULL).withCause(re).log("Message"); + } + } + + @Test + public void givenALoggingConfiguration_shouldLogAtTheConfiguredLevel() { + LoggerConfig.of(logger).setLevel(Level.FINE); + logger.atInfo().log("Info Message"); + logger.atWarning().log("Warning Message"); + logger.atSevere().log("Severe Message"); + logger.atFinest().log("Finest Message"); + logger.atFine().log("Fine Message"); + logger.atFiner().log("Finer Message"); + logger.atConfig().log("Config Message"); + } + + @Test + public void givenALongRunningMethodForStats_shouldCallTheMethodLazily() { + //Wrong way of doing it + logger.atFine().log("stats=%s", collectSummaries()); + + // Almost no work done at the log site and structure is preserved. + logger.atFine().log("stats=%s", lazy(() -> collectSummaries())); + } + + public static String collectSummaries() { + //compute summaries in a long-running process + int items = 110; + int s = 30; + return String.format("%d seconds elapsed so far. %d items pending processing", s, items); + } + + private class User { + String name = "Test"; + + @Override + public String toString() { + return name; + } + } +} diff --git a/logging-modules/pom.xml b/logging-modules/pom.xml index a303e50ff1..927afb6ca9 100644 --- a/logging-modules/pom.xml +++ b/logging-modules/pom.xml @@ -18,6 +18,7 @@ log4j2 logback log-mdc + flogger diff --git a/lombok/src/main/java/com/baeldung/lombok/getter/GetterLazy.java b/lombok/src/main/java/com/baeldung/lombok/intro/GetterLazy.java similarity index 96% rename from lombok/src/main/java/com/baeldung/lombok/getter/GetterLazy.java rename to lombok/src/main/java/com/baeldung/lombok/intro/GetterLazy.java index 604c45be3b..8397aeb759 100644 --- a/lombok/src/main/java/com/baeldung/lombok/getter/GetterLazy.java +++ b/lombok/src/main/java/com/baeldung/lombok/intro/GetterLazy.java @@ -1,4 +1,4 @@ -package com.baeldung.lombok.getter; +package com.baeldung.lombok.intro; import java.util.HashMap; import java.util.List; diff --git a/mapstruct/pom.xml b/mapstruct/pom.xml index 0493775f85..2613dcf083 100644 --- a/mapstruct/pom.xml +++ b/mapstruct/pom.xml @@ -65,7 +65,7 @@ - 1.3.0.Beta2 + 1.3.0.Final 4.3.4.RELEASE 1.8 1.8 diff --git a/mapstruct/src/main/java/com/baeldung/dto/UserBodyImperialValuesDTO.java b/mapstruct/src/main/java/com/baeldung/dto/UserBodyImperialValuesDTO.java new file mode 100644 index 0000000000..9817b76bc8 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/dto/UserBodyImperialValuesDTO.java @@ -0,0 +1,11 @@ +package com.baeldung.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class UserBodyImperialValuesDTO { + private int inch; + private int pound; +} \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/entity/UserBodyValues.java b/mapstruct/src/main/java/com/baeldung/entity/UserBodyValues.java new file mode 100644 index 0000000000..b23463cb93 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/entity/UserBodyValues.java @@ -0,0 +1,11 @@ +package com.baeldung.entity; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class UserBodyValues { + private double kilogram; + private double centimeter; +} \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/mapper/PoundToKilogramMapper.java b/mapstruct/src/main/java/com/baeldung/mapper/PoundToKilogramMapper.java new file mode 100644 index 0000000000..e75022a5e8 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapper/PoundToKilogramMapper.java @@ -0,0 +1,13 @@ +package com.baeldung.mapper; + +import org.mapstruct.Qualifier; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Qualifier +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.CLASS) +public @interface PoundToKilogramMapper {} diff --git a/mapstruct/src/main/java/com/baeldung/mapper/UserBodyValuesMapper.java b/mapstruct/src/main/java/com/baeldung/mapper/UserBodyValuesMapper.java new file mode 100644 index 0000000000..4c992f91e1 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapper/UserBodyValuesMapper.java @@ -0,0 +1,28 @@ +package com.baeldung.mapper; + +import com.baeldung.dto.UserBodyImperialValuesDTO; +import com.baeldung.entity.UserBodyValues; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Named; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface UserBodyValuesMapper { + + UserBodyValuesMapper INSTANCE = Mappers.getMapper(UserBodyValuesMapper.class); + + @Mapping(source = "pound", target = "kilogram", qualifiedBy = PoundToKilogramMapper.class) + @Mapping(source = "inch", target = "centimeter", qualifiedByName = "inchToCentimeter") + public UserBodyValues userBodyValuesMapper(UserBodyImperialValuesDTO dto); + + @Named("inchToCentimeter") + public static double inchToCentimeter(int inch) { + return inch * 2.54; + } + + @PoundToKilogramMapper + public static double poundToKilogram(int pound) { + return pound * 0.4535; + } +} \ No newline at end of file diff --git a/mapstruct/src/test/java/com/baeldung/mapper/UserBodyValuesMapperUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapper/UserBodyValuesMapperUnitTest.java new file mode 100644 index 0000000000..a875d6faf7 --- /dev/null +++ b/mapstruct/src/test/java/com/baeldung/mapper/UserBodyValuesMapperUnitTest.java @@ -0,0 +1,47 @@ +package com.baeldung.mapper; + +import com.baeldung.dto.UserBodyImperialValuesDTO; +import com.baeldung.entity.UserBodyValues; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + + +public class UserBodyValuesMapperUnitTest { + + @Test + public void givenUserBodyImperialValuesDTOToUserBodyValuesObject_whenMaps_thenCorrect() { + UserBodyImperialValuesDTO dto = new UserBodyImperialValuesDTO(); + dto.setInch(10); + dto.setPound(100); + + UserBodyValues obj = UserBodyValuesMapper.INSTANCE.userBodyValuesMapper(dto); + + assertNotNull(obj); + assertEquals(25.4, obj.getCentimeter(), 0); + assertEquals(45.35, obj.getKilogram(), 0); + } + + @Test + public void givenUserBodyImperialValuesDTOWithInchToUserBodyValuesObject_whenMaps_thenCorrect() { + UserBodyImperialValuesDTO dto = new UserBodyImperialValuesDTO(); + dto.setInch(10); + + UserBodyValues obj = UserBodyValuesMapper.INSTANCE.userBodyValuesMapper(dto); + + assertNotNull(obj); + assertEquals(25.4, obj.getCentimeter(), 0); + } + + @Test + public void givenUserBodyImperialValuesDTOWithPoundToUserBodyValuesObject_whenMaps_thenCorrect() { + UserBodyImperialValuesDTO dto = new UserBodyImperialValuesDTO(); + dto.setPound(100); + + UserBodyValues obj = UserBodyValuesMapper.INSTANCE.userBodyValuesMapper(dto); + + assertNotNull(obj); + assertEquals(45.35, obj.getKilogram(), 0); + } +} \ No newline at end of file diff --git a/maven-all/README.md b/maven-all/README.md new file mode 100644 index 0000000000..d014f323d2 --- /dev/null +++ b/maven-all/README.md @@ -0,0 +1,3 @@ +### Relevant Articles + +- [Apache Maven Tutorial](https://www.baeldung.com/maven) \ No newline at end of file diff --git a/maven-all/compiler-plugin-java-9/README.md b/maven-all/compiler-plugin-java-9/README.md new file mode 100644 index 0000000000..d0b7b72acc --- /dev/null +++ b/maven-all/compiler-plugin-java-9/README.md @@ -0,0 +1,3 @@ +### Relevant Articles + +- [Maven Compiler Plugin](http://www.baeldung.com/maven-compiler-plugin) \ No newline at end of file diff --git a/maven/compiler-plugin-java-9/pom.xml b/maven-all/compiler-plugin-java-9/pom.xml similarity index 100% rename from maven/compiler-plugin-java-9/pom.xml rename to maven-all/compiler-plugin-java-9/pom.xml diff --git a/maven/compiler-plugin-java-9/src/main/java/com/baeldung/maven/java9/MavenCompilerPlugin.java b/maven-all/compiler-plugin-java-9/src/main/java/com/baeldung/maven/java9/MavenCompilerPlugin.java similarity index 100% rename from maven/compiler-plugin-java-9/src/main/java/com/baeldung/maven/java9/MavenCompilerPlugin.java rename to maven-all/compiler-plugin-java-9/src/main/java/com/baeldung/maven/java9/MavenCompilerPlugin.java diff --git a/maven/compiler-plugin-java-9/src/main/java/module-info.java b/maven-all/compiler-plugin-java-9/src/main/java/module-info.java similarity index 100% rename from maven/compiler-plugin-java-9/src/main/java/module-info.java rename to maven-all/compiler-plugin-java-9/src/main/java/module-info.java diff --git a/maven-all/maven-war-plugin/README.md b/maven-all/maven-war-plugin/README.md new file mode 100644 index 0000000000..d559fea80b --- /dev/null +++ b/maven-all/maven-war-plugin/README.md @@ -0,0 +1,3 @@ +### Relevant Articles + +- [Eclipse Error: web.xml is missing and failOnMissingWebXml is set to true](https://www.baeldung.com/eclipse-error-web-xml-missing) \ No newline at end of file diff --git a/maven/maven-war-plugin/pom.xml b/maven-all/maven-war-plugin/pom.xml similarity index 89% rename from maven/maven-war-plugin/pom.xml rename to maven-all/maven-war-plugin/pom.xml index 517c08978f..25c2e1ba1b 100644 --- a/maven/maven-war-plugin/pom.xml +++ b/maven-all/maven-war-plugin/pom.xml @@ -1,29 +1,29 @@ - - 4.0.0 - com.baeldung - maven-war-plugin-property - 0.0.1-SNAPSHOT - war - maven-war-plugin-property - - - - - maven-war-plugin - - 3.1.0 - - - false - - - - - - - - false - + + 4.0.0 + com.baeldung + maven-war-plugin + 0.0.1-SNAPSHOT + war + maven-war-plugin + + + + + maven-war-plugin + + 3.1.0 + + + false + + + + + + + + false + \ No newline at end of file diff --git a/maven/.gitignore b/maven-all/maven/.gitignore similarity index 100% rename from maven/.gitignore rename to maven-all/maven/.gitignore diff --git a/maven/README.md b/maven-all/maven/README.md similarity index 70% rename from maven/README.md rename to maven-all/maven/README.md index 6d1a7081b7..abe7fc4a80 100644 --- a/maven/README.md +++ b/maven-all/maven/README.md @@ -11,9 +11,4 @@ - [Maven Project with Multiple Source Directories](https://www.baeldung.com/maven-project-multiple-src-directories) - [Integration Testing with Maven](https://www.baeldung.com/maven-integration-test) - [Apache Maven Standard Directory Layout](https://www.baeldung.com/maven-directory-structure) -- [Apache Maven Tutorial](https://www.baeldung.com/maven) -- [Use the Latest Version of a Dependency in Maven](https://www.baeldung.com/maven-dependency-latest-version) - [Multi-Module Project with Maven](https://www.baeldung.com/maven-multi-module) -- [Maven Enforcer Plugin](https://www.baeldung.com/maven-enforcer-plugin) -- [Eclipse Error: web.xml is missing and failOnMissingWebXml is set to true](https://www.baeldung.com/eclipse-error-web-xml-missing) -- [Guide to Maven Profiles](https://www.baeldung.com/maven-profiles) diff --git a/maven/custom-rule/pom.xml b/maven-all/maven/custom-rule/pom.xml similarity index 100% rename from maven/custom-rule/pom.xml rename to maven-all/maven/custom-rule/pom.xml diff --git a/maven/custom-rule/src/main/java/com/baeldung/enforcer/MyCustomRule.java b/maven-all/maven/custom-rule/src/main/java/com/baeldung/enforcer/MyCustomRule.java similarity index 100% rename from maven/custom-rule/src/main/java/com/baeldung/enforcer/MyCustomRule.java rename to maven-all/maven/custom-rule/src/main/java/com/baeldung/enforcer/MyCustomRule.java diff --git a/maven/input-resources/baeldung.png b/maven-all/maven/input-resources/baeldung.png similarity index 100% rename from maven/input-resources/baeldung.png rename to maven-all/maven/input-resources/baeldung.png diff --git a/maven/input-resources/baeldung.txt b/maven-all/maven/input-resources/baeldung.txt similarity index 100% rename from maven/input-resources/baeldung.txt rename to maven-all/maven/input-resources/baeldung.txt diff --git a/maven/input-resources/verifications.xml b/maven-all/maven/input-resources/verifications.xml similarity index 100% rename from maven/input-resources/verifications.xml rename to maven-all/maven/input-resources/verifications.xml diff --git a/maven-all/maven/maven-enforcer/README.md b/maven-all/maven/maven-enforcer/README.md new file mode 100644 index 0000000000..7515647a3d --- /dev/null +++ b/maven-all/maven/maven-enforcer/README.md @@ -0,0 +1,3 @@ +### Relevant Articles + +- [Maven Enforcer Plugin](https://www.baeldung.com/maven-enforcer-plugin) \ No newline at end of file diff --git a/maven/maven-enforcer/pom.xml b/maven-all/maven/maven-enforcer/pom.xml similarity index 100% rename from maven/maven-enforcer/pom.xml rename to maven-all/maven/maven-enforcer/pom.xml diff --git a/maven/pom.xml b/maven-all/maven/pom.xml similarity index 99% rename from maven/pom.xml rename to maven-all/maven/pom.xml index ef6e7b7d93..d34be04fcf 100644 --- a/maven/pom.xml +++ b/maven-all/maven/pom.xml @@ -11,6 +11,7 @@ parent-modules com.baeldung 1.0.0-SNAPSHOT + ../.. diff --git a/maven/src/integration-test/java/com/baeldung/maven/it/RestITCase.java b/maven-all/maven/src/integration-test/java/com/baeldung/maven/it/RestITCase.java similarity index 100% rename from maven/src/integration-test/java/com/baeldung/maven/it/RestITCase.java rename to maven-all/maven/src/integration-test/java/com/baeldung/maven/it/RestITCase.java diff --git a/maven/src/main/another-src/com/baeldung/maven/plugins/Foo.java b/maven-all/maven/src/main/another-src/com/baeldung/maven/plugins/Foo.java similarity index 100% rename from maven/src/main/another-src/com/baeldung/maven/plugins/Foo.java rename to maven-all/maven/src/main/another-src/com/baeldung/maven/plugins/Foo.java diff --git a/maven/src/main/java/com/baeldung/maven/it/EndpointConfig.java b/maven-all/maven/src/main/java/com/baeldung/maven/it/EndpointConfig.java similarity index 100% rename from maven/src/main/java/com/baeldung/maven/it/EndpointConfig.java rename to maven-all/maven/src/main/java/com/baeldung/maven/it/EndpointConfig.java diff --git a/maven/src/main/java/com/baeldung/maven/it/RestEndpoint.java b/maven-all/maven/src/main/java/com/baeldung/maven/it/RestEndpoint.java similarity index 100% rename from maven/src/main/java/com/baeldung/maven/it/RestEndpoint.java rename to maven-all/maven/src/main/java/com/baeldung/maven/it/RestEndpoint.java diff --git a/maven/src/main/java/com/baeldung/maven/plugins/Data.java b/maven-all/maven/src/main/java/com/baeldung/maven/plugins/Data.java similarity index 100% rename from maven/src/main/java/com/baeldung/maven/plugins/Data.java rename to maven-all/maven/src/main/java/com/baeldung/maven/plugins/Data.java diff --git a/maven/src/main/java/com/baeldung/maven/plugins/MultipleSrcFolders.java b/maven-all/maven/src/main/java/com/baeldung/maven/plugins/MultipleSrcFolders.java similarity index 100% rename from maven/src/main/java/com/baeldung/maven/plugins/MultipleSrcFolders.java rename to maven-all/maven/src/main/java/com/baeldung/maven/plugins/MultipleSrcFolders.java diff --git a/maven-all/maven/src/main/resources/logback.xml b/maven-all/maven/src/main/resources/logback.xml new file mode 100644 index 0000000000..7d900d8ea8 --- /dev/null +++ b/maven-all/maven/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file diff --git a/maven/src/main/webapp/WEB-INF/web.xml b/maven-all/maven/src/main/webapp/WEB-INF/web.xml similarity index 100% rename from maven/src/main/webapp/WEB-INF/web.xml rename to maven-all/maven/src/main/webapp/WEB-INF/web.xml diff --git a/maven/src/test/java/com/baeldung/maven/it/Integration.java b/maven-all/maven/src/test/java/com/baeldung/maven/it/Integration.java similarity index 100% rename from maven/src/test/java/com/baeldung/maven/it/Integration.java rename to maven-all/maven/src/test/java/com/baeldung/maven/it/Integration.java diff --git a/maven/src/test/java/com/baeldung/maven/it/RestIT.java b/maven-all/maven/src/test/java/com/baeldung/maven/it/RestIT.java similarity index 100% rename from maven/src/test/java/com/baeldung/maven/it/RestIT.java rename to maven-all/maven/src/test/java/com/baeldung/maven/it/RestIT.java diff --git a/maven/src/test/java/com/baeldung/maven/it/RestIntegrationTest.java b/maven-all/maven/src/test/java/com/baeldung/maven/it/RestIntegrationTest.java similarity index 100% rename from maven/src/test/java/com/baeldung/maven/it/RestIntegrationTest.java rename to maven-all/maven/src/test/java/com/baeldung/maven/it/RestIntegrationTest.java diff --git a/maven/src/test/java/com/baeldung/maven/it/RestJUnitTest.java b/maven-all/maven/src/test/java/com/baeldung/maven/it/RestJUnitTest.java similarity index 100% rename from maven/src/test/java/com/baeldung/maven/it/RestJUnitTest.java rename to maven-all/maven/src/test/java/com/baeldung/maven/it/RestJUnitTest.java diff --git a/maven/src/test/java/com/baeldung/maven/plugins/DataCheck.java b/maven-all/maven/src/test/java/com/baeldung/maven/plugins/DataCheck.java similarity index 100% rename from maven/src/test/java/com/baeldung/maven/plugins/DataCheck.java rename to maven-all/maven/src/test/java/com/baeldung/maven/plugins/DataCheck.java diff --git a/maven/src/test/java/com/baeldung/maven/plugins/DataUnitTest.java b/maven-all/maven/src/test/java/com/baeldung/maven/plugins/DataUnitTest.java similarity index 100% rename from maven/src/test/java/com/baeldung/maven/plugins/DataUnitTest.java rename to maven-all/maven/src/test/java/com/baeldung/maven/plugins/DataUnitTest.java diff --git a/maven/src/test/java/testfail/TestFail.java b/maven-all/maven/src/test/java/testfail/TestFail.java similarity index 100% rename from maven/src/test/java/testfail/TestFail.java rename to maven-all/maven/src/test/java/testfail/TestFail.java diff --git a/maven-all/profiles/README.md b/maven-all/profiles/README.md new file mode 100644 index 0000000000..22d5d7f70c --- /dev/null +++ b/maven-all/profiles/README.md @@ -0,0 +1,3 @@ +### Relevant Articles + +- [Guide to Maven Profiles](https://www.baeldung.com/maven-profiles) \ No newline at end of file diff --git a/maven/profiles/pom.xml b/maven-all/profiles/pom.xml similarity index 100% rename from maven/profiles/pom.xml rename to maven-all/profiles/pom.xml diff --git a/maven-all/versions-maven-plugin/README.md b/maven-all/versions-maven-plugin/README.md new file mode 100644 index 0000000000..8f5670f802 --- /dev/null +++ b/maven-all/versions-maven-plugin/README.md @@ -0,0 +1,3 @@ +### Relevant Articles + +- [Use the Latest Version of a Dependency in Maven](https://www.baeldung.com/maven-dependency-latest-version) \ No newline at end of file diff --git a/maven/versions-maven-plugin/original/pom.xml b/maven-all/versions-maven-plugin/original/pom.xml similarity index 100% rename from maven/versions-maven-plugin/original/pom.xml rename to maven-all/versions-maven-plugin/original/pom.xml diff --git a/maven/versions-maven-plugin/pom.xml b/maven-all/versions-maven-plugin/pom.xml similarity index 98% rename from maven/versions-maven-plugin/pom.xml rename to maven-all/versions-maven-plugin/pom.xml index e0714bf0e0..c9f63a46f1 100644 --- a/maven/versions-maven-plugin/pom.xml +++ b/maven-all/versions-maven-plugin/pom.xml @@ -36,7 +36,7 @@ commons-beanutils commons-beanutils - 1.9.1-SNAPSHOT + 1.9.1 diff --git a/maven/versions-maven-plugin/run-the-demo.sh b/maven-all/versions-maven-plugin/run-the-demo.sh old mode 100755 new mode 100644 similarity index 100% rename from maven/versions-maven-plugin/run-the-demo.sh rename to maven-all/versions-maven-plugin/run-the-demo.sh diff --git a/oauth2-framework-impl/oauth2-authorization-server/pom.xml b/oauth2-framework-impl/oauth2-authorization-server/pom.xml index 6ab7a60f72..25927c9f1a 100644 --- a/oauth2-framework-impl/oauth2-authorization-server/pom.xml +++ b/oauth2-framework-impl/oauth2-authorization-server/pom.xml @@ -18,23 +18,26 @@ 1.4.199 9080 9443 + 7.3 + 1.62 + 1.62 com.nimbusds nimbus-jose-jwt - 7.3 + ${nimbus-jose-jwt.version} org.bouncycastle bcprov-jdk15on - 1.62 + ${bcprov-jdk15on.version} org.bouncycastle bcpkix-jdk15on - 1.62 + ${bcpkix-jdk15on.version} diff --git a/oauth2-framework-impl/oauth2-resource-server/pom.xml b/oauth2-framework-impl/oauth2-resource-server/pom.xml index e6bc860c67..5e5cd087ed 100644 --- a/oauth2-framework-impl/oauth2-resource-server/pom.xml +++ b/oauth2-framework-impl/oauth2-resource-server/pom.xml @@ -18,13 +18,14 @@ 8643 http://localhost:9080 http://localhost:9280 + 1.1 org.eclipse.microprofile.jwt microprofile-jwt-auth-api - 1.1 + ${microprofile-jwt-auth-api.version} provided diff --git a/oauth2-framework-impl/pom.xml b/oauth2-framework-impl/pom.xml index 47d42eaaea..fd1a2c926f 100644 --- a/oauth2-framework-impl/pom.xml +++ b/oauth2-framework-impl/pom.xml @@ -15,19 +15,21 @@ false RELEASE 2.6.4 + 8.0 + 1.3 javax javaee-web-api - 8.0 + ${javaee-web-api.version} provided org.eclipse.microprofile.config microprofile-config-api - 1.3 + ${microprofile-config-api.version} provided diff --git a/optaplanner/pom.xml b/optaplanner/pom.xml index 93b1e68264..bcf7080a1e 100644 --- a/optaplanner/pom.xml +++ b/optaplanner/pom.xml @@ -16,8 +16,12 @@ org.optaplanner optaplanner-core - 7.9.0.Final + ${optaplanner-core.version} + + 7.9.0.Final + + \ No newline at end of file diff --git a/parent-boot-1/README.md b/parent-boot-1/README.md index 8b312c348a..5ad14c6519 100644 --- a/parent-boot-1/README.md +++ b/parent-boot-1/README.md @@ -1,2 +1,3 @@ +## Parent Boot 1 This is a parent module for all projects using Spring Boot 1. diff --git a/parent-boot-2/README.md b/parent-boot-2/README.md index 3f18bdf38e..7afe447a66 100644 --- a/parent-boot-2/README.md +++ b/parent-boot-2/README.md @@ -1,2 +1,3 @@ +## Parent Boot 2 This is a parent module for all projects using Spring Boot 2. diff --git a/parent-java/README.md b/parent-java/README.md index 729105e3fd..1b14b7cfc1 100644 --- a/parent-java/README.md +++ b/parent-java/README.md @@ -1 +1,3 @@ -## Relevant Articles: +## Parent Java + +This is a parent module for all projects using Java \ No newline at end of file diff --git a/parent-kotlin/README.md b/parent-kotlin/README.md index 6c17a6ac29..c78ecbac42 100644 --- a/parent-kotlin/README.md +++ b/parent-kotlin/README.md @@ -1,2 +1,3 @@ +## Parent Kotlin -Parent module for Kotlin projects. +This is a parent module for all projects using Kotlin diff --git a/parent-spring-4/README.md b/parent-spring-4/README.md index 729105e3fd..f14d003dd5 100644 --- a/parent-spring-4/README.md +++ b/parent-spring-4/README.md @@ -1 +1,3 @@ -## Relevant Articles: +## Parent Spring 4 + +This is a parent module for all projects using Spring 4 diff --git a/parent-spring-5/README.md b/parent-spring-5/README.md index 729105e3fd..791a6ca197 100644 --- a/parent-spring-5/README.md +++ b/parent-spring-5/README.md @@ -1 +1,3 @@ -## Relevant Articles: +## Parent Spring 5 + +This is a parent module for all projects using Spring 5 diff --git a/patterns/design-patterns-2/README.md b/patterns/design-patterns-2/README.md deleted file mode 100644 index 8e4ef657e1..0000000000 --- a/patterns/design-patterns-2/README.md +++ /dev/null @@ -1,5 +0,0 @@ -### Relevant Articles - -- [The Mediator Pattern in Java](https://www.baeldung.com/java-mediator-pattern) -- [Introduction to the Null Object Pattern](https://www.baeldung.com/java-null-object-pattern) -- [Avoid Check for Null Statement in Java](https://www.baeldung.com/java-avoid-null-check) diff --git a/patterns/design-patterns-architectural/README.md b/patterns/design-patterns-architectural/README.md new file mode 100644 index 0000000000..fbe4221752 --- /dev/null +++ b/patterns/design-patterns-architectural/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: +- [Service Locator Pattern](https://www.baeldung.com/java-service-locator-pattern) +- [The DAO Pattern in Java](https://www.baeldung.com/java-dao-pattern) diff --git a/patterns/design-patterns/pom.xml b/patterns/design-patterns-architectural/pom.xml similarity index 78% rename from patterns/design-patterns/pom.xml rename to patterns/design-patterns-architectural/pom.xml index e6bff64f9e..cf99919e7c 100644 --- a/patterns/design-patterns/pom.xml +++ b/patterns/design-patterns-architectural/pom.xml @@ -2,9 +2,9 @@ 4.0.0 - design-patterns + design-patterns-architectural 1.0 - design-patterns + design-patterns-architectural jar @@ -21,7 +21,8 @@ ${assertj-core.version} test - + + javax javaee-api ${javaee.version} @@ -37,24 +38,15 @@ ${mysql-connector.version} jar - - log4j - log4j - ${log4j.version} - - - com.googlecode.grep4j - grep4j - ${grep4j.version} - UTF-8 1.8 1.8 - 1.8.7 + 3.9.1 + 8.0 5.2.16.Final 6.0.6 diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/application/UserApplication.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/application/UserApplication.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/application/UserApplication.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/application/UserApplication.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/config/JpaEntityManagerFactory.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/config/JpaEntityManagerFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/config/JpaEntityManagerFactory.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/config/JpaEntityManagerFactory.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/config/PersistenceUnitInfoImpl.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/config/PersistenceUnitInfoImpl.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/config/PersistenceUnitInfoImpl.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/config/PersistenceUnitInfoImpl.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/Dao.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/Dao.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/Dao.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/Dao.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/JpaUserDao.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/JpaUserDao.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/JpaUserDao.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/JpaUserDao.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/UserDao.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/UserDao.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/UserDao.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/UserDao.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/entities/User.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/entities/User.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/entities/User.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/entities/User.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/Cache.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/Cache.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/Cache.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/Cache.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/EmailService.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/EmailService.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/EmailService.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/EmailService.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/InitialContext.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/InitialContext.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/InitialContext.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/InitialContext.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/Main.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/Main.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/Main.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/Main.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/MessagingService.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/MessagingService.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/MessagingService.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/MessagingService.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/SMSService.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/SMSService.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/SMSService.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/SMSService.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/ServiceLocator.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/ServiceLocator.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/ServiceLocator.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/ServiceLocator.java diff --git a/patterns/design-patterns/src/main/resources/META-INF/persistence.xml b/patterns/design-patterns-architectural/src/main/resources/META-INF/persistence.xml similarity index 100% rename from patterns/design-patterns/src/main/resources/META-INF/persistence.xml rename to patterns/design-patterns-architectural/src/main/resources/META-INF/persistence.xml diff --git a/patterns/design-patterns/src/test/java/com/baeldung/daopattern/test/UserDaoUnitTest.java b/patterns/design-patterns-architectural/src/test/java/com/baeldung/daopattern/test/UserDaoUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/daopattern/test/UserDaoUnitTest.java rename to patterns/design-patterns-architectural/src/test/java/com/baeldung/daopattern/test/UserDaoUnitTest.java diff --git a/patterns/design-patterns-behavioral-2/README.md b/patterns/design-patterns-behavioral-2/README.md new file mode 100644 index 0000000000..9618a9c458 --- /dev/null +++ b/patterns/design-patterns-behavioral-2/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [Memento Design Pattern in Java](https://www.baeldung.com/java-memento-design-pattern) diff --git a/patterns/design-patterns-behavioral-2/pom.xml b/patterns/design-patterns-behavioral-2/pom.xml new file mode 100644 index 0000000000..7e73c0ad19 --- /dev/null +++ b/patterns/design-patterns-behavioral-2/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + design-patterns-behavioral-2 + 1.0 + design-patterns-behavioral-2 + jar + + + com.baeldung + patterns + 1.0.0-SNAPSHOT + .. + + + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + UTF-8 + 1.8 + 1.8 + + 3.12.2 + + diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextEditor.java b/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextEditor.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextEditor.java rename to patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextEditor.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextWindow.java b/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextWindow.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextWindow.java rename to patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextWindow.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextWindowState.java b/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextWindowState.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextWindowState.java rename to patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextWindowState.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/memento/TextEditorUnitTest.java b/patterns/design-patterns-behavioral-2/src/test/java/com/baeldung/memento/TextEditorUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/memento/TextEditorUnitTest.java rename to patterns/design-patterns-behavioral-2/src/test/java/com/baeldung/memento/TextEditorUnitTest.java diff --git a/patterns/design-patterns-behavioral/README.md b/patterns/design-patterns-behavioral/README.md new file mode 100644 index 0000000000..42514e0ad8 --- /dev/null +++ b/patterns/design-patterns-behavioral/README.md @@ -0,0 +1,11 @@ +### Relevant Articles: +- [The Observer Pattern in Java](https://www.baeldung.com/java-observer-pattern) +- [Visitor Design Pattern in Java](https://www.baeldung.com/java-visitor-pattern) +- [Interpreter Design Pattern in Java](https://www.baeldung.com/java-interpreter-pattern) +- [State Design Pattern in Java](https://www.baeldung.com/java-state-design-pattern) +- [Implementing the Template Method Pattern in Java](https://www.baeldung.com/java-template-method-pattern) +- [Chain of Responsibility Design Pattern in Java](https://www.baeldung.com/chain-of-responsibility-pattern) +- [The Command Pattern in Java](https://www.baeldung.com/java-command-pattern) +- [The Mediator Pattern in Java](https://www.baeldung.com/java-mediator-pattern) +- [Introduction to the Null Object Pattern](https://www.baeldung.com/java-null-object-pattern) +- [Avoid Check for Null Statement in Java](https://www.baeldung.com/java-avoid-null-check) diff --git a/patterns/design-patterns-2/pom.xml b/patterns/design-patterns-behavioral/pom.xml similarity index 69% rename from patterns/design-patterns-2/pom.xml rename to patterns/design-patterns-behavioral/pom.xml index f99bb4dc9c..d6603f94ec 100644 --- a/patterns/design-patterns-2/pom.xml +++ b/patterns/design-patterns-behavioral/pom.xml @@ -2,9 +2,9 @@ 4.0.0 - design-patterns-2 + design-patterns-behavioral 1.0 - design-patterns-2 + design-patterns-behavioral jar @@ -31,32 +31,21 @@ commons-lang3 ${commons-lang3.version} + org.assertj assertj-core - ${assertj.version} + ${assertj-core.version} test - - - org.inferred - freebuilder - ${freebuilder.version} - true - - - com.google.code.findbugs - jsr305 - ${javax.annotations.version} - + UTF-8 1.8 1.8 + 16.0.2 - 3.12.2 - 2.4.1 - 3.0.2 + 3.9.1 diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProcessor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProcessor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProcessor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProcessor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProvider.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProvider.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProvider.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProvider.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/OAuthAuthenticationProcessor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/OAuthAuthenticationProcessor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/OAuthAuthenticationProcessor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/OAuthAuthenticationProcessor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/OAuthTokenProvider.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/OAuthTokenProvider.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/OAuthTokenProvider.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/OAuthTokenProvider.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/SamlAuthenticationProvider.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/SamlAuthenticationProvider.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/SamlAuthenticationProvider.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/SamlAuthenticationProvider.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordAuthenticationProcessor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordAuthenticationProcessor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordAuthenticationProcessor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordAuthenticationProcessor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordProvider.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordProvider.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordProvider.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordProvider.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/client/TextFileApplication.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/client/TextFileApplication.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/client/TextFileApplication.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/client/TextFileApplication.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/command/OpenTextFileOperation.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/OpenTextFileOperation.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/command/OpenTextFileOperation.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/OpenTextFileOperation.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/command/SaveTextFileOperation.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/SaveTextFileOperation.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/command/SaveTextFileOperation.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/SaveTextFileOperation.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/command/TextFileOperation.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/TextFileOperation.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/command/TextFileOperation.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/TextFileOperation.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/invoker/TextFileOperationExecutor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/invoker/TextFileOperationExecutor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/invoker/TextFileOperationExecutor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/invoker/TextFileOperationExecutor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/receiver/TextFile.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/receiver/TextFile.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/receiver/TextFile.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/receiver/TextFile.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/Context.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Context.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/Context.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Context.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/Expression.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Expression.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/Expression.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Expression.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/From.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/From.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/From.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/From.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/InterpreterDemo.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/InterpreterDemo.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/InterpreterDemo.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/InterpreterDemo.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/Row.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Row.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/Row.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Row.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/Select.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Select.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/Select.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Select.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/Where.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Where.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/Where.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Where.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Button.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Button.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Button.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Button.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Fan.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Fan.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Fan.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Fan.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Mediator.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Mediator.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Mediator.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Mediator.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/mediator/PowerSupplier.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/PowerSupplier.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/mediator/PowerSupplier.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/PowerSupplier.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/JmsRouter.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/JmsRouter.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/JmsRouter.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/JmsRouter.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/Message.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/Message.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/Message.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/Message.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/NullRouter.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/NullRouter.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/NullRouter.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/NullRouter.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/Router.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/Router.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/Router.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/Router.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/RouterFactory.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/RouterFactory.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/RouterFactory.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/RouterFactory.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/RoutingHandler.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/RoutingHandler.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/RoutingHandler.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/RoutingHandler.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/SmsRouter.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/SmsRouter.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/SmsRouter.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/SmsRouter.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/APIContracts.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/APIContracts.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/APIContracts.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/APIContracts.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/Assertions.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/Assertions.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/Assertions.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/Assertions.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/EmptyCollections.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/EmptyCollections.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/EmptyCollections.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/EmptyCollections.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/FindBugsAnnotations.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/FindBugsAnnotations.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/FindBugsAnnotations.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/FindBugsAnnotations.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/Preconditions.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/Preconditions.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/Preconditions.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/Preconditions.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/PrimitivesAndWrapper.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/PrimitivesAndWrapper.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/PrimitivesAndWrapper.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/PrimitivesAndWrapper.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingLombok.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingLombok.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingLombok.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingLombok.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingObjects.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingObjects.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingObjects.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingObjects.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingOptional.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingOptional.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingOptional.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingOptional.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingStringUtils.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingStringUtils.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingStringUtils.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingStringUtils.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/Channel.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/Channel.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/Channel.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/Channel.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/NewsAgency.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/NewsAgency.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/NewsAgency.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/NewsAgency.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/NewsChannel.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/NewsChannel.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/NewsChannel.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/NewsChannel.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/ONewsAgency.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/ONewsAgency.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/ONewsAgency.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/ONewsAgency.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/ONewsChannel.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/ONewsChannel.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/ONewsChannel.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/ONewsChannel.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/PCLNewsAgency.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/PCLNewsAgency.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/PCLNewsAgency.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/PCLNewsAgency.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/PCLNewsChannel.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/PCLNewsChannel.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/PCLNewsChannel.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/PCLNewsChannel.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/DeliveredState.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/DeliveredState.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/DeliveredState.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/DeliveredState.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/OrderedState.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/OrderedState.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/OrderedState.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/OrderedState.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/Package.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/Package.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/Package.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/Package.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/PackageState.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/PackageState.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/PackageState.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/PackageState.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/ReceivedState.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/ReceivedState.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/ReceivedState.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/ReceivedState.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/StateDemo.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/StateDemo.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/StateDemo.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/StateDemo.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/application/Application.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/application/Application.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/application/Application.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/application/Application.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/Computer.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/Computer.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/Computer.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/Computer.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/ComputerBuilder.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/ComputerBuilder.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/ComputerBuilder.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/ComputerBuilder.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/HighEndComputer.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/HighEndComputer.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/HighEndComputer.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/HighEndComputer.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/HighEndComputerBuilder.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/HighEndComputerBuilder.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/HighEndComputerBuilder.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/HighEndComputerBuilder.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/StandardComputer.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/StandardComputer.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/StandardComputer.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/StandardComputer.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/StandardComputerBuilder.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/StandardComputerBuilder.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/StandardComputerBuilder.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/StandardComputerBuilder.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/Document.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Document.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/Document.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Document.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/Element.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Element.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/Element.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Element.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/ElementVisitor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/ElementVisitor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/ElementVisitor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/ElementVisitor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/JsonElement.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/JsonElement.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/JsonElement.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/JsonElement.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/Visitor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Visitor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/Visitor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Visitor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/VisitorDemo.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/VisitorDemo.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/VisitorDemo.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/VisitorDemo.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/XmlElement.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/XmlElement.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/XmlElement.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/XmlElement.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/chainofresponsibility/ChainOfResponsibilityIntegrationTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/chainofresponsibility/ChainOfResponsibilityIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/chainofresponsibility/ChainOfResponsibilityIntegrationTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/chainofresponsibility/ChainOfResponsibilityIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/command/test/OpenTextFileOperationUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/OpenTextFileOperationUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/command/test/OpenTextFileOperationUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/OpenTextFileOperationUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/command/test/SaveTextFileOperationUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/SaveTextFileOperationUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/command/test/SaveTextFileOperationUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/SaveTextFileOperationUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/command/test/TextFileOperationExecutorUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/TextFileOperationExecutorUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/command/test/TextFileOperationExecutorUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/TextFileOperationExecutorUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/command/test/TextFileUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/TextFileUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/command/test/TextFileUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/TextFileUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/mediator/MediatorIntegrationTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/mediator/MediatorIntegrationTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/mediator/MediatorIntegrationTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/mediator/MediatorIntegrationTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/nulls/PrimitivesAndWrapperUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/PrimitivesAndWrapperUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/nulls/PrimitivesAndWrapperUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/PrimitivesAndWrapperUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingLombokUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingLombokUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingLombokUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingLombokUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingObjectsUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingObjectsUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingObjectsUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingObjectsUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingOptionalUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingOptionalUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingOptionalUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingOptionalUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingStringUtilsUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingStringUtilsUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingStringUtilsUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingStringUtilsUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/observer/ObserverIntegrationTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/observer/ObserverIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/observer/ObserverIntegrationTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/observer/ObserverIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/state/StatePatternUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/state/StatePatternUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/state/StatePatternUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/state/StatePatternUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/templatemethod/test/TemplateMethodPatternIntegrationTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/templatemethod/test/TemplateMethodPatternIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/templatemethod/test/TemplateMethodPatternIntegrationTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/templatemethod/test/TemplateMethodPatternIntegrationTest.java diff --git a/patterns/design-patterns-creational/README.md b/patterns/design-patterns-creational/README.md new file mode 100644 index 0000000000..99b9b39787 --- /dev/null +++ b/patterns/design-patterns-creational/README.md @@ -0,0 +1,9 @@ +### Relevant Articles: +- [Singletons in Java](https://www.baeldung.com/java-singleton) +- [Introduction to Creational Design Patterns](https://www.baeldung.com/creational-design-patterns) +- [Abstract Factory Pattern in Java](https://www.baeldung.com/java-abstract-factory-pattern) +- [Flyweight Pattern in Java](https://www.baeldung.com/java-flyweight) +- [Double-Checked Locking with Singleton](https://www.baeldung.com/java-singleton-double-checked-locking) +- [Java Constructors vs Static Factory Methods](https://www.baeldung.com/java-constructors-vs-static-factory-methods) +- [Automatic Generation of the Builder Pattern with FreeBuilder](https://www.baeldung.com/java-builder-pattern-freebuilder) +- [How to Replace Many if Statements in Java](https://www.baeldung.com/java-replace-if-statements) \ No newline at end of file diff --git a/patterns/design-patterns-creational/pom.xml b/patterns/design-patterns-creational/pom.xml new file mode 100644 index 0000000000..351f69f749 --- /dev/null +++ b/patterns/design-patterns-creational/pom.xml @@ -0,0 +1,47 @@ + + + 4.0.0 + design-patterns-creational + 1.0 + design-patterns-creational + jar + + + com.baeldung + patterns + 1.0.0-SNAPSHOT + .. + + + + + org.inferred + freebuilder + ${freebuilder.version} + true + + + com.google.code.findbugs + jsr305 + ${javax.annotations.version} + + + + org.assertj + assertj-core + ${assertj-core.version} + test + + + + + UTF-8 + 1.8 + 1.8 + + 2.4.1 + 3.0.2 + 3.9.1 + + diff --git a/patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java similarity index 97% rename from patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java index d19772072f..8730542dcb 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java +++ b/patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java @@ -1,12 +1,12 @@ -package com.baeldung.constructorsstaticfactorymethods.application; - -import com.baeldung.constructorsstaticfactorymethods.entities.User; - -public class Application { - - public static void main(String[] args) { - User user1 = User.createWithDefaultCountry("John", "john@domain.com"); - User user2 = User.createWithLoggedInstantiationTime("John", "john@domain.com", "Argentina"); - User user3 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); - } +package com.baeldung.constructorsstaticfactorymethods.application; + +import com.baeldung.constructorsstaticfactorymethods.entities.User; + +public class Application { + + public static void main(String[] args) { + User user1 = User.createWithDefaultCountry("John", "john@domain.com"); + User user2 = User.createWithLoggedInstantiationTime("John", "john@domain.com", "Argentina"); + User user3 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); + } } \ No newline at end of file diff --git a/patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java similarity index 96% rename from patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java index 4036b622c6..f05a3baaa3 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java +++ b/patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java @@ -1,63 +1,63 @@ -package com.baeldung.constructorsstaticfactorymethods.entities; - -import java.time.LocalTime; -import java.util.logging.ConsoleHandler; -import java.util.logging.Level; -import java.util.logging.Logger; -import java.util.logging.SimpleFormatter; - -public class User { - - private static volatile User instance = null; - private static final Logger LOGGER = Logger.getLogger(User.class.getName()); - private final String name; - private final String email; - private final String country; - - public static User createWithDefaultCountry(String name, String email) { - return new User(name, email, "Argentina"); - } - - public static User createWithLoggedInstantiationTime(String name, String email, String country) { - setLoggerProperties(); - LOGGER.log(Level.INFO, "Creating User instance at : {0}", LocalTime.now()); - return new User(name, email, country); - } - - public static User getSingletonInstance(String name, String email, String country) { - if (instance == null) { - synchronized (User.class) { - if (instance == null) { - instance = new User(name, email, country); - } - } - } - return instance; - - } - - private User(String name, String email, String country) { - this.name = name; - this.email = email; - this.country = country; - } - - public String getName() { - return name; - } - - public String getEmail() { - return email; - } - - public String getCountry() { - return country; - } - - private static void setLoggerProperties() { - ConsoleHandler handler = new ConsoleHandler(); - handler.setLevel(Level.INFO); - handler.setFormatter(new SimpleFormatter()); - LOGGER.addHandler(handler); - } -} +package com.baeldung.constructorsstaticfactorymethods.entities; + +import java.time.LocalTime; +import java.util.logging.ConsoleHandler; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.logging.SimpleFormatter; + +public class User { + + private static volatile User instance = null; + private static final Logger LOGGER = Logger.getLogger(User.class.getName()); + private final String name; + private final String email; + private final String country; + + public static User createWithDefaultCountry(String name, String email) { + return new User(name, email, "Argentina"); + } + + public static User createWithLoggedInstantiationTime(String name, String email, String country) { + setLoggerProperties(); + LOGGER.log(Level.INFO, "Creating User instance at : {0}", LocalTime.now()); + return new User(name, email, country); + } + + public static User getSingletonInstance(String name, String email, String country) { + if (instance == null) { + synchronized (User.class) { + if (instance == null) { + instance = new User(name, email, country); + } + } + } + return instance; + + } + + private User(String name, String email, String country) { + this.name = name; + this.email = email; + this.country = country; + } + + public String getName() { + return name; + } + + public String getEmail() { + return email; + } + + public String getCountry() { + return country; + } + + private static void setLoggerProperties() { + ConsoleHandler handler = new ConsoleHandler(); + handler.setLevel(Level.INFO); + handler.setFormatter(new SimpleFormatter()); + LOGGER.addHandler(handler); + } +} diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AbstractFactory.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AbstractFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AbstractFactory.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AbstractFactory.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AbstractPatternDriver.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AbstractPatternDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AbstractPatternDriver.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AbstractPatternDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Animal.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Animal.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Animal.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Animal.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AnimalFactory.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AnimalFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AnimalFactory.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AnimalFactory.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Brown.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Brown.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Brown.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Brown.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Color.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Color.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Color.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Color.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/ColorFactory.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/ColorFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/ColorFactory.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/ColorFactory.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Dog.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Dog.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Dog.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Dog.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Duck.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Duck.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Duck.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Duck.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/FactoryProvider.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/FactoryProvider.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/FactoryProvider.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/FactoryProvider.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/White.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/White.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/White.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/White.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/builder/BankAccount.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/builder/BankAccount.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/builder/BankAccount.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/builder/BankAccount.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/builder/BuilderPatternDriver.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/builder/BuilderPatternDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/builder/BuilderPatternDriver.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/builder/BuilderPatternDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/FactoryDriver.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/FactoryDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/FactoryDriver.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/FactoryDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Heptagon.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Heptagon.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Heptagon.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Heptagon.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Octagon.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Octagon.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Octagon.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Octagon.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Pentagon.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Pentagon.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Pentagon.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Pentagon.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Polygon.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Polygon.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Polygon.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Polygon.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/PolygonFactory.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/PolygonFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/PolygonFactory.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/PolygonFactory.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Square.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Square.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Square.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Square.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Triangle.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Triangle.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Triangle.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Triangle.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/singleton/Singleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/singleton/Singleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/singleton/Singleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/singleton/Singleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/singleton/SingletonDriver.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/singleton/SingletonDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/singleton/SingletonDriver.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/singleton/SingletonDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/flyweight/Car.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Car.java similarity index 95% rename from patterns/design-patterns/src/main/java/com/baeldung/flyweight/Car.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Car.java index a0b1a7cdf5..80ef992abb 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/flyweight/Car.java +++ b/patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Car.java @@ -2,8 +2,6 @@ package com.baeldung.flyweight; import java.awt.Color; -import javax.annotation.concurrent.Immutable; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -12,7 +10,6 @@ import org.slf4j.LoggerFactory; * * @author Donato Rimenti */ -@Immutable public class Car implements Vehicle { /** diff --git a/patterns/design-patterns/src/main/java/com/baeldung/flyweight/Engine.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Engine.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/flyweight/Engine.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Engine.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/flyweight/Vehicle.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Vehicle.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/flyweight/Vehicle.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Vehicle.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/flyweight/VehicleFactory.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/VehicleFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/flyweight/VehicleFactory.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/VehicleFactory.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/Address.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/Address.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/Address.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/Address.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/Employee.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/Employee.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/Employee.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/Employee.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/builder/Employee.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/builder/Employee.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/builder/Employee.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/builder/Employee.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/AddCommand.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/AddCommand.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/AddCommand.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/AddCommand.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/AddRule.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/AddRule.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/AddRule.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/AddRule.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Addition.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Addition.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Addition.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Addition.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Calculator.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Calculator.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Calculator.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Calculator.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Command.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Command.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Command.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Command.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Division.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Division.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Division.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Division.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Expression.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Expression.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Expression.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Expression.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Modulo.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Modulo.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Modulo.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Modulo.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Multiplication.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Multiplication.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Multiplication.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Multiplication.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Operation.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Operation.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Operation.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Operation.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Operator.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Operator.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Operator.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Operator.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/OperatorFactory.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/OperatorFactory.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/OperatorFactory.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/OperatorFactory.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Result.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Result.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Result.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Result.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Rule.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Rule.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Rule.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Rule.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/RuleEngine.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/RuleEngine.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/RuleEngine.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/RuleEngine.java diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Subtraction.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Subtraction.java similarity index 100% rename from core-java-modules/core-java-8/src/main/java/com/baeldung/reducingIfElse/Subtraction.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/reducingIfElse/Subtraction.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/ClassSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/ClassSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/ClassSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/ClassSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/EnumSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/EnumSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/EnumSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/EnumSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/Sandbox.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/Sandbox.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/Sandbox.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/Sandbox.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/DclSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/DclSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/DclSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/DclSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/DraconianSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/DraconianSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/DraconianSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/DraconianSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/EarlyInitSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/EarlyInitSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/EarlyInitSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/EarlyInitSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/EnumSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/EnumSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/EnumSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/EnumSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/InitOnDemandSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/InitOnDemandSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/InitOnDemandSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/InitOnDemandSingleton.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java similarity index 97% rename from patterns/design-patterns/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java index 0c0266a111..ee8698b18d 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java +++ b/patterns/design-patterns-creational/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java @@ -1,43 +1,43 @@ -package com.baeldung.constructorsstaticfactorymethods; - -import com.baeldung.constructorsstaticfactorymethods.entities.User; -import static org.assertj.core.api.Assertions.assertThat; -import org.junit.Test; - -public class UserUnitTest { - - @Test - public void givenUserClass_whenCalledcreateWithDefaultCountry_thenCorrect() { - assertThat(User.createWithDefaultCountry("John", "john@domain.com")).isInstanceOf(User.class); - } - - @Test - public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetName_thenCorrect() { - User user = User.createWithDefaultCountry("John", "john@domain.com"); - assertThat(user.getName()).isEqualTo("John"); - } - - @Test - public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetEmail_thenCorrect() { - User user = User.createWithDefaultCountry("John", "john@domain.com"); - assertThat(user.getEmail()).isEqualTo("john@domain.com"); - } - - @Test - public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetCountry_thenCorrect() { - User user = User.createWithDefaultCountry("John", "john@domain.com"); - assertThat(user.getCountry()).isEqualTo("Argentina"); - } - - @Test - public void givenUserInstanceCreatedWithcreateWithInstantiationTime_whenCalledcreateWithInstantiationTime_thenCorrect() { - assertThat(User.createWithLoggedInstantiationTime("John", "john@domain.com", "Argentina")).isInstanceOf(User.class); - } - - @Test - public void givenUserInstanceCreatedWithgetSingletonIntance_whenCalledgetSingletonInstance_thenCorrect() { - User user1 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); - User user2 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); - assertThat(user1).isEqualTo(user2); - } +package com.baeldung.constructorsstaticfactorymethods; + +import com.baeldung.constructorsstaticfactorymethods.entities.User; +import static org.assertj.core.api.Assertions.assertThat; +import org.junit.Test; + +public class UserUnitTest { + + @Test + public void givenUserClass_whenCalledcreateWithDefaultCountry_thenCorrect() { + assertThat(User.createWithDefaultCountry("John", "john@domain.com")).isInstanceOf(User.class); + } + + @Test + public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetName_thenCorrect() { + User user = User.createWithDefaultCountry("John", "john@domain.com"); + assertThat(user.getName()).isEqualTo("John"); + } + + @Test + public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetEmail_thenCorrect() { + User user = User.createWithDefaultCountry("John", "john@domain.com"); + assertThat(user.getEmail()).isEqualTo("john@domain.com"); + } + + @Test + public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetCountry_thenCorrect() { + User user = User.createWithDefaultCountry("John", "john@domain.com"); + assertThat(user.getCountry()).isEqualTo("Argentina"); + } + + @Test + public void givenUserInstanceCreatedWithcreateWithInstantiationTime_whenCalledcreateWithInstantiationTime_thenCorrect() { + assertThat(User.createWithLoggedInstantiationTime("John", "john@domain.com", "Argentina")).isInstanceOf(User.class); + } + + @Test + public void givenUserInstanceCreatedWithgetSingletonIntance_whenCalledgetSingletonInstance_thenCorrect() { + User user1 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); + User user2 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); + assertThat(user1).isEqualTo(user2); + } } \ No newline at end of file diff --git a/patterns/design-patterns/src/test/java/com/baeldung/creational/abstractfactory/AbstractPatternIntegrationTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/creational/abstractfactory/AbstractPatternIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/creational/abstractfactory/AbstractPatternIntegrationTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/creational/abstractfactory/AbstractPatternIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/creational/builder/BuilderPatternIntegrationTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/creational/builder/BuilderPatternIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/creational/builder/BuilderPatternIntegrationTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/creational/builder/BuilderPatternIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/creational/factory/FactoryIntegrationTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/creational/factory/FactoryIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/creational/factory/FactoryIntegrationTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/creational/factory/FactoryIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/creational/singleton/SingletonIntegrationTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/creational/singleton/SingletonIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/creational/singleton/SingletonIntegrationTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/creational/singleton/SingletonIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/flyweight/FlyweightUnitTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/flyweight/FlyweightUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/flyweight/FlyweightUnitTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/flyweight/FlyweightUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/freebuilder/EmployeeBuilderUnitTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/freebuilder/EmployeeBuilderUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/freebuilder/EmployeeBuilderUnitTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/freebuilder/EmployeeBuilderUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/freebuilder/builder/EmployeeBuilderUnitTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/freebuilder/builder/EmployeeBuilderUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/freebuilder/builder/EmployeeBuilderUnitTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/freebuilder/builder/EmployeeBuilderUnitTest.java diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/reduceIfelse/CalculatorUnitTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/reduceIfelse/CalculatorUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/reduceIfelse/CalculatorUnitTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/reduceIfelse/CalculatorUnitTest.java diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/reduceIfelse/RuleEngineUnitTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/reduceIfelse/RuleEngineUnitTest.java similarity index 100% rename from core-java-modules/core-java-8/src/test/java/com/baeldung/reduceIfelse/RuleEngineUnitTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/reduceIfelse/RuleEngineUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/singleton/synchronization/SingletonSynchronizationIntegrationTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/singleton/synchronization/SingletonSynchronizationIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/singleton/synchronization/SingletonSynchronizationIntegrationTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/singleton/synchronization/SingletonSynchronizationIntegrationTest.java diff --git a/patterns/design-patterns-functional/README.md b/patterns/design-patterns-functional/README.md new file mode 100644 index 0000000000..04e21bafd5 --- /dev/null +++ b/patterns/design-patterns-functional/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [Currying in Java](https://www.baeldung.com/java-currying) diff --git a/patterns/design-patterns-functional/pom.xml b/patterns/design-patterns-functional/pom.xml new file mode 100644 index 0000000000..5df7cc0cb9 --- /dev/null +++ b/patterns/design-patterns-functional/pom.xml @@ -0,0 +1,25 @@ + + + 4.0.0 + design-patterns-functional + 1.0 + design-patterns-functional + jar + + + com.baeldung + patterns + 1.0.0-SNAPSHOT + .. + + + + + + + UTF-8 + 1.8 + 1.8 + + diff --git a/patterns/design-patterns/src/main/java/com/baeldung/currying/Letter.java b/patterns/design-patterns-functional/src/main/java/com/baeldung/currying/Letter.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/currying/Letter.java rename to patterns/design-patterns-functional/src/main/java/com/baeldung/currying/Letter.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/currying/LetterUnitTest.java b/patterns/design-patterns-functional/src/test/java/com/baeldung/currying/LetterUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/currying/LetterUnitTest.java rename to patterns/design-patterns-functional/src/test/java/com/baeldung/currying/LetterUnitTest.java diff --git a/patterns/design-patterns-structural/README.md b/patterns/design-patterns-structural/README.md new file mode 100644 index 0000000000..91620a522e --- /dev/null +++ b/patterns/design-patterns-structural/README.md @@ -0,0 +1,7 @@ +### Relevant Articles: +- [Facade Design Pattern in Java](https://www.baeldung.com/java-facade-pattern) +- [Proxy, Decorator, Adapter and Bridge Patterns](https://www.baeldung.com/java-structural-design-patterns) +- [Composite Design Pattern in Java](https://www.baeldung.com/java-composite-pattern) +- [The Decorator Pattern in Java](https://www.baeldung.com/java-decorator-pattern) +- [The Adapter Pattern in Java](https://www.baeldung.com/java-adapter-pattern) +- [The Proxy Pattern in Java](https://www.baeldung.com/java-proxy-pattern) diff --git a/patterns/design-patterns-structural/pom.xml b/patterns/design-patterns-structural/pom.xml new file mode 100644 index 0000000000..63806058c9 --- /dev/null +++ b/patterns/design-patterns-structural/pom.xml @@ -0,0 +1,30 @@ + + + 4.0.0 + design-patterns-structural + 1.0 + design-patterns-structural + jar + + + com.baeldung + patterns + 1.0.0-SNAPSHOT + .. + + + + + log4j + log4j + ${log4j.version} + + + + + UTF-8 + 1.8 + 1.8 + + diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java similarity index 94% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java index a4e10a0868..9f696a5f40 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java +++ b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java @@ -1,6 +1,6 @@ package com.baeldung.adapter; -import static com.baeldung.util.LogerUtil.LOG; +import static com.baeldung.util.LoggerUtil.LOG; public class AdapterPatternDriver { diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/AstonMartin.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/AstonMartin.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/AstonMartin.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/AstonMartin.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/BugattiVeyron.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/BugattiVeyron.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/BugattiVeyron.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/BugattiVeyron.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/McLaren.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/McLaren.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/McLaren.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/McLaren.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/Movable.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/Movable.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/Movable.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/Movable.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/MovableAdapter.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/MovableAdapter.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/MovableAdapter.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/MovableAdapter.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/MovableAdapterImpl.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/MovableAdapterImpl.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/MovableAdapterImpl.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/MovableAdapterImpl.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Blue.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Blue.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Blue.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Blue.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/BridgePatternDriver.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/BridgePatternDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/BridgePatternDriver.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/BridgePatternDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Color.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Color.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Color.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Color.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Red.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Red.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Red.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Red.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Shape.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Shape.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Shape.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Shape.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Square.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Square.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Square.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Square.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Triangle.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Triangle.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Triangle.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Triangle.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/composite/CompositeDemo.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/composite/CompositeDemo.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/composite/CompositeDemo.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/composite/CompositeDemo.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/composite/Department.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/composite/Department.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/composite/Department.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/composite/Department.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/composite/FinancialDepartment.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/composite/FinancialDepartment.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/composite/FinancialDepartment.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/composite/FinancialDepartment.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/composite/HeadDepartment.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/composite/HeadDepartment.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/composite/HeadDepartment.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/composite/HeadDepartment.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/composite/SalesDepartment.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/composite/SalesDepartment.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/composite/SalesDepartment.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/composite/SalesDepartment.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/BubbleLights.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/BubbleLights.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/BubbleLights.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/BubbleLights.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/ChristmasTree.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/ChristmasTree.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/ChristmasTree.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/ChristmasTree.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/ChristmasTreeImpl.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/ChristmasTreeImpl.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/ChristmasTreeImpl.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/ChristmasTreeImpl.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java similarity index 90% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java index c20c23ff6e..6a9da7c78c 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java +++ b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java @@ -1,6 +1,6 @@ package com.baeldung.decorator; -import static com.baeldung.util.LogerUtil.LOG; +import static com.baeldung.util.LoggerUtil.LOG; public class DecoratorPatternDriver { diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/Garland.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/Garland.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/Garland.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/Garland.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/TreeDecorator.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/TreeDecorator.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/TreeDecorator.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/TreeDecorator.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/CarEngineFacade.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/CarEngineFacade.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/CarEngineFacade.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/CarEngineFacade.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/AirFlowController.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/AirFlowController.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/AirFlowController.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/AirFlowController.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/AirFlowMeter.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/AirFlowMeter.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/AirFlowMeter.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/AirFlowMeter.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/CatalyticConverter.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/CatalyticConverter.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/CatalyticConverter.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/CatalyticConverter.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/CoolingController.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/CoolingController.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/CoolingController.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/CoolingController.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/FuelInjector.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/FuelInjector.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/FuelInjector.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/FuelInjector.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/FuelPump.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/FuelPump.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/FuelPump.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/FuelPump.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/Radiator.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/Radiator.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/Radiator.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/Radiator.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/Starter.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/Starter.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/Starter.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/Starter.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/TemperatureSensor.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/TemperatureSensor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/TemperatureSensor.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/TemperatureSensor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObject.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObject.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObject.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObject.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java similarity index 88% rename from patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java index 7ade31da88..6d38672a63 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java +++ b/patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java @@ -1,6 +1,6 @@ package com.baeldung.proxy; -import static com.baeldung.util.LogerUtil.LOG;; +import static com.baeldung.util.LoggerUtil.LOG; public class ExpensiveObjectImpl implements ExpensiveObject { diff --git a/patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObjectProxy.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectProxy.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObjectProxy.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectProxy.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/proxy/ProxyPatternDriver.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ProxyPatternDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/proxy/ProxyPatternDriver.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ProxyPatternDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/util/LogerUtil.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/util/LoggerUtil.java similarity index 87% rename from patterns/design-patterns/src/main/java/com/baeldung/util/LogerUtil.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/util/LoggerUtil.java index 7217a4bc40..9702cba0f5 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/util/LogerUtil.java +++ b/patterns/design-patterns-structural/src/main/java/com/baeldung/util/LoggerUtil.java @@ -8,7 +8,7 @@ import java.util.Properties; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; -public class LogerUtil { +public class LoggerUtil { public final static Logger LOG = Logger.getLogger("GLOBAL"); @@ -22,7 +22,7 @@ public class LogerUtil { props.load( new BufferedReader( new InputStreamReader( - LogerUtil.class.getResourceAsStream("/log4jstructuraldp.properties") + LoggerUtil.class.getResourceAsStream("/log4jstructuraldp.properties") ) ) ); diff --git a/patterns/design-patterns/src/main/resources/log4jstructuraldp.properties b/patterns/design-patterns-structural/src/main/resources/log4jstructuraldp.properties similarity index 100% rename from patterns/design-patterns/src/main/resources/log4jstructuraldp.properties rename to patterns/design-patterns-structural/src/main/resources/log4jstructuraldp.properties diff --git a/patterns/design-patterns/src/test/java/com/baeldung/AdapterPatternIntegrationTest.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/adapter/AdapterPatternIntegrationTest.java similarity index 75% rename from patterns/design-patterns/src/test/java/com/baeldung/AdapterPatternIntegrationTest.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/adapter/AdapterPatternIntegrationTest.java index 78a1492d83..536caf7341 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/AdapterPatternIntegrationTest.java +++ b/patterns/design-patterns-structural/src/test/java/com/baeldung/adapter/AdapterPatternIntegrationTest.java @@ -1,16 +1,9 @@ -package com.baeldung; +package com.baeldung.adapter; import static org.junit.Assert.assertEquals; import org.junit.Test; -import com.baeldung.adapter.AstonMartin; -import com.baeldung.adapter.BugattiVeyron; -import com.baeldung.adapter.McLaren; -import com.baeldung.adapter.Movable; -import com.baeldung.adapter.MovableAdapter; -import com.baeldung.adapter.MovableAdapterImpl; - public class AdapterPatternIntegrationTest { @Test public void givenMovableAdapter_WhenConvertingMPHToKMPH_thenSuccessfullyConverted() { diff --git a/patterns/design-patterns/src/test/java/com/baeldung/BridgePatternIntegrationTest.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/bridge/BridgePatternIntegrationTest.java similarity index 72% rename from patterns/design-patterns/src/test/java/com/baeldung/BridgePatternIntegrationTest.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/bridge/BridgePatternIntegrationTest.java index adcb5cdd2c..814a91c070 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/BridgePatternIntegrationTest.java +++ b/patterns/design-patterns-structural/src/test/java/com/baeldung/bridge/BridgePatternIntegrationTest.java @@ -1,15 +1,9 @@ -package com.baeldung; +package com.baeldung.bridge; import static org.junit.Assert.*; import org.junit.Test; -import com.baeldung.bridge.Blue; -import com.baeldung.bridge.Red; -import com.baeldung.bridge.Shape; -import com.baeldung.bridge.Square; -import com.baeldung.bridge.Triangle; - public class BridgePatternIntegrationTest { @Test diff --git a/patterns/design-patterns/src/test/java/com/baeldung/DecoratorPatternIntegrationTest.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/decorator/DecoratorPatternIntegrationTest.java similarity index 75% rename from patterns/design-patterns/src/test/java/com/baeldung/DecoratorPatternIntegrationTest.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/decorator/DecoratorPatternIntegrationTest.java index 23a717ae2e..0f2e262346 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/DecoratorPatternIntegrationTest.java +++ b/patterns/design-patterns-structural/src/test/java/com/baeldung/decorator/DecoratorPatternIntegrationTest.java @@ -1,14 +1,9 @@ -package com.baeldung; +package com.baeldung.decorator; import static org.junit.Assert.assertEquals; import org.junit.Test; -import com.baeldung.decorator.BubbleLights; -import com.baeldung.decorator.ChristmasTree; -import com.baeldung.decorator.ChristmasTreeImpl; -import com.baeldung.decorator.Garland; - public class DecoratorPatternIntegrationTest { @Test public void givenDecoratorPattern_WhenDecoratorsInjectedAtRuntime_thenConfigSuccess() { diff --git a/patterns/design-patterns/src/test/java/com/baeldung/facade/CarEngineFacadeIntegrationTest.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/facade/CarEngineFacadeIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/facade/CarEngineFacadeIntegrationTest.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/facade/CarEngineFacadeIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/ProxyPatternIntegrationTest.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/ProxyPatternIntegrationTest.java similarity index 87% rename from patterns/design-patterns/src/test/java/com/baeldung/ProxyPatternIntegrationTest.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/ProxyPatternIntegrationTest.java index c035793b64..6db19f7cea 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/ProxyPatternIntegrationTest.java +++ b/patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/ProxyPatternIntegrationTest.java @@ -1,6 +1,6 @@ -package com.baeldung; +package com.baeldung.proxy; -import static com.baeldung.util.LogerUtil.LOG; +import static com.baeldung.util.LoggerUtil.LOG; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @@ -11,9 +11,6 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import com.baeldung.proxy.ExpensiveObject; -import com.baeldung.proxy.ExpensiveObjectProxy; - public class ProxyPatternIntegrationTest { public static TestAppenderDP appender; diff --git a/patterns/design-patterns/src/test/java/com/baeldung/TestAppenderDP.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/TestAppenderDP.java similarity index 95% rename from patterns/design-patterns/src/test/java/com/baeldung/TestAppenderDP.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/TestAppenderDP.java index 2b3bc47292..1c6d9a2064 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/TestAppenderDP.java +++ b/patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/TestAppenderDP.java @@ -1,4 +1,4 @@ -package com.baeldung; +package com.baeldung.proxy; import java.util.ArrayList; import java.util.List; diff --git a/patterns/design-patterns/README.md b/patterns/design-patterns/README.md deleted file mode 100644 index 1c611f05d2..0000000000 --- a/patterns/design-patterns/README.md +++ /dev/null @@ -1,23 +0,0 @@ -### Relevant Articles: -- [Facade Design Pattern in Java](http://www.baeldung.com/java-facade-pattern) -- [Singletons in Java](http://www.baeldung.com/java-singleton) -- [Proxy, Decorator, Adapter and Bridge Patterns](http://www.baeldung.com/java-structural-design-patterns) -- [Introduction to Creational Design Patterns](http://www.baeldung.com/creational-design-patterns) -- [The Observer Pattern in Java](http://www.baeldung.com/java-observer-pattern) -- [Flyweight Pattern in Java](http://www.baeldung.com/java-flyweight) -- [Service Locator Pattern](http://www.baeldung.com/java-service-locator-pattern) -- [Double-Checked Locking with Singleton](http://www.baeldung.com/java-singleton-double-checked-locking) -- [Composite Design Pattern in Java](http://www.baeldung.com/java-composite-pattern) -- [Visitor Design Pattern in Java](http://www.baeldung.com/java-visitor-pattern) -- [The DAO Pattern in Java](http://www.baeldung.com/java-dao-pattern) -- [Interpreter Design Pattern in Java](http://www.baeldung.com/java-interpreter-pattern) -- [State Design Pattern in Java](https://www.baeldung.com/java-state-design-pattern) -- [The Decorator Pattern in Java](https://www.baeldung.com/java-decorator-pattern) -- [Abstract Factory Pattern in Java](https://www.baeldung.com/java-abstract-factory-pattern) -- [Implementing the Template Method Pattern in Java](http://www.baeldung.com/java-template-method-pattern) -- [Chain of Responsibility Design Pattern in Java](http://www.baeldung.com/chain-of-responsibility-pattern) -- [The Command Pattern in Java](http://www.baeldung.com/java-command-pattern) -- [Java Constructors vs Static Factory Methods](https://www.baeldung.com/java-constructors-vs-static-factory-methods) -- [The Adapter Pattern in Java](https://www.baeldung.com/java-adapter-pattern) -- [Currying in Java](https://www.baeldung.com/java-currying) -- [The Proxy Pattern in Java](https://www.baeldung.com/java-proxy-pattern) diff --git a/patterns/pom.xml b/patterns/pom.xml index 7f7368ca07..196c3c3319 100644 --- a/patterns/pom.xml +++ b/patterns/pom.xml @@ -16,8 +16,12 @@ front-controller intercepting-filter - design-patterns - design-patterns-2 + design-patterns-architectural + design-patterns-behavioral + design-patterns-behavioral-2 + design-patterns-creational + design-patterns-functional + design-patterns-structural solid dip backoff-jitter diff --git a/persistence-modules/hibernate-parameters/pom.xml b/persistence-modules/hibernate-parameters/pom.xml new file mode 100644 index 0000000000..b744e181da --- /dev/null +++ b/persistence-modules/hibernate-parameters/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + com.baeldung + hibernate-parameters + 0.1-SNAPSHOT + hibernate-parameters + jar + Hibernate tutorial illustrating the use of named parameters + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + ../../ + + + + + org.hibernate + hibernate-core + 5.4.4.Final + + + + com.h2database + h2 + 1.4.196 + + + + + + + false + src/test/java + + **/*.xml + + + + src/test/resources + + + + + + true + + + diff --git a/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/Event.hbm.xml b/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/Event.hbm.xml new file mode 100644 index 0000000000..4055718776 --- /dev/null +++ b/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/Event.hbm.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + diff --git a/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/Event.java b/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/Event.java new file mode 100644 index 0000000000..f44b1bfd8a --- /dev/null +++ b/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/Event.java @@ -0,0 +1,30 @@ +package com.baeldung.hibernate_parameters; + +public class Event { + private Long id; + + private String title; + + public Event() { + } + + public Event(String title) { + this.title = title; + } + + public Long getId() { + return id; + } + + private void setId(Long id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } +} \ No newline at end of file diff --git a/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/NamedParameterUnitTest.java b/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/NamedParameterUnitTest.java new file mode 100644 index 0000000000..23854dc393 --- /dev/null +++ b/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/NamedParameterUnitTest.java @@ -0,0 +1,72 @@ +package com.baeldung.hibernate_parameters; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistry; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.query.Query; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; + +public class NamedParameterUnitTest { + private SessionFactory sessionFactory; + + @Before + public void setUp() throws Exception { + final StandardServiceRegistry registry = new StandardServiceRegistryBuilder() + .configure() + .build(); + try { + sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory(); + Session session = sessionFactory.openSession(); + session.beginTransaction(); + session.save(new Event("Event 1")); + session.save(new Event("Event 2")); + session.getTransaction().commit(); + session.close(); + } catch (Exception e) { + StandardServiceRegistryBuilder.destroy(registry); + } + } + + @After + public void tearDown() throws Exception { + if (sessionFactory != null) { + sessionFactory.close(); + } + } + + @Test + public void whenNamedParameterProvided_thenCorrect() { + Session session = sessionFactory.openSession(); + session.beginTransaction(); + Query query = session.createQuery("from Event E WHERE E.title = :eventTitle", Event.class); + + // This binds the value "Event1" to the parameter :eventTitle + query.setParameter("eventTitle", "Event 1"); + + assertEquals(1, query.list().size()); + session.getTransaction().commit(); + session.close(); + } + + @Test(expected = org.hibernate.QueryException.class) + public void whenNamedParameterMissing_thenThrowsQueryException() { + Session session = sessionFactory.openSession(); + session.beginTransaction(); + Query query = session.createQuery("from Event E WHERE E.title = :eventTitle", Event.class); + + try { + query.list(); + fail("We are expecting an exception!"); + } finally { + session.getTransaction().commit(); + session.close(); + } + } +} diff --git a/persistence-modules/hibernate-parameters/src/test/resources/hibernate.cfg.xml b/persistence-modules/hibernate-parameters/src/test/resources/hibernate.cfg.xml new file mode 100644 index 0000000000..480baae4c1 --- /dev/null +++ b/persistence-modules/hibernate-parameters/src/test/resources/hibernate.cfg.xml @@ -0,0 +1,28 @@ + + + + + + + org.h2.Driver + jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE + sa + + + 1 + + org.hibernate.dialect.H2Dialect + + org.hibernate.cache.internal.NoCacheProvider + + true + + create + + + + + + \ No newline at end of file diff --git a/persistence-modules/java-cassandra/README.md b/persistence-modules/java-cassandra/README.md index 3ab6f5f099..f3710c9d69 100644 --- a/persistence-modules/java-cassandra/README.md +++ b/persistence-modules/java-cassandra/README.md @@ -1,2 +1,3 @@ ### Relevant Articles: - [A Guide to Cassandra with Java](http://www.baeldung.com/cassandra-with-java) +- [Intro to DataStax Java Driver for Apache Cassandra](https://www.baeldung.com/cassandra-datastax-java-driver) diff --git a/persistence-modules/java-jpa-2/README.md b/persistence-modules/java-jpa-2/README.md index 579dcbdab0..0e1889c1fc 100644 --- a/persistence-modules/java-jpa-2/README.md +++ b/persistence-modules/java-jpa-2/README.md @@ -1,4 +1,8 @@ # Relevant Articles -- [JPA Query Parameters Usage](http://www.baeldung.com/jpa-query-parameters-usage) +- [JPA Query Parameters Usage](https://www.baeldung.com/jpa-query-parameters-usage) - [Mapping Entitiy Class Names to SQL Table Names with JPA](https://www.baeldung.com/jpa-entity-table-names) +- [Default Column Values in JPA](https://www.baeldung.com/jpa-default-column-values) +- [Types of JPA Queries](https://www.baeldung.com/jpa-queries) +- [JPA/Hibernate Projections](https://www.baeldung.com/jpa-hibernate-projections) +- [Combining JPA And/Or Criteria Predicates](https://www.baeldung.com/jpa-and-or-criteria-predicates) diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/criteria/repository/CustomItemRepository.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/criteria/CustomItemRepository.java similarity index 59% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/criteria/repository/CustomItemRepository.java rename to persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/criteria/CustomItemRepository.java index c55dc4a592..c85ac53ac2 100644 --- a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/criteria/repository/CustomItemRepository.java +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/criteria/CustomItemRepository.java @@ -1,12 +1,10 @@ -package com.baeldung.jpa.criteria.repository; - -import java.util.List; - -import com.baeldung.jpa.criteria.entity.Item; - -public interface CustomItemRepository { - - List findItemsByColorAndGrade(); - - List findItemByColorOrGrade(); -} +package com.baeldung.jpa.criteria; + +import java.util.List; + +public interface CustomItemRepository { + + List findItemsByColorAndGrade(); + + List findItemByColorOrGrade(); +} diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/criteria/repository/impl/CustomItemRepositoryImpl.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/criteria/CustomItemRepositoryImpl.java similarity index 91% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/criteria/repository/impl/CustomItemRepositoryImpl.java rename to persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/criteria/CustomItemRepositoryImpl.java index bf1d3eed0b..c64cd14ca5 100644 --- a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/criteria/repository/impl/CustomItemRepositoryImpl.java +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/criteria/CustomItemRepositoryImpl.java @@ -1,77 +1,72 @@ -package com.baeldung.jpa.criteria.repository.impl; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.Persistence; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Predicate; -import javax.persistence.criteria.Root; - -import com.baeldung.jpa.criteria.entity.Item; -import com.baeldung.jpa.criteria.repository.CustomItemRepository; - -public class CustomItemRepositoryImpl implements CustomItemRepository { - - private EntityManager entityManager; - - public CustomItemRepositoryImpl() { - super(); - EntityManagerFactory factory = Persistence.createEntityManagerFactory("jpa-h2-criteria"); - entityManager = factory.createEntityManager(); - } - - @Override - public List findItemsByColorAndGrade() { - - CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); - CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(Item.class); - Root itemRoot = criteriaQuery.from(Item.class); - - Predicate predicateForBlueColor = criteriaBuilder.equal(itemRoot.get("color"), "blue"); - Predicate predicateForRedColor = criteriaBuilder.equal(itemRoot.get("color"), "red"); - Predicate predicateForColor = criteriaBuilder.or(predicateForBlueColor, predicateForRedColor); - - Predicate predicateForGradeA = criteriaBuilder.equal(itemRoot.get("grade"), "A"); - Predicate predicateForGradeB = criteriaBuilder.equal(itemRoot.get("grade"), "B"); - Predicate predicateForGrade = criteriaBuilder.or(predicateForGradeA, predicateForGradeB); - - // final search filter - Predicate finalPredicate = criteriaBuilder.and(predicateForColor, predicateForGrade); - - criteriaQuery.where(finalPredicate); - - List items = entityManager.createQuery(criteriaQuery) - .getResultList(); - return items; - } - - @Override - public List findItemByColorOrGrade() { - - CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); - CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(Item.class); - Root itemRoot = criteriaQuery.from(Item.class); - - Predicate predicateForBlueColor = criteriaBuilder.equal(itemRoot.get("color"), "red"); - Predicate predicateForGradeA = criteriaBuilder.equal(itemRoot.get("grade"), "D"); - Predicate predicateForBlueColorAndGradeA = criteriaBuilder.and(predicateForBlueColor, predicateForGradeA); - - Predicate predicateForRedColor = criteriaBuilder.equal(itemRoot.get("color"), "blue"); - Predicate predicateForGradeB = criteriaBuilder.equal(itemRoot.get("grade"), "B"); - Predicate predicateForRedColorAndGradeB = criteriaBuilder.and(predicateForRedColor, predicateForGradeB); - - // final search filter - Predicate finalPredicate = criteriaBuilder.or(predicateForBlueColorAndGradeA, predicateForRedColorAndGradeB); - - criteriaQuery.where(finalPredicate); - - List items = entityManager.createQuery(criteriaQuery) - .getResultList(); - return items; - } -} +package com.baeldung.jpa.criteria; + +import java.util.List; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; + +public class CustomItemRepositoryImpl implements CustomItemRepository { + + private EntityManager entityManager; + + public CustomItemRepositoryImpl() { + super(); + EntityManagerFactory factory = Persistence.createEntityManagerFactory("jpa-h2-criteria"); + entityManager = factory.createEntityManager(); + } + + @Override + public List findItemsByColorAndGrade() { + + CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); + CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(Item.class); + Root itemRoot = criteriaQuery.from(Item.class); + + Predicate predicateForBlueColor = criteriaBuilder.equal(itemRoot.get("color"), "blue"); + Predicate predicateForRedColor = criteriaBuilder.equal(itemRoot.get("color"), "red"); + Predicate predicateForColor = criteriaBuilder.or(predicateForBlueColor, predicateForRedColor); + + Predicate predicateForGradeA = criteriaBuilder.equal(itemRoot.get("grade"), "A"); + Predicate predicateForGradeB = criteriaBuilder.equal(itemRoot.get("grade"), "B"); + Predicate predicateForGrade = criteriaBuilder.or(predicateForGradeA, predicateForGradeB); + + // final search filter + Predicate finalPredicate = criteriaBuilder.and(predicateForColor, predicateForGrade); + + criteriaQuery.where(finalPredicate); + + List items = entityManager.createQuery(criteriaQuery) + .getResultList(); + return items; + } + + @Override + public List findItemByColorOrGrade() { + + CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); + CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(Item.class); + Root itemRoot = criteriaQuery.from(Item.class); + + Predicate predicateForBlueColor = criteriaBuilder.equal(itemRoot.get("color"), "red"); + Predicate predicateForGradeA = criteriaBuilder.equal(itemRoot.get("grade"), "D"); + Predicate predicateForBlueColorAndGradeA = criteriaBuilder.and(predicateForBlueColor, predicateForGradeA); + + Predicate predicateForRedColor = criteriaBuilder.equal(itemRoot.get("color"), "blue"); + Predicate predicateForGradeB = criteriaBuilder.equal(itemRoot.get("grade"), "B"); + Predicate predicateForRedColorAndGradeB = criteriaBuilder.and(predicateForRedColor, predicateForGradeB); + + // final search filter + Predicate finalPredicate = criteriaBuilder.or(predicateForBlueColorAndGradeA, predicateForRedColorAndGradeB); + + criteriaQuery.where(finalPredicate); + + List items = entityManager.createQuery(criteriaQuery) + .getResultList(); + return items; + } +} diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/criteria/entity/Item.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/criteria/Item.java similarity index 89% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/criteria/entity/Item.java rename to persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/criteria/Item.java index 64ef46f265..f6093e5735 100644 --- a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/criteria/entity/Item.java +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/criteria/Item.java @@ -1,49 +1,49 @@ -package com.baeldung.jpa.criteria.entity; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; - -@Table(name = "item") -@Entity -public class Item { - - @Id - private Long id; - private String color; - private String grade; - private String name; - - public String getColor() { - return color; - } - - public String getGrade() { - return grade; - } - - public Long getId() { - return id; - } - - public String getName() { - return name; - } - - public void setColor(String color) { - this.color = color; - } - - public void setGrade(String grade) { - this.grade = grade; - } - - public void setId(Long id) { - this.id = id; - } - - public void setName(String name) { - this.name = name; - } - -} +package com.baeldung.jpa.criteria; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Table(name = "item") +@Entity +public class Item { + + @Id + private Long id; + private String color; + private String grade; + private String name; + + public String getColor() { + return color; + } + + public String getGrade() { + return grade; + } + + public Long getId() { + return id; + } + + public String getName() { + return name; + } + + public void setColor(String color) { + this.color = color; + } + + public void setGrade(String grade) { + this.grade = grade; + } + + public void setId(Long id) { + this.id = id; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/defaultvalues/User.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/defaultvalues/User.java similarity index 100% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/defaultvalues/User.java rename to persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/defaultvalues/User.java diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/defaultvalues/UserRepository.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/defaultvalues/UserRepository.java similarity index 100% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/defaultvalues/UserRepository.java rename to persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/defaultvalues/UserRepository.java diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/projections/Product.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/projections/Product.java similarity index 100% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/projections/Product.java rename to persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/projections/Product.java diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/projections/ProductRepository.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/projections/ProductRepository.java similarity index 100% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/projections/ProductRepository.java rename to persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/projections/ProductRepository.java diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/querytypes/QueryTypesExamples.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/querytypes/QueryTypesExamples.java similarity index 100% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/querytypes/QueryTypesExamples.java rename to persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/querytypes/QueryTypesExamples.java diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/querytypes/UserEntity.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/querytypes/UserEntity.java similarity index 100% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/querytypes/UserEntity.java rename to persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/querytypes/UserEntity.java diff --git a/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml b/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml index 560a75070c..62d7ce0f5e 100644 --- a/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml +++ b/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml @@ -32,4 +32,91 @@ value="queryparams.sql" /> + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.defaultvalues.User + true + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.querytypes.UserEntity + true + + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.projections.Product + true + + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.criteria.Item + true + + + + + + + + + + + + + \ No newline at end of file diff --git a/persistence-modules/java-jpa/src/test/resources/item.sql b/persistence-modules/java-jpa-2/src/main/resources/item.sql similarity index 98% rename from persistence-modules/java-jpa/src/test/resources/item.sql rename to persistence-modules/java-jpa-2/src/main/resources/item.sql index faf50f6829..871dcee017 100644 --- a/persistence-modules/java-jpa/src/test/resources/item.sql +++ b/persistence-modules/java-jpa-2/src/main/resources/item.sql @@ -1,4 +1,4 @@ -insert into item(id,grade,color) values (10,'C','blue'); -insert into item(id,grade,color) values (11,'C','red'); -insert into item(id,grade,color) values (12,'A','blue'); +insert into item(id,grade,color) values (10,'C','blue'); +insert into item(id,grade,color) values (11,'C','red'); +insert into item(id,grade,color) values (12,'A','blue'); insert into item(id,grade,color) values (13,'D','red'); \ No newline at end of file diff --git a/persistence-modules/java-jpa/src/main/resources/products_jpa.sql b/persistence-modules/java-jpa-2/src/main/resources/products_jpa.sql similarity index 100% rename from persistence-modules/java-jpa/src/main/resources/products_jpa.sql rename to persistence-modules/java-jpa-2/src/main/resources/products_jpa.sql diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/criteria/repository/impl/CustomItemRepositoryIntegrationTest.java b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/criteria/CustomItemRepositoryIntegrationTest.java similarity index 86% rename from persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/criteria/repository/impl/CustomItemRepositoryIntegrationTest.java rename to persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/criteria/CustomItemRepositoryIntegrationTest.java index 169fb44618..8d6bf3c4a7 100644 --- a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/criteria/repository/impl/CustomItemRepositoryIntegrationTest.java +++ b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/criteria/CustomItemRepositoryIntegrationTest.java @@ -1,44 +1,44 @@ -package com.baeldung.jpa.criteria.repository.impl; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; - -import java.util.List; - -import org.junit.Test; - -import com.baeldung.jpa.criteria.entity.Item; -import com.baeldung.jpa.criteria.repository.CustomItemRepository; - -public class CustomItemRepositoryIntegrationTest { - - CustomItemRepository customItemRepository = new CustomItemRepositoryImpl(); - - @Test - public void givenItems_whenFindItemsByColorAndGrade_thenReturnItems() { - - List items = customItemRepository.findItemsByColorAndGrade(); - - assertFalse("No items found", items.isEmpty()); - assertEquals("There should be only one item", 1, items.size()); - - Item item = items.get(0); - - assertEquals("this item do not have blue color", "blue", item.getColor()); - assertEquals("this item does not belong to A grade", "A", item.getGrade()); - } - - @Test - public void givenItems_whenFindItemByColorOrGrade_thenReturnItems() { - - List items = customItemRepository.findItemByColorOrGrade(); - - assertFalse("No items found", items.isEmpty()); - assertEquals("There should be only one item", 1, items.size()); - - Item item = items.get(0); - - assertEquals("this item do not have red color", "red", item.getColor()); - assertEquals("this item does not belong to D grade", "D", item.getGrade()); - } -} +package com.baeldung.jpa.criteria; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + +import java.util.List; + +import org.junit.Test; + +import com.baeldung.jpa.criteria.Item; +import com.baeldung.jpa.criteria.CustomItemRepository; + +public class CustomItemRepositoryIntegrationTest { + + CustomItemRepository customItemRepository = new CustomItemRepositoryImpl(); + + @Test + public void givenItems_whenFindItemsByColorAndGrade_thenReturnItems() { + + List items = customItemRepository.findItemsByColorAndGrade(); + + assertFalse("No items found", items.isEmpty()); + assertEquals("There should be only one item", 1, items.size()); + + Item item = items.get(0); + + assertEquals("this item do not have blue color", "blue", item.getColor()); + assertEquals("this item does not belong to A grade", "A", item.getGrade()); + } + + @Test + public void givenItems_whenFindItemByColorOrGrade_thenReturnItems() { + + List items = customItemRepository.findItemByColorOrGrade(); + + assertFalse("No items found", items.isEmpty()); + assertEquals("There should be only one item", 1, items.size()); + + Item item = items.get(0); + + assertEquals("this item do not have red color", "red", item.getColor()); + assertEquals("this item does not belong to D grade", "D", item.getGrade()); + } +} diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/defaultvalues/UserDefaultValuesUnitTest.java b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/defaultvalues/UserDefaultValuesUnitTest.java similarity index 100% rename from persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/defaultvalues/UserDefaultValuesUnitTest.java rename to persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/defaultvalues/UserDefaultValuesUnitTest.java diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/projections/HibernateProjectionsIntegrationTest.java b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/projections/HibernateProjectionsIntegrationTest.java similarity index 100% rename from persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/projections/HibernateProjectionsIntegrationTest.java rename to persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/projections/HibernateProjectionsIntegrationTest.java diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/projections/ProductRepositoryIntegrationTest.java b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/projections/ProductRepositoryIntegrationTest.java similarity index 100% rename from persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/projections/ProductRepositoryIntegrationTest.java rename to persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/projections/ProductRepositoryIntegrationTest.java diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/querytypes/QueryTypesExamplesIntegrationTest.java b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/querytypes/QueryTypesExamplesIntegrationTest.java similarity index 100% rename from persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/querytypes/QueryTypesExamplesIntegrationTest.java rename to persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/querytypes/QueryTypesExamplesIntegrationTest.java diff --git a/persistence-modules/java-jpa/src/test/resources/products.sql b/persistence-modules/java-jpa-2/src/test/resources/products.sql similarity index 100% rename from persistence-modules/java-jpa/src/test/resources/products.sql rename to persistence-modules/java-jpa-2/src/test/resources/products.sql diff --git a/persistence-modules/java-jpa/src/test/resources/users.sql b/persistence-modules/java-jpa-2/src/test/resources/users.sql similarity index 100% rename from persistence-modules/java-jpa/src/test/resources/users.sql rename to persistence-modules/java-jpa-2/src/test/resources/users.sql diff --git a/persistence-modules/java-jpa/README.md b/persistence-modules/java-jpa/README.md index 5a99217f45..670203f10d 100644 --- a/persistence-modules/java-jpa/README.md +++ b/persistence-modules/java-jpa/README.md @@ -1,16 +1,12 @@ # Relevant Articles -- [A Guide to SqlResultSetMapping](http://www.baeldung.com/jpa-sql-resultset-mapping) -- [A Guide to Stored Procedures with JPA](http://www.baeldung.com/jpa-stored-procedures) +- [A Guide to SqlResultSetMapping](https://www.baeldung.com/jpa-sql-resultset-mapping) +- [A Guide to Stored Procedures with JPA](https://www.baeldung.com/jpa-stored-procedures) - [Fixing the JPA error “java.lang.String cannot be cast to Ljava.lang.String;”](https://www.baeldung.com/jpa-error-java-lang-string-cannot-be-cast) - [JPA Entity Graph](https://www.baeldung.com/jpa-entity-graph) - [JPA 2.2 Support for Java 8 Date/Time Types](https://www.baeldung.com/jpa-java-time) - [Converting Between LocalDate and SQL Date](https://www.baeldung.com/java-convert-localdate-sql-date) -- [Combining JPA And/Or Criteria Predicates](https://www.baeldung.com/jpa-and-or-criteria-predicates) -- [Types of JPA Queries](https://www.baeldung.com/jpa-queries) -- [JPA/Hibernate Projections](https://www.baeldung.com/jpa-hibernate-projections) - [Composite Primary Keys in JPA](https://www.baeldung.com/jpa-composite-primary-keys) - [Defining JPA Entities](https://www.baeldung.com/jpa-entities) - [JPA @Basic Annotation](https://www.baeldung.com/jpa-basic-annotation) -- [Default Column Values in JPA](https://www.baeldung.com/jpa-default-column-values) - [Persisting Enums in JPA](https://www.baeldung.com/jpa-persisting-enums-in-jpa) diff --git a/persistence-modules/java-jpa/pom.xml b/persistence-modules/java-jpa/pom.xml index ced049d281..7ce8262ba5 100644 --- a/persistence-modules/java-jpa/pom.xml +++ b/persistence-modules/java-jpa/pom.xml @@ -57,7 +57,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} -proc:none @@ -65,7 +65,7 @@ org.bsc.maven maven-processor-plugin - 3.3.3 + ${maven-processor-plugin.version} process @@ -86,7 +86,7 @@ org.codehaus.mojo build-helper-maven-plugin - 3.0.0 + ${build-helper-maven-plugin.version} add-source @@ -110,6 +110,8 @@ 2.7.4-RC1 42.2.5 2.2 + 3.3.3 + 3.0.0 \ No newline at end of file diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/util/LocalDateConverter.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/convertdates/LocalDateConverter.java similarity index 94% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/util/LocalDateConverter.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/convertdates/LocalDateConverter.java index 00fd378b05..de6ada2361 100644 --- a/persistence-modules/java-jpa/src/main/java/com/baeldung/util/LocalDateConverter.java +++ b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/convertdates/LocalDateConverter.java @@ -1,4 +1,4 @@ -package com.baeldung.util; +package com.baeldung.jpa.convertdates; import javax.persistence.AttributeConverter; import javax.persistence.Converter; diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/util/Gender.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/Gender.java similarity index 54% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/util/Gender.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/Gender.java index 13f08d995c..8f808f539d 100644 --- a/persistence-modules/java-jpa/src/main/java/com/baeldung/util/Gender.java +++ b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/Gender.java @@ -1,4 +1,4 @@ -package com.baeldung.util; +package com.baeldung.jpa.entity; public enum Gender { MALE, diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/Student.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/Student.java index 531bae40c5..64e7ab586c 100644 --- a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/Student.java +++ b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/Student.java @@ -14,8 +14,6 @@ import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; -import com.baeldung.util.Gender; - @Entity @Table(name="STUDENT") public class Student { diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/Account.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/primarykeys/Account.java similarity index 95% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/Account.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/primarykeys/Account.java index 48a98512fa..915c605e65 100644 --- a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/Account.java +++ b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/primarykeys/Account.java @@ -1,4 +1,4 @@ -package com.baeldung.jpa.entity; +package com.baeldung.jpa.primarykeys; import javax.persistence.Entity; import javax.persistence.Id; diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/AccountId.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/primarykeys/AccountId.java similarity index 97% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/AccountId.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/primarykeys/AccountId.java index 091c326367..1e8a06be63 100644 --- a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/AccountId.java +++ b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/primarykeys/AccountId.java @@ -1,4 +1,4 @@ -package com.baeldung.jpa.entity; +package com.baeldung.jpa.primarykeys; import java.io.Serializable; diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/Book.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/primarykeys/Book.java similarity index 93% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/Book.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/primarykeys/Book.java index 460f302e28..a84eb3ef01 100644 --- a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/Book.java +++ b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/primarykeys/Book.java @@ -1,4 +1,4 @@ -package com.baeldung.jpa.entity; +package com.baeldung.jpa.primarykeys; import javax.persistence.EmbeddedId; import javax.persistence.Entity; diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/BookId.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/primarykeys/BookId.java similarity index 97% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/BookId.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/primarykeys/BookId.java index ff587beaf2..d8c925c148 100644 --- a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/BookId.java +++ b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/primarykeys/BookId.java @@ -1,4 +1,4 @@ -package com.baeldung.jpa.entity; +package com.baeldung.jpa.primarykeys; import java.io.Serializable; diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/sqlresultsetmapping/Employee.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/sqlresultsetmapping/Employee.java similarity index 85% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/sqlresultsetmapping/Employee.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/sqlresultsetmapping/Employee.java index bec1b8845a..b62a21d481 100644 --- a/persistence-modules/java-jpa/src/main/java/com/baeldung/sqlresultsetmapping/Employee.java +++ b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/sqlresultsetmapping/Employee.java @@ -1,4 +1,4 @@ -package com.baeldung.sqlresultsetmapping; +package com.baeldung.jpa.sqlresultsetmapping; import javax.persistence.*; @@ -7,7 +7,7 @@ import javax.persistence.*; name="EmployeeResult", entities={ @EntityResult( - entityClass = com.baeldung.sqlresultsetmapping.Employee.class, + entityClass = com.baeldung.jpa.sqlresultsetmapping.Employee.class, fields={@FieldResult(name="id",column="employeeNumber"), @FieldResult(name="name", column="name")} ) diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/sqlresultsetmapping/ScheduledDay.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/sqlresultsetmapping/ScheduledDay.java similarity index 89% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/sqlresultsetmapping/ScheduledDay.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/sqlresultsetmapping/ScheduledDay.java index 7e332bc67a..a7ca59ab3f 100644 --- a/persistence-modules/java-jpa/src/main/java/com/baeldung/sqlresultsetmapping/ScheduledDay.java +++ b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/sqlresultsetmapping/ScheduledDay.java @@ -1,18 +1,18 @@ -package com.baeldung.sqlresultsetmapping; +package com.baeldung.jpa.sqlresultsetmapping; import javax.persistence.*; @SqlResultSetMappings(value = { @SqlResultSetMapping(name = "ScheduleResult", - classes = { @ConstructorResult(targetClass = com.baeldung.sqlresultsetmapping.ScheduledDay.class, + classes = { @ConstructorResult(targetClass = com.baeldung.jpa.sqlresultsetmapping.ScheduledDay.class, columns = { @ColumnResult(name = "id", type = Long.class), @ColumnResult(name = "employeeId", type = Long.class), @ColumnResult(name = "dayOfWeek") }) }), @SqlResultSetMapping(name = "FridayEmployeeResult", columns = { @ColumnResult(name = "employeeId") }), @SqlResultSetMapping(name = "EmployeeScheduleResults", - entities = { @EntityResult(entityClass = com.baeldung.sqlresultsetmapping.Employee.class), - @EntityResult(entityClass = com.baeldung.sqlresultsetmapping.ScheduledDay.class) + entities = { @EntityResult(entityClass = com.baeldung.jpa.sqlresultsetmapping.Employee.class), + @EntityResult(entityClass = com.baeldung.jpa.sqlresultsetmapping.ScheduledDay.class) }) }) @NamedNativeQuery(name = "FridayEmployees", query = "SELECT employeeId FROM schedule_days WHERE dayOfWeek = 'FRIDAY'", diff --git a/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml b/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml index 1f16bee3ba..b780a6f569 100644 --- a/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml +++ b/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml @@ -7,8 +7,8 @@ org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.sqlresultsetmapping.ScheduledDay - com.baeldung.sqlresultsetmapping.Employee + com.baeldung.jpa.sqlresultsetmapping.ScheduledDay + com.baeldung.jpa.sqlresultsetmapping.Employee com.baeldung.jpa.basicannotation.Course true @@ -115,77 +115,13 @@ - - org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.criteria.entity.Item - true - - - - - - - - - - - - - - - org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.querytypes.UserEntity - true - - - - - - - - - - - - - - - org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.defaultvalues.User - true - - - - - - - - - - - - org.hibernate.jpa.HibernatePersistenceProvider com.baeldung.jpa.entity.Student - com.baeldung.jpa.entity.Book - com.baeldung.jpa.entity.BookId - com.baeldung.jpa.entity.Account - com.baeldung.jpa.entity.AccountId + com.baeldung.jpa.primarykeys.Book + com.baeldung.jpa.primarykeys.BookId + com.baeldung.jpa.primarykeys.Account + com.baeldung.jpa.primarykeys.AccountId true - - org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.projections.Product - true - - - - - - - - - - - - \ No newline at end of file diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/entity/StudentEntityIntegrationTest.java b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/entity/StudentEntityIntegrationTest.java index fdaaba5439..3c7a82edc3 100644 --- a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/entity/StudentEntityIntegrationTest.java +++ b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/entity/StudentEntityIntegrationTest.java @@ -16,8 +16,6 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import com.baeldung.util.Gender; - public class StudentEntityIntegrationTest { private EntityManagerFactory emf; diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/entity/CompositeKeysIntegrationTest.java b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/primarykeys/CompositeKeysIntegrationTest.java similarity index 93% rename from persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/entity/CompositeKeysIntegrationTest.java rename to persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/primarykeys/CompositeKeysIntegrationTest.java index 2d30ebab5e..be529ab81c 100644 --- a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/entity/CompositeKeysIntegrationTest.java +++ b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/primarykeys/CompositeKeysIntegrationTest.java @@ -1,4 +1,4 @@ -package com.baeldung.jpa.entity; +package com.baeldung.jpa.primarykeys; import static org.junit.Assert.assertNotNull; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -7,6 +7,10 @@ import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; +import com.baeldung.jpa.primarykeys.Account; +import com.baeldung.jpa.primarykeys.AccountId; +import com.baeldung.jpa.primarykeys.Book; +import com.baeldung.jpa.primarykeys.BookId; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/sqlresultsetmapping/SqlResultSetMappingUnitTest.java b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/sqlresultsetmapping/SqlResultSetMappingUnitTest.java similarity index 98% rename from persistence-modules/java-jpa/src/test/java/com/baeldung/sqlresultsetmapping/SqlResultSetMappingUnitTest.java rename to persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/sqlresultsetmapping/SqlResultSetMappingUnitTest.java index 4e01095278..f318df3747 100644 --- a/persistence-modules/java-jpa/src/test/java/com/baeldung/sqlresultsetmapping/SqlResultSetMappingUnitTest.java +++ b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/sqlresultsetmapping/SqlResultSetMappingUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.sqlresultsetmapping; +package com.baeldung.jpa.sqlresultsetmapping; import static org.junit.Assert.*; diff --git a/persistence-modules/java-sql2o/README.md b/persistence-modules/persistence-libraries/README.md similarity index 100% rename from persistence-modules/java-sql2o/README.md rename to persistence-modules/persistence-libraries/README.md diff --git a/persistence-modules/java-sql2o/pom.xml b/persistence-modules/persistence-libraries/pom.xml similarity index 97% rename from persistence-modules/java-sql2o/pom.xml rename to persistence-modules/persistence-libraries/pom.xml index fe5a0e5dc8..cce051f303 100644 --- a/persistence-modules/java-sql2o/pom.xml +++ b/persistence-modules/persistence-libraries/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - java-sql2o + persistence-libraries 1.0-SNAPSHOT diff --git a/persistence-modules/java-sql2o/src/test/java/com/baeldung/persistence/sql2o/Sql2oIntegrationTest.java b/persistence-modules/persistence-libraries/src/test/java/com/baeldung/persistence/sql2o/Sql2oIntegrationTest.java similarity index 100% rename from persistence-modules/java-sql2o/src/test/java/com/baeldung/persistence/sql2o/Sql2oIntegrationTest.java rename to persistence-modules/persistence-libraries/src/test/java/com/baeldung/persistence/sql2o/Sql2oIntegrationTest.java diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml index 9ae24efcc1..932b62a235 100644 --- a/persistence-modules/pom.xml +++ b/persistence-modules/pom.xml @@ -23,6 +23,7 @@ hibernate5 hibernate-ogm hibernate-mapping + hibernate-parameters influxdb java-cassandra java-cockroachdb @@ -30,7 +31,7 @@ java-jpa java-jpa-2 java-mongodb - java-sql2o + persistence-libraries jnosql liquibase orientdb diff --git a/persistence-modules/r2dbc/pom.xml b/persistence-modules/r2dbc/pom.xml index 388abafdaf..fd48a47f12 100644 --- a/persistence-modules/r2dbc/pom.xml +++ b/persistence-modules/r2dbc/pom.xml @@ -17,6 +17,7 @@ 1.8 + 0.8.0.M8 @@ -41,7 +42,7 @@ io.r2dbc r2dbc-h2 - 0.8.0.M8 + ${r2dbc-h2.version} diff --git a/persistence-modules/sirix/pom.xml b/persistence-modules/sirix/pom.xml index 677c5b8f3a..8de961120f 100644 --- a/persistence-modules/sirix/pom.xml +++ b/persistence-modules/sirix/pom.xml @@ -20,7 +20,7 @@ io.sirix sirix-core - 0.9.3 + ${sirix-core.version} @@ -48,5 +48,6 @@ UTF-8 11 + 0.9.3 diff --git a/persistence-modules/spring-boot-jdbi/.gitignore b/persistence-modules/spring-boot-jdbi/.gitignore deleted file mode 100644 index a2a3040aa8..0000000000 --- a/persistence-modules/spring-boot-jdbi/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/persistence-modules/spring-boot-jdbi/.mvn/wrapper/MavenWrapperDownloader.java b/persistence-modules/spring-boot-jdbi/.mvn/wrapper/MavenWrapperDownloader.java deleted file mode 100644 index 72308aa479..0000000000 --- a/persistence-modules/spring-boot-jdbi/.mvn/wrapper/MavenWrapperDownloader.java +++ /dev/null @@ -1,114 +0,0 @@ -/* -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. -*/ - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.net.URL; -import java.nio.channels.Channels; -import java.nio.channels.ReadableByteChannel; -import java.util.Properties; - -public class MavenWrapperDownloader { - - /** - * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. - */ - private static final String DEFAULT_DOWNLOAD_URL = - "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"; - - /** - * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to - * use instead of the default one. - */ - private static final String MAVEN_WRAPPER_PROPERTIES_PATH = - ".mvn/wrapper/maven-wrapper.properties"; - - /** - * Path where the maven-wrapper.jar will be saved to. - */ - private static final String MAVEN_WRAPPER_JAR_PATH = - ".mvn/wrapper/maven-wrapper.jar"; - - /** - * Name of the property which should be used to override the default download url for the wrapper. - */ - private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; - - public static void main(String args[]) { - System.out.println("- Downloader started"); - File baseDirectory = new File(args[0]); - System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); - - // If the maven-wrapper.properties exists, read it and check if it contains a custom - // wrapperUrl parameter. - File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); - String url = DEFAULT_DOWNLOAD_URL; - if(mavenWrapperPropertyFile.exists()) { - FileInputStream mavenWrapperPropertyFileInputStream = null; - try { - mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); - Properties mavenWrapperProperties = new Properties(); - mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); - url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); - } catch (IOException e) { - System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); - } finally { - try { - if(mavenWrapperPropertyFileInputStream != null) { - mavenWrapperPropertyFileInputStream.close(); - } - } catch (IOException e) { - // Ignore ... - } - } - } - System.out.println("- Downloading from: : " + url); - - File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); - if(!outputFile.getParentFile().exists()) { - if(!outputFile.getParentFile().mkdirs()) { - System.out.println( - "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'"); - } - } - System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); - try { - downloadFileFromURL(url, outputFile); - System.out.println("Done"); - System.exit(0); - } catch (Throwable e) { - System.out.println("- Error downloading"); - e.printStackTrace(); - System.exit(1); - } - } - - private static void downloadFileFromURL(String urlString, File destination) throws Exception { - URL website = new URL(urlString); - ReadableByteChannel rbc; - rbc = Channels.newChannel(website.openStream()); - FileOutputStream fos = new FileOutputStream(destination); - fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); - fos.close(); - rbc.close(); - } - -} diff --git a/persistence-modules/spring-boot-jdbi/.mvn/wrapper/maven-wrapper.jar b/persistence-modules/spring-boot-jdbi/.mvn/wrapper/maven-wrapper.jar deleted file mode 100644 index 01e6799737..0000000000 Binary files a/persistence-modules/spring-boot-jdbi/.mvn/wrapper/maven-wrapper.jar and /dev/null differ diff --git a/persistence-modules/spring-boot-jdbi/.mvn/wrapper/maven-wrapper.properties b/persistence-modules/spring-boot-jdbi/.mvn/wrapper/maven-wrapper.properties deleted file mode 100644 index cd0d451ccd..0000000000 --- a/persistence-modules/spring-boot-jdbi/.mvn/wrapper/maven-wrapper.properties +++ /dev/null @@ -1 +0,0 @@ -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip diff --git a/persistence-modules/spring-boot-jdbi/HELP.md b/persistence-modules/spring-boot-jdbi/HELP.md new file mode 100644 index 0000000000..d5a5463718 --- /dev/null +++ b/persistence-modules/spring-boot-jdbi/HELP.md @@ -0,0 +1,9 @@ +# Getting Started + +### Reference Documentation +For further reference, please consider the following sections: + +* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html) +* [Spring Boot DevTools](https://docs.spring.io/spring-boot/docs/{bootVersion}/reference/htmlsingle/#using-boot-devtools) +* [Spring Configuration Processor](https://docs.spring.io/spring-boot/docs/{bootVersion}/reference/htmlsingle/#configuration-metadata-annotation-processor) + diff --git a/persistence-modules/spring-boot-jdbi/mvnw b/persistence-modules/spring-boot-jdbi/mvnw deleted file mode 100644 index 8b9da3b8b6..0000000000 --- a/persistence-modules/spring-boot-jdbi/mvnw +++ /dev/null @@ -1,286 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# ---------------------------------------------------------------------------- - -# ---------------------------------------------------------------------------- -# Maven2 Start Up Batch script -# -# Required ENV vars: -# ------------------ -# JAVA_HOME - location of a JDK home dir -# -# Optional ENV vars -# ----------------- -# M2_HOME - location of maven2's installed home dir -# MAVEN_OPTS - parameters passed to the Java VM when running Maven -# e.g. to debug Maven itself, use -# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -# MAVEN_SKIP_RC - flag to disable loading of mavenrc files -# ---------------------------------------------------------------------------- - -if [ -z "$MAVEN_SKIP_RC" ] ; then - - if [ -f /etc/mavenrc ] ; then - . /etc/mavenrc - fi - - if [ -f "$HOME/.mavenrc" ] ; then - . "$HOME/.mavenrc" - fi - -fi - -# OS specific support. $var _must_ be set to either true or false. -cygwin=false; -darwin=false; -mingw=false -case "`uname`" in - CYGWIN*) cygwin=true ;; - MINGW*) mingw=true;; - Darwin*) darwin=true - # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home - # See https://developer.apple.com/library/mac/qa/qa1170/_index.html - if [ -z "$JAVA_HOME" ]; then - if [ -x "/usr/libexec/java_home" ]; then - export JAVA_HOME="`/usr/libexec/java_home`" - else - export JAVA_HOME="/Library/Java/Home" - fi - fi - ;; -esac - -if [ -z "$JAVA_HOME" ] ; then - if [ -r /etc/gentoo-release ] ; then - JAVA_HOME=`java-config --jre-home` - fi -fi - -if [ -z "$M2_HOME" ] ; then - ## resolve links - $0 may be a link to maven's home - PRG="$0" - - # need this for relative symlinks - while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG="`dirname "$PRG"`/$link" - fi - done - - saveddir=`pwd` - - M2_HOME=`dirname "$PRG"`/.. - - # make it fully qualified - M2_HOME=`cd "$M2_HOME" && pwd` - - cd "$saveddir" - # echo Using m2 at $M2_HOME -fi - -# For Cygwin, ensure paths are in UNIX format before anything is touched -if $cygwin ; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --unix "$M2_HOME"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --unix "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --unix "$CLASSPATH"` -fi - -# For Mingw, ensure paths are in UNIX format before anything is touched -if $mingw ; then - [ -n "$M2_HOME" ] && - M2_HOME="`(cd "$M2_HOME"; pwd)`" - [ -n "$JAVA_HOME" ] && - JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" - # TODO classpath? -fi - -if [ -z "$JAVA_HOME" ]; then - javaExecutable="`which javac`" - if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then - # readlink(1) is not available as standard on Solaris 10. - readLink=`which readlink` - if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then - if $darwin ; then - javaHome="`dirname \"$javaExecutable\"`" - javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" - else - javaExecutable="`readlink -f \"$javaExecutable\"`" - fi - javaHome="`dirname \"$javaExecutable\"`" - javaHome=`expr "$javaHome" : '\(.*\)/bin'` - JAVA_HOME="$javaHome" - export JAVA_HOME - fi - fi -fi - -if [ -z "$JAVACMD" ] ; then - if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - else - JAVACMD="`which java`" - fi -fi - -if [ ! -x "$JAVACMD" ] ; then - echo "Error: JAVA_HOME is not defined correctly." >&2 - echo " We cannot execute $JAVACMD" >&2 - exit 1 -fi - -if [ -z "$JAVA_HOME" ] ; then - echo "Warning: JAVA_HOME environment variable is not set." -fi - -CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher - -# traverses directory structure from process work directory to filesystem root -# first directory with .mvn subdirectory is considered project base directory -find_maven_basedir() { - - if [ -z "$1" ] - then - echo "Path not specified to find_maven_basedir" - return 1 - fi - - basedir="$1" - wdir="$1" - while [ "$wdir" != '/' ] ; do - if [ -d "$wdir"/.mvn ] ; then - basedir=$wdir - break - fi - # workaround for JBEAP-8937 (on Solaris 10/Sparc) - if [ -d "${wdir}" ]; then - wdir=`cd "$wdir/.."; pwd` - fi - # end of workaround - done - echo "${basedir}" -} - -# concatenates all lines of a file -concat_lines() { - if [ -f "$1" ]; then - echo "$(tr -s '\n' ' ' < "$1")" - fi -} - -BASE_DIR=`find_maven_basedir "$(pwd)"` -if [ -z "$BASE_DIR" ]; then - exit 1; -fi - -########################################################################################## -# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central -# This allows using the maven wrapper in projects that prohibit checking in binary data. -########################################################################################## -if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then - if [ "$MVNW_VERBOSE" = true ]; then - echo "Found .mvn/wrapper/maven-wrapper.jar" - fi -else - if [ "$MVNW_VERBOSE" = true ]; then - echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." - fi - jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar" - while IFS="=" read key value; do - case "$key" in (wrapperUrl) jarUrl="$value"; break ;; - esac - done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" - if [ "$MVNW_VERBOSE" = true ]; then - echo "Downloading from: $jarUrl" - fi - wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" - - if command -v wget > /dev/null; then - if [ "$MVNW_VERBOSE" = true ]; then - echo "Found wget ... using wget" - fi - wget "$jarUrl" -O "$wrapperJarPath" - elif command -v curl > /dev/null; then - if [ "$MVNW_VERBOSE" = true ]; then - echo "Found curl ... using curl" - fi - curl -o "$wrapperJarPath" "$jarUrl" - else - if [ "$MVNW_VERBOSE" = true ]; then - echo "Falling back to using Java to download" - fi - javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" - if [ -e "$javaClass" ]; then - if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then - if [ "$MVNW_VERBOSE" = true ]; then - echo " - Compiling MavenWrapperDownloader.java ..." - fi - # Compiling the Java class - ("$JAVA_HOME/bin/javac" "$javaClass") - fi - if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then - # Running the downloader - if [ "$MVNW_VERBOSE" = true ]; then - echo " - Running MavenWrapperDownloader.java ..." - fi - ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") - fi - fi - fi -fi -########################################################################################## -# End of extension -########################################################################################## - -export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} -if [ "$MVNW_VERBOSE" = true ]; then - echo $MAVEN_PROJECTBASEDIR -fi -MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" - -# For Cygwin, switch paths to Windows format before running java -if $cygwin; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --path --windows "$M2_HOME"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --windows "$CLASSPATH"` - [ -n "$MAVEN_PROJECTBASEDIR" ] && - MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` -fi - -WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -exec "$JAVACMD" \ - $MAVEN_OPTS \ - -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ - "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ - ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/persistence-modules/spring-boot-jdbi/mvnw.cmd b/persistence-modules/spring-boot-jdbi/mvnw.cmd deleted file mode 100644 index fef5a8f7f9..0000000000 --- a/persistence-modules/spring-boot-jdbi/mvnw.cmd +++ /dev/null @@ -1,161 +0,0 @@ -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM https://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Maven2 Start Up Batch script -@REM -@REM Required ENV vars: -@REM JAVA_HOME - location of a JDK home dir -@REM -@REM Optional ENV vars -@REM M2_HOME - location of maven2's installed home dir -@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands -@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending -@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven -@REM e.g. to debug Maven itself, use -@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files -@REM ---------------------------------------------------------------------------- - -@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' -@echo off -@REM set title of command window -title %0 -@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' -@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% - -@REM set %HOME% to equivalent of $HOME -if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") - -@REM Execute a user defined script before this one -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre -@REM check for pre script, once with legacy .bat ending and once with .cmd ending -if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" -if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" -:skipRcPre - -@setlocal - -set ERROR_CODE=0 - -@REM To isolate internal variables from possible post scripts, we use another setlocal -@setlocal - -@REM ==== START VALIDATION ==== -if not "%JAVA_HOME%" == "" goto OkJHome - -echo. -echo Error: JAVA_HOME not found in your environment. >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -:OkJHome -if exist "%JAVA_HOME%\bin\java.exe" goto init - -echo. -echo Error: JAVA_HOME is set to an invalid directory. >&2 -echo JAVA_HOME = "%JAVA_HOME%" >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -@REM ==== END VALIDATION ==== - -:init - -@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". -@REM Fallback to current working directory if not found. - -set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% -IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir - -set EXEC_DIR=%CD% -set WDIR=%EXEC_DIR% -:findBaseDir -IF EXIST "%WDIR%"\.mvn goto baseDirFound -cd .. -IF "%WDIR%"=="%CD%" goto baseDirNotFound -set WDIR=%CD% -goto findBaseDir - -:baseDirFound -set MAVEN_PROJECTBASEDIR=%WDIR% -cd "%EXEC_DIR%" -goto endDetectBaseDir - -:baseDirNotFound -set MAVEN_PROJECTBASEDIR=%EXEC_DIR% -cd "%EXEC_DIR%" - -:endDetectBaseDir - -IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig - -@setlocal EnableExtensions EnableDelayedExpansion -for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a -@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% - -:endReadAdditionalConfig - -SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" -set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" -set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar" -FOR /F "tokens=1,2 delims==" %%A IN (%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties) DO ( - IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B -) - -@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central -@REM This allows using the maven wrapper in projects that prohibit checking in binary data. -if exist %WRAPPER_JAR% ( - echo Found %WRAPPER_JAR% -) else ( - echo Couldn't find %WRAPPER_JAR%, downloading it ... - echo Downloading from: %DOWNLOAD_URL% - powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')" - echo Finished downloading %WRAPPER_JAR% -) -@REM End of extension - -%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* -if ERRORLEVEL 1 goto error -goto end - -:error -set ERROR_CODE=1 - -:end -@endlocal & set ERROR_CODE=%ERROR_CODE% - -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost -@REM check for post script, once with legacy .bat ending and once with .cmd ending -if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" -if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" -:skipRcPost - -@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' -if "%MAVEN_BATCH_PAUSE%" == "on" pause - -if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% - -exit /B %ERROR_CODE% diff --git a/persistence-modules/spring-boot-jdbi/pom.xml b/persistence-modules/spring-boot-jdbi/pom.xml index 26a0b94275..3f9bc8ab10 100644 --- a/persistence-modules/spring-boot-jdbi/pom.xml +++ b/persistence-modules/spring-boot-jdbi/pom.xml @@ -27,7 +27,7 @@ org.springframework.boot spring-boot-dependencies - 2.1.7.RELEASE + 2.1.8.RELEASE pom import diff --git a/persistence-modules/spring-boot-mysql/pom.xml b/persistence-modules/spring-boot-mysql/pom.xml index 6be58332aa..29374ec116 100644 --- a/persistence-modules/spring-boot-mysql/pom.xml +++ b/persistence-modules/spring-boot-mysql/pom.xml @@ -17,7 +17,6 @@ org.springframework.boot spring-boot-starter-web - 2.1.5.RELEASE org.springframework.boot diff --git a/persistence-modules/spring-persistence-simple/pom.xml b/persistence-modules/spring-persistence-simple/pom.xml index d0b3f5fe29..f0cf8e49d5 100644 --- a/persistence-modules/spring-persistence-simple/pom.xml +++ b/persistence-modules/spring-persistence-simple/pom.xml @@ -116,7 +116,7 @@ com.mysema.maven apt-maven-plugin - 1.1.3 + ${apt-maven-plugin.version} generate-sources @@ -148,6 +148,7 @@ 21.0 3.8.0 + 1.1.3 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 7f92acef6c..4f40f8261f 100644 --- a/pom.xml +++ b/pom.xml @@ -339,6 +339,8 @@ algorithms-miscellaneous-1 algorithms-miscellaneous-2 algorithms-miscellaneous-3 + algorithms-miscellaneous-4 + algorithms-miscellaneous-5 algorithms-sorting animal-sniffer-mvn-plugin annotations @@ -387,27 +389,39 @@ core-java-modules/core-java-8 core-java-modules/core-java-8-2 + core-java-modules/core-java-annotations + core-java-modules/core-java-streams + core-java-modules/core-java-function + core-java-modules/core-java-lang-math + core-java-modules/core-java-datetime + core-java-modules/core-java-text core-java-modules/core-java-lambdas core-java-modules/core-java-arrays core-java-modules/core-java-arrays-2 core-java-modules/core-java-collections + core-java-modules/core-java-collections-2 + core-java-modules/core-java-collections-3 core-java-modules/core-java-collections-list core-java-modules/core-java-collections-list-2 core-java-modules/core-java-collections-list-3 core-java-modules/core-java-collections-array-list core-java-modules/core-java-collections-set core-java-modules/core-java-concurrency-basic + core-java-modules/core-java-concurrency-basic-2 core-java-modules/core-java-concurrency-collections core-java-modules/core-java-io + core-java-modules/core-java-io-files core-java-modules/core-java-nio core-java-modules/core-java-security core-java-modules/core-java-lang-syntax + core-java-modules/core-java-lang-syntax-2 core-java-modules/core-java-lang core-java-modules/core-java-lang-2 core-java-modules/core-java-lang-oop core-java-modules/core-java-lang-oop-2 + core-java-modules/core-java-lang-oop-3 core-java-modules core-java-modules/core-java-networking core-java-modules/core-java-perf @@ -442,6 +456,7 @@ grpc gson guava + guava-io guava-collections guava-collections-set guava-modules @@ -515,6 +530,8 @@ libraries-data libraries-data-2 libraries-apache-commons + libraries-apache-commons-collections + libraries-apache-commons-io libraries-primitive libraries-testing libraries-security @@ -527,7 +544,11 @@ lucene mapstruct - maven + + maven-all/maven + maven-all/maven-war-plugin + maven-all/profiles + maven-all/versions-maven-plugin maven-archetype maven-polyglot/maven-polyglot-json-extension @@ -654,7 +675,6 @@ spring-boot spring-boot-admin spring-boot-angular - spring-boot-angular-ecommerce spring-boot-autoconfiguration spring-boot-bootstrap spring-boot-camel @@ -1070,6 +1090,8 @@ algorithms-miscellaneous-1 algorithms-miscellaneous-2 algorithms-miscellaneous-3 + algorithms-miscellaneous-4 + algorithms-miscellaneous-5 algorithms-sorting animal-sniffer-mvn-plugin annotations @@ -1115,26 +1137,38 @@ core-java-modules/core-java-8 core-java-modules/core-java-8-2 + core-java-modules/core-java-annotations + core-java-modules/core-java-streams + core-java-modules/core-java-function + core-java-modules/core-java-lang-math + core-java-modules/core-java-datetime + core-java-modules/core-java-text core-java-modules/core-java-arrays core-java-modules/core-java-arrays-2 core-java-modules/core-java-collections + core-java-modules/core-java-collections-2 + core-java-modules/core-java-collections-3 core-java-modules/core-java-collections-list core-java-modules/core-java-collections-list-2 core-java-modules/core-java-collections-list-3 core-java-modules/core-java-collections-array-list core-java-modules/core-java-collections-set core-java-modules/core-java-concurrency-basic + core-java-modules/core-java-concurrency-basic-2 core-java-modules/core-java-concurrency-collections core-java-modules/core-java-io + core-java-modules/core-java-io-files core-java-modules/core-java-nio core-java-modules/core-java-security core-java-modules/core-java-lang-syntax + core-java-modules/core-java-lang-syntax-2 core-java-modules/core-java-lang core-java-modules/core-java-lang-2 core-java-modules/core-java-lang-oop core-java-modules/core-java-lang-oop-2 + core-java-modules/core-java-lang-oop-3 core-java-modules core-java-modules/core-java-networking core-java-modules/core-java-perf @@ -1166,6 +1200,7 @@ grpc gson guava + guava-io guava-collections guava-collections-set guava-modules @@ -1236,6 +1271,8 @@ libraries-data libraries-data-2 libraries-apache-commons + libraries-apache-commons-collections + libraries-apache-commons-io libraries-testing libraries-security libraries-server @@ -1246,7 +1283,11 @@ lucene mapstruct - maven + + maven-all/maven + maven-all/maven-war-plugin + maven-all/profiles + maven-all/versions-maven-plugin maven-archetype @@ -1355,7 +1396,6 @@ spring-boot spring-boot-admin spring-boot-angular - spring-boot-angular-ecommerce spring-boot-autoconfiguration spring-boot-bootstrap spring-boot-camel diff --git a/saas/README.md b/saas/README.md index 4e0eeea974..f537c7ff95 100644 --- a/saas/README.md +++ b/saas/README.md @@ -1,3 +1,7 @@ +## SAAS + +This module contains articles about software as a service (SAAS) + ## Relevant articles: - [JIRA REST API Integration](http://www.baeldung.com/jira-rest-api) diff --git a/spark-java/README.md b/spark-java/README.md index 5abe78263c..3f16b29b9f 100644 --- a/spark-java/README.md +++ b/spark-java/README.md @@ -1,6 +1,6 @@ -========= +## Spark Java -## Spark Java Framework Tutorial Sample Project +This module contains articles about Spark ### Relevant Articles - [Building an API With the Spark Java Framework](http://www.baeldung.com/spark-framework-rest-api) diff --git a/spring-4/README.md b/spring-4/README.md index 57cb8c3eeb..5bc38d4a9d 100644 --- a/spring-4/README.md +++ b/spring-4/README.md @@ -1,3 +1,7 @@ +## Spring 4 + +This module contains articles about Spring 4 + ### Relevant Articles: - [A Guide to Flips for Spring](http://www.baeldung.com/flips-spring) - [Configuring a Hikari Connection Pool with Spring Boot](https://www.baeldung.com/spring-boot-hikari) diff --git a/spring-4/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java b/spring-4/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java similarity index 89% rename from spring-4/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java rename to spring-4/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java index 0bd8637681..7f8736ae87 100644 --- a/spring-4/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java +++ b/spring-4/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java @@ -1,4 +1,4 @@ -package com.baeldung.connectionpool; +package com.baeldung.hikari; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-4/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java b/spring-4/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java similarity index 95% rename from spring-4/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java rename to spring-4/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java index 0cc876d5b1..e3ed608521 100644 --- a/spring-4/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java +++ b/spring-4/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java @@ -1,4 +1,4 @@ -package com.baeldung.connectionpool; +package com.baeldung.hikari; import static org.junit.Assert.*; diff --git a/spring-5-data-reactive/README.md b/spring-5-data-reactive/README.md index 4c2347dc77..982704e11c 100644 --- a/spring-5-data-reactive/README.md +++ b/spring-5-data-reactive/README.md @@ -1,5 +1,7 @@ ## Spring Data Reactive Project +This module contains articles about reactive Spring 5 Data + ### The Course The "REST With Spring" Classes: http://bit.ly/restwithspring diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/ReactiveCouchbaseApplication.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/ReactiveCouchbaseApplication.java index 917bcfdaa8..4e5bf9d5dc 100644 --- a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/ReactiveCouchbaseApplication.java +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/ReactiveCouchbaseApplication.java @@ -2,8 +2,9 @@ package com.baeldung.couchbase; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; -@SpringBootApplication +@SpringBootApplication(exclude = MongoAutoConfiguration.class) public class ReactiveCouchbaseApplication { public static void main(String[] args) { diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/CouchbaseProperties.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/CouchbaseProperties.java index 480c96e986..81f19eebd6 100644 --- a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/CouchbaseProperties.java +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/CouchbaseProperties.java @@ -1,12 +1,15 @@ package com.baeldung.couchbase.configuration; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; import java.util.Collections; import java.util.List; @Configuration +@PropertySource("classpath:couchbase.properties") public class CouchbaseProperties { private final List bootstrapHosts; diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java index 2f3b5486d8..a51b19ee22 100644 --- a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java @@ -2,7 +2,11 @@ package com.baeldung.couchbase.configuration; import com.couchbase.client.java.env.CouchbaseEnvironment; import com.couchbase.client.java.env.DefaultCouchbaseEnvironment; + +import org.springframework.context.annotation.Bean; import org.springframework.data.couchbase.config.AbstractReactiveCouchbaseConfiguration; +import org.springframework.data.couchbase.config.BeanNames; +import org.springframework.data.couchbase.repository.support.IndexManager; import java.util.List; @@ -36,4 +40,9 @@ public abstract class ReactiveCouchbaseConfiguration extends AbstractReactiveCou .bootstrapHttpDirectPort(couchbaseProperties.getPort()) .build(); } + + @Bean(name = BeanNames.COUCHBASE_INDEX_MANAGER) + public IndexManager couchbaseIndexManager() { + return new IndexManager(true, true, false); + } } diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepository.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepository.java index 28a7ec1b78..06c47c2393 100644 --- a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepository.java +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepository.java @@ -13,7 +13,7 @@ import java.util.UUID; @ViewIndexed(designDoc = ViewPersonRepository.DESIGN_DOCUMENT) public interface ViewPersonRepository extends ReactiveCrudRepository { - String DESIGN_DOCUMENT = "persons"; + String DESIGN_DOCUMENT = "person"; @View(designDocument = ViewPersonRepository.DESIGN_DOCUMENT) Flux findByFirstName(String firstName); diff --git a/spring-5-data-reactive/src/main/resources/couchbase.properties b/spring-5-data-reactive/src/main/resources/couchbase.properties new file mode 100644 index 0000000000..53fad807fe --- /dev/null +++ b/spring-5-data-reactive/src/main/resources/couchbase.properties @@ -0,0 +1,4 @@ +spring.couchbase.bucket.name=default +spring.couchbase.bootstrap-hosts=localhost +spring.couchbase.port=8091 +spring.couchbase.bucket.password=123456 \ No newline at end of file diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepositoryLiveTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepositoryLiveTest.java index 0c1b6bde6c..c8dbbf429e 100644 --- a/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepositoryLiveTest.java +++ b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepositoryLiveTest.java @@ -12,7 +12,7 @@ import reactor.test.StepVerifier; import java.util.UUID; @RunWith(SpringRunner.class) -@SpringBootTest +@SpringBootTest(properties = {"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration"}) public class N1QLPersonRepositoryLiveTest { @Autowired private N1QLPersonRepository personRepository; diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepositoryLiveTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepositoryLiveTest.java index 4ba2206e0a..8c6ce137f1 100644 --- a/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepositoryLiveTest.java +++ b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepositoryLiveTest.java @@ -13,7 +13,7 @@ import reactor.test.StepVerifier; import java.util.UUID; @RunWith(SpringRunner.class) -@SpringBootTest +@SpringBootTest(properties = {"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration"}) public class N1QLSortingPersonRepositoryLiveTest { @Autowired private N1QLSortingPersonRepository personRepository; diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepositoryIntegrationTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepositoryIntegrationTest.java index 712e7b0d37..15688e1b80 100644 --- a/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepositoryIntegrationTest.java +++ b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepositoryIntegrationTest.java @@ -8,6 +8,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -16,7 +17,8 @@ import reactor.test.StepVerifier; import java.util.UUID; @RunWith(SpringRunner.class) -@SpringBootTest(properties = { "spring.couchbase.port=10010" }, classes = { ViewReactiveCouchbaseConfiguration.class, CouchbaseProperties.class, CouchbaseMockConfiguration.class }) +@SpringBootTest(properties = { "spring.couchbase.port=10010", "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration,org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration" }, + classes = { CouchbaseMockConfiguration.class, ViewReactiveCouchbaseConfiguration.class, CouchbaseProperties.class }) public class ViewPersonRepositoryIntegrationTest { @Autowired private ViewPersonRepository personRepository; diff --git a/spring-5-mvc/README.md b/spring-5-mvc/README.md index 063945281f..2b57df3b71 100644 --- a/spring-5-mvc/README.md +++ b/spring-5-mvc/README.md @@ -1,3 +1,7 @@ +## Spring 5 MVC + +This module contains articles about Spring 5 model-view-controller (MVC) pattern + ### Relevant Articles: - [Spring Boot and Kotlin](http://www.baeldung.com/spring-boot-kotlin) - [Spring MVC Streaming and SSE Request Processing](https://www.baeldung.com/spring-mvc-sse-streams) diff --git a/spring-5-reactive-2/README.md b/spring-5-reactive-2/README.md index 7aec8f94bf..1d21425fb8 100644 --- a/spring-5-reactive-2/README.md +++ b/spring-5-reactive-2/README.md @@ -1,2 +1,6 @@ ## Spring 5 Reactive Project + +This module contains articles about reactive Spring 5 + - [Spring WebClient vs. RestTemplate](https://www.baeldung.com/spring-webclient-resttemplate) +- More articles: [[<-- prev]](/spring-5-reactive) diff --git a/spring-5-reactive-client/README.md b/spring-5-reactive-client/README.md index 0df2bdd339..90d12cad1c 100644 --- a/spring-5-reactive-client/README.md +++ b/spring-5-reactive-client/README.md @@ -1,5 +1,7 @@ ## Spring REST Example Project +This module contains articles about reactive Spring 5 WebClient + ### The Course The "REST With Spring" Classes: http://bit.ly/restwithspring diff --git a/spring-5-reactive-client/pom.xml b/spring-5-reactive-client/pom.xml index 70771f6832..9e574b2196 100644 --- a/spring-5-reactive-client/pom.xml +++ b/spring-5-reactive-client/pom.xml @@ -54,6 +54,18 @@ org.apache.commons commons-lang3 + + + com.squareup.okhttp3 + okhttp + 4.0.1 + + + com.squareup.okhttp3 + mockwebserver + 4.0.1 + test + @@ -88,14 +100,25 @@ org.projectlombok lombok - - + + org.mockito + mockito-junit-jupiter + 2.23.0 + test + + + io.projectreactor + reactor-test + 3.2.10.RELEASE + test + org.eclipse.jetty jetty-reactive-httpclient ${jetty-reactive-httpclient.version} test + @@ -108,6 +131,29 @@ JAR + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + maven-surefire-plugin + 2.22.0 + + + maven-surefire-plugin + 2.19.1 + + + org.junit.platform + junit-platform-surefire-provider + 1.0.1 + + + diff --git a/spring-5-reactive-client/src/main/java/com/baeldung/reactive/enums/Role.java b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/enums/Role.java new file mode 100644 index 0000000000..6b11f14734 --- /dev/null +++ b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/enums/Role.java @@ -0,0 +1,5 @@ +package com.baeldung.reactive.enums; + +public enum Role { + ENGINEER, SENIOR_ENGINEER, LEAD_ENGINEER +} diff --git a/spring-5-reactive-client/src/main/java/com/baeldung/reactive/model/Employee.java b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/model/Employee.java new file mode 100644 index 0000000000..6a8daaf6de --- /dev/null +++ b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/model/Employee.java @@ -0,0 +1,64 @@ +package com.baeldung.reactive.model; + + +import com.baeldung.reactive.enums.Role; + +public class Employee { + private Integer employeeId; + private String firstName; + private String lastName; + private Integer age; + private Role role; + + public Employee() { + } + + public Employee(Integer employeeId, String firstName, String lastName, Integer age, Role role) { + this.employeeId = employeeId; + this.firstName = firstName; + this.lastName = lastName; + this.age = age; + this.role = role; + } + + public Integer getEmployeeId() { + return employeeId; + } + + public void setEmployeeId(Integer employeeId) { + this.employeeId = employeeId; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public Role getRole() { + return role; + } + + public void setRole(Role role) { + this.role = role; + } +} + diff --git a/spring-5-reactive-client/src/main/java/com/baeldung/reactive/service/EmployeeService.java b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/service/EmployeeService.java new file mode 100644 index 0000000000..b841dbfe3f --- /dev/null +++ b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/service/EmployeeService.java @@ -0,0 +1,55 @@ +package com.baeldung.reactive.service; +import com.baeldung.reactive.model.Employee; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; + +public class EmployeeService { + + private WebClient webClient; + public static String PATH_PARAM_BY_ID = "/employee/{id}"; + public static String ADD_EMPLOYEE = "/employee"; + + public EmployeeService(WebClient webClient) { + this.webClient = webClient; + } + + public EmployeeService(String baseUrl) { + this.webClient = WebClient.create(baseUrl); + } + + public Mono getEmployeeById(Integer employeeId) { + return webClient + .get() + .uri(PATH_PARAM_BY_ID, employeeId) + .retrieve() + .bodyToMono(Employee.class); + } + + public Mono addNewEmployee(Employee newEmployee) { + + return webClient + .post() + .uri(ADD_EMPLOYEE) + .syncBody(newEmployee) + .retrieve(). + bodyToMono(Employee.class); + } + + public Mono updateEmployee(Integer employeeId, Employee updateEmployee) { + + return webClient + .put() + .uri(PATH_PARAM_BY_ID,employeeId) + .syncBody(updateEmployee) + .retrieve() + .bodyToMono(Employee.class); + } + + public Mono deleteEmployeeById(Integer employeeId) { + return webClient + .delete() + .uri(PATH_PARAM_BY_ID,employeeId) + .retrieve() + .bodyToMono(String.class); + } +} diff --git a/spring-5-reactive-client/src/test/java/com/baeldung/reactive/service/EmployeeServiceIntegrationTest.java b/spring-5-reactive-client/src/test/java/com/baeldung/reactive/service/EmployeeServiceIntegrationTest.java new file mode 100644 index 0000000000..f5d9529ada --- /dev/null +++ b/spring-5-reactive-client/src/test/java/com/baeldung/reactive/service/EmployeeServiceIntegrationTest.java @@ -0,0 +1,121 @@ +package com.baeldung.reactive.service; + +import com.baeldung.reactive.model.Employee; +import com.baeldung.reactive.enums.Role; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; +import okhttp3.mockwebserver.RecordedRequest; +import org.junit.Rule; +import org.junit.jupiter.api.*; +import reactor.core.publisher.Mono; +import reactor.test.StepVerifier; + +import java.io.IOException; + +import static org.junit.jupiter.api.Assertions.*; + +class EmployeeServiceIntegrationTest { + + public static MockWebServer mockBackEnd; + private EmployeeService employeeService; + private ObjectMapper MAPPER = new ObjectMapper(); + + @BeforeAll + static void setUp() throws IOException { + mockBackEnd = new MockWebServer(); + mockBackEnd.start(); + } + + @AfterAll + static void tearDown() throws IOException { + mockBackEnd.shutdown(); + } + + @BeforeEach + void initialize() { + + String baseUrl = String.format("http://localhost:%s", mockBackEnd.getPort()); + employeeService = new EmployeeService(baseUrl); + } + + @Test + void getEmployeeById() throws Exception { + + Employee mockEmployee = new Employee(100, "Adam", "Sandler", 32, Role.LEAD_ENGINEER); + mockBackEnd.enqueue(new MockResponse().setBody(MAPPER.writeValueAsString(mockEmployee)) + .addHeader("Content-Type", "application/json")); + + Mono employeeMono = employeeService.getEmployeeById(100); + + StepVerifier.create(employeeMono) + .expectNextMatches(employee -> employee.getRole().equals(Role.LEAD_ENGINEER)) + .verifyComplete(); + + RecordedRequest recordedRequest = mockBackEnd.takeRequest(); + assertEquals("GET", recordedRequest.getMethod()); + assertEquals("/employee/100", recordedRequest.getPath()); + } + + @Test + void addNewEmployee() throws Exception { + + Employee newEmployee = new Employee(null, "Adam", "Sandler", 32, Role.LEAD_ENGINEER); + Employee webClientResponse = new Employee(100, "Adam", "Sandler", 32, Role.LEAD_ENGINEER); + mockBackEnd.enqueue(new MockResponse().setBody(MAPPER.writeValueAsString(webClientResponse)) + .addHeader("Content-Type", "application/json")); + + Mono employeeMono = employeeService.addNewEmployee(newEmployee); + + StepVerifier.create(employeeMono) + .expectNextMatches(employee -> employee.getEmployeeId().equals(100)) + .verifyComplete(); + + RecordedRequest recordedRequest = mockBackEnd.takeRequest(); + assertEquals("POST", recordedRequest.getMethod()); + assertEquals("/employee", recordedRequest.getPath()); + } + + @Test + void updateEmployee() throws Exception { + + Integer newAge = 33; + String newLastName = "Sandler New"; + Employee updateEmployee = new Employee(100, "Adam", newLastName, newAge, Role.LEAD_ENGINEER); + mockBackEnd.enqueue(new MockResponse().setBody(MAPPER.writeValueAsString(updateEmployee)) + .addHeader("Content-Type", "application/json")); + + Mono updatedEmploye = employeeService.updateEmployee(100, updateEmployee); + + StepVerifier.create(updatedEmploye) + .expectNextMatches(employee -> employee.getLastName().equals(newLastName) && employee.getAge() == newAge) + .verifyComplete(); + + RecordedRequest recordedRequest = mockBackEnd.takeRequest(); + assertEquals("PUT", recordedRequest.getMethod()); + assertEquals("/employee/100", recordedRequest.getPath()); + + } + + + @Test + void deleteEmployee() throws Exception { + + String responseMessage = "Employee Deleted SuccessFully"; + Integer employeeId = 100; + mockBackEnd.enqueue(new MockResponse().setBody(MAPPER.writeValueAsString(responseMessage)) + .addHeader("Content-Type", "application/json")); + + Mono deletedEmployee = employeeService.deleteEmployeeById(employeeId); + + StepVerifier.create(deletedEmployee) + .expectNext("\"Employee Deleted SuccessFully\"") + .verifyComplete(); + + RecordedRequest recordedRequest = mockBackEnd.takeRequest(); + assertEquals("DELETE", recordedRequest.getMethod()); + assertEquals("/employee/100", recordedRequest.getPath()); + } + +} \ No newline at end of file diff --git a/spring-5-reactive-client/src/test/java/com/baeldung/reactive/service/EmployeeServiceUnitTest.java b/spring-5-reactive-client/src/test/java/com/baeldung/reactive/service/EmployeeServiceUnitTest.java new file mode 100644 index 0000000000..1d1a8fd2e4 --- /dev/null +++ b/spring-5-reactive-client/src/test/java/com/baeldung/reactive/service/EmployeeServiceUnitTest.java @@ -0,0 +1,114 @@ +package com.baeldung.reactive.service; + + +import com.baeldung.reactive.model.Employee; +import com.baeldung.reactive.enums.Role; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.exceptions.base.MockitoException; +import org.mockito.junit.MockitoJUnitRunner; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; +import reactor.test.StepVerifier; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class EmployeeServiceUnitTest { + + EmployeeService employeeService; + @Mock + private WebClient webClientMock; + @Mock + private WebClient.RequestHeadersSpec requestHeadersMock; + @Mock + private WebClient.RequestHeadersUriSpec requestHeadersUriMock; + @Mock + private WebClient.RequestBodySpec requestBodyMock; + @Mock + private WebClient.RequestBodyUriSpec requestBodyUriMock; + @Mock + private WebClient.ResponseSpec responseMock; + + @BeforeEach + void setUp() { + employeeService = new EmployeeService(webClientMock); + } + + @Test + void givenEmployeeId_whenGetEmployeeById_thenReturnEmployee() { + + Integer employeeId = 100; + Employee mockEmployee = new Employee(100, "Adam", "Sandler", 32, Role.LEAD_ENGINEER); + when(webClientMock.get()).thenReturn(requestHeadersUriMock); + when(requestHeadersUriMock.uri("/employee/{id}", employeeId)).thenReturn(requestHeadersMock); + when(requestHeadersMock.retrieve()).thenReturn(responseMock); + when(responseMock.bodyToMono(Employee.class)).thenReturn(Mono.just(mockEmployee)); + + Mono employeeMono = employeeService.getEmployeeById(employeeId); + + StepVerifier.create(employeeMono) + .expectNextMatches(employee -> employee.getRole().equals(Role.LEAD_ENGINEER)) + .verifyComplete(); + } + + @Test + void givenEmployee_whenAddEmployee_thenAddNewEmployee() { + + Employee newEmployee = new Employee(null, "Adam", "Sandler", 32, Role.LEAD_ENGINEER); + Employee webClientResponse = new Employee(100, "Adam", "Sandler", 32, Role.LEAD_ENGINEER); + when(webClientMock.post()).thenReturn(requestBodyUriMock); + when(requestBodyUriMock.uri(EmployeeService.ADD_EMPLOYEE)).thenReturn(requestBodyMock); + when(requestBodyMock.syncBody(newEmployee)).thenReturn(requestHeadersMock); + when(requestHeadersMock.retrieve()).thenReturn(responseMock); + when(responseMock.bodyToMono(Employee.class)).thenReturn(Mono.just(webClientResponse)); + + Mono employeeMono = employeeService.addNewEmployee(newEmployee); + + StepVerifier.create(employeeMono) + .expectNextMatches(employee -> employee.getEmployeeId().equals(100)) + .verifyComplete(); + } + + @Test + void givenEmployee_whenupdateEmployee_thenUpdatedEmployee() { + + Integer newAge = 33; + String newLastName = "Sandler New"; + Employee updateEmployee = new Employee(100, "Adam", newLastName, newAge, Role.LEAD_ENGINEER); + when(webClientMock.put()).thenReturn(requestBodyUriMock); + when(requestBodyUriMock.uri(EmployeeService.PATH_PARAM_BY_ID, 100)).thenReturn(requestBodyMock); + when(requestBodyMock.syncBody(updateEmployee)).thenReturn(requestHeadersMock); + when(requestHeadersMock.retrieve()).thenReturn(responseMock); + when(responseMock.bodyToMono(Employee.class)).thenReturn(Mono.just(updateEmployee)); + + Mono updatedEmployee = employeeService.updateEmployee(100, updateEmployee); + + StepVerifier.create(updatedEmployee) + .expectNextMatches(employee -> employee.getLastName().equals(newLastName) && employee.getAge() == newAge) + .verifyComplete(); + + } + + @Test + void givenEmployee_whenDeleteEmployeeById_thenDeleteSuccessful() { + + String responseMessage = "Employee Deleted SuccessFully"; + when(webClientMock.delete()).thenReturn(requestHeadersUriMock); + when(requestHeadersUriMock.uri(EmployeeService.PATH_PARAM_BY_ID, 100)).thenReturn(requestHeadersMock); + when(requestHeadersMock.retrieve()).thenReturn(responseMock); + when(responseMock.bodyToMono(String.class)).thenReturn(Mono.just(responseMessage)); + + Mono deletedEmployee = employeeService.deleteEmployeeById(100); + + StepVerifier.create(deletedEmployee) + .expectNext(responseMessage) + .verifyComplete(); + } +} \ No newline at end of file diff --git a/spring-5-reactive-oauth/README.md b/spring-5-reactive-oauth/README.md index ec5176670b..3fddbf4a36 100644 --- a/spring-5-reactive-oauth/README.md +++ b/spring-5-reactive-oauth/README.md @@ -1,3 +1,7 @@ +## Spring 5 Reactive OAuth + +This module contains articles about reactive Spring 5 OAuth + ### Relevant Articles: - [Spring Security OAuth Login with WebFlux](https://www.baeldung.com/spring-oauth-login-webflux) diff --git a/spring-5-reactive-security/README.md b/spring-5-reactive-security/README.md index 845d07cd7f..ebb107645b 100644 --- a/spring-5-reactive-security/README.md +++ b/spring-5-reactive-security/README.md @@ -1,5 +1,7 @@ ## Spring 5 Reactive Security Examples +This module contains articles about reactive Spring Security 5 + ### The Course The "REST With Spring" Classes: http://bit.ly/restwithspring diff --git a/spring-5-reactive/README.md b/spring-5-reactive/README.md index 538a15c879..89ff4fea9f 100644 --- a/spring-5-reactive/README.md +++ b/spring-5-reactive/README.md @@ -1,5 +1,7 @@ ## Spring 5 Reactive Project +This module contains articles about reactive Spring 5 + ### The Course The "REST With Spring" Classes: http://bit.ly/restwithspring @@ -20,3 +22,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Testing Reactive Streams Using StepVerifier and TestPublisher](https://www.baeldung.com/reactive-streams-step-verifier-test-publisher) - [Debugging Reactive Streams in Spring 5](https://www.baeldung.com/spring-debugging-reactive-streams) - [Static Content in Spring WebFlux](https://www.baeldung.com/spring-webflux-static-content) +- More articles: [[next -->]](/spring-5-reactive-2) \ No newline at end of file diff --git a/spring-5-reactive/src/test/java/com/baeldung/reactive/errorhandling/ErrorHandlingIntegrationTest.java b/spring-5-reactive/src/test/java/com/baeldung/reactive/errorhandling/ErrorHandlingIntegrationTest.java index 42da90ecd5..3bbbed0d77 100644 --- a/spring-5-reactive/src/test/java/com/baeldung/reactive/errorhandling/ErrorHandlingIntegrationTest.java +++ b/spring-5-reactive/src/test/java/com/baeldung/reactive/errorhandling/ErrorHandlingIntegrationTest.java @@ -12,11 +12,13 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.reactive.server.WebTestClient; @RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT) +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) +@DirtiesContext @WithMockUser @AutoConfigureWebTestClient(timeout = "10000") public class ErrorHandlingIntegrationTest { diff --git a/spring-5-security-cognito/README.md b/spring-5-security-cognito/README.md index 0825882c05..ff2784f410 100644 --- a/spring-5-security-cognito/README.md +++ b/spring-5-security-cognito/README.md @@ -1,3 +1,7 @@ +## Spring 5 Security Cognito + +This module contains articles about Spring 5 with Amazon Cognito + ## Relevant articles: - [Authenticating with Amazon Cognito Using Spring Security](https://www.baeldung.com/spring-security-oauth-cognito) diff --git a/spring-5-security-oauth/README.md b/spring-5-security-oauth/README.md index a5cec370c7..4e080fc517 100644 --- a/spring-5-security-oauth/README.md +++ b/spring-5-security-oauth/README.md @@ -1,3 +1,7 @@ +## Spring 5 Security OAuth + +This module contains articles about Spring 5 OAuth Security + ## Relevant articles: - [Spring Security 5 – OAuth2 Login](http://www.baeldung.com/spring-security-5-oauth2-login) diff --git a/spring-5-security/README.md b/spring-5-security/README.md index 37dc8b0f28..23b46f4dc9 100644 --- a/spring-5-security/README.md +++ b/spring-5-security/README.md @@ -1,3 +1,7 @@ +## Spring 5 Security + +This module contains articles about Spring Security 5 + ## Relevant articles: - [Extra Login Fields with Spring Security](http://www.baeldung.com/spring-security-extra-login-fields) diff --git a/spring-5-webflux/README.md b/spring-5-webflux/README.md index 87d9ae0dd3..55ab0b8af4 100644 --- a/spring-5-webflux/README.md +++ b/spring-5-webflux/README.md @@ -1,3 +1,7 @@ +## Spring 5 WebFlux + +This module contains articles about Spring 5 WebFlux + ## Relevant articles: - [Spring Boot Reactor Netty Configuration](https://www.baeldung.com/spring-boot-reactor-netty) diff --git a/spring-5/README.md b/spring-5/README.md index d3c1decbc7..7f4c643b7a 100644 --- a/spring-5/README.md +++ b/spring-5/README.md @@ -1,4 +1,6 @@ -## Spring REST Example Project +## Spring 5 + +This module contains articles about Spring 5 ### The Course The "REST With Spring" Classes: http://bit.ly/restwithspring diff --git a/spring-5/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java b/spring-5/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java similarity index 89% rename from spring-5/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java rename to spring-5/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java index 0bd8637681..7f8736ae87 100644 --- a/spring-5/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java +++ b/spring-5/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java @@ -1,4 +1,4 @@ -package com.baeldung.connectionpool; +package com.baeldung.hikari; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-5/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java b/spring-5/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java similarity index 94% rename from spring-5/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java rename to spring-5/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java index d91cca85ee..0c4b91bd8a 100644 --- a/spring-5/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java +++ b/spring-5/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java @@ -1,4 +1,4 @@ -package com.baeldung.connectionpool; +package com.baeldung.hikari; import static org.junit.Assert.*; diff --git a/spring-activiti/README.md b/spring-activiti/README.md index 703dfeec52..75f3ea51e5 100644 --- a/spring-activiti/README.md +++ b/spring-activiti/README.md @@ -1,3 +1,7 @@ +## Spring Activiti + +This module contains articles about Spring with Activiti + ### Relevant articles - [A Guide to Activiti with Java](http://www.baeldung.com/java-activiti) diff --git a/spring-akka/README.md b/spring-akka/README.md index 0f1c013214..035551d459 100644 --- a/spring-akka/README.md +++ b/spring-akka/README.md @@ -1,2 +1,6 @@ +## Spring Akka + +This module contains articles about Spring with Akka + ### Relevant Articles: - [Introduction to Spring with Akka](http://www.baeldung.com/akka-with-spring) diff --git a/spring-all/README.md b/spring-all/README.md index c5825b47fb..8a4e8fa18f 100644 --- a/spring-all/README.md +++ b/spring-all/README.md @@ -1,5 +1,3 @@ -========= - ## Spring General Example Project This project is used to replicate Spring Exceptions only. diff --git a/spring-all/src/main/java/org/baeldung/spring/config/ScopesConfig.java b/spring-all/src/main/java/org/baeldung/scopes/ScopesConfig.java similarity index 94% rename from spring-all/src/main/java/org/baeldung/spring/config/ScopesConfig.java rename to spring-all/src/main/java/org/baeldung/scopes/ScopesConfig.java index b5fe494ee2..11d3806b6e 100644 --- a/spring-all/src/main/java/org/baeldung/spring/config/ScopesConfig.java +++ b/spring-all/src/main/java/org/baeldung/scopes/ScopesConfig.java @@ -1,7 +1,5 @@ -package org.baeldung.spring.config; +package org.baeldung.scopes; -import org.baeldung.scopes.HelloMessageGenerator; -import org.baeldung.scopes.Person; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; diff --git a/spring-amqp/README.md b/spring-amqp/README.md index 5e29011995..0ae4eda12e 100644 --- a/spring-amqp/README.md +++ b/spring-amqp/README.md @@ -1,3 +1,7 @@ +## Spring AMQP + +This module contains articles about Spring with the AMQP messaging system + ## Relevant articles: - [Messaging With Spring AMQP](https://www.baeldung.com/spring-amqp) diff --git a/spring-aop/README.md b/spring-aop/README.md index af8ab71da0..915299a073 100644 --- a/spring-aop/README.md +++ b/spring-aop/README.md @@ -1,3 +1,7 @@ +## Spring AOP + +This module contains articles about Spring aspect oriented programming (AOP) + ### Relevant articles - [Implementing a Custom Spring AOP Annotation](http://www.baeldung.com/spring-aop-annotation) diff --git a/spring-apache-camel/README.md b/spring-apache-camel/README.md index e72e18b198..e89eb4fe6c 100644 --- a/spring-apache-camel/README.md +++ b/spring-apache-camel/README.md @@ -1,35 +1,26 @@ +## Spring Apache Camel -

Configure and Use Apache Camel with Spring

+This module contains articles about Spring with Apache Camel -This article will demonstrate how to configure and use Apache Camel with Spring Framework. +### Relevant Articles -

Relevant Articles

+- [Apache Camel](http://camel.apache.org/) +- [Enterprise Integration Patterns](http://www.enterpriseintegrationpatterns.com/patterns/messaging/toc.html) +- [Introduction To Apache Camel](http://www.baeldung.com/apache-camel-intro) +- [Integration Patterns With Apache Camel](http://www.baeldung.com/camel-integration-patterns) +- [Using Apache Camel with Spring](http://www.baeldung.com/spring-apache-camel-tutorial) - +### Framework Versions: -

Framework Versions:

+- Spring 4.2.4 +- Apache Camel 2.16.1 -
    -
  • Spring 4.2.4
  • -
  • Apache Camel 2.16.1
  • -
+### Build and Run Application -

Build and Run Application

+To build this application execute: -To build this application execute following maven command in ApacheCamelFileProcessor directory. - -mvn clean install +`mvn clean install` To run this application you can either run our main class App from your IDE or you can execute following maven command: -mvn exec:java -Dexec.mainClass="App" - -

Relevant Articles on Baeldung

- +`mvn exec:java -Dexec.mainClass="com.baeldung.camel.main.App"` \ No newline at end of file diff --git a/spring-batch/README.md b/spring-batch/README.md index ddd830cd47..c100835948 100644 --- a/spring-batch/README.md +++ b/spring-batch/README.md @@ -1,7 +1,6 @@ -========= - ## Spring Batch +This module contains articles about Spring Batch ### Relevant Articles: - [Introduction to Spring Batch](http://www.baeldung.com/introduction-to-spring-batch) diff --git a/spring-bom/README.md b/spring-bom/README.md index d056216a2e..60e7d75340 100644 --- a/spring-bom/README.md +++ b/spring-bom/README.md @@ -1,3 +1,6 @@ +## Spring BOM + +This module contains articles about Spring with Maven BOM (Bill Of Materials) ### Relevant Articles: - [Spring with Maven BOM](http://www.baeldung.com/spring-maven-bom) diff --git a/spring-boot-admin/README.md b/spring-boot-admin/README.md index 73ce857059..61010819fd 100644 --- a/spring-boot-admin/README.md +++ b/spring-boot-admin/README.md @@ -1,3 +1,7 @@ +## Spring Boot Admin + +This module contains articles about Spring Boot Admin + ## 1. Spring Boot Admin Server * mvn clean install diff --git a/spring-boot-admin/pom.xml b/spring-boot-admin/pom.xml index 23852dee57..b2ced767eb 100644 --- a/spring-boot-admin/pom.xml +++ b/spring-boot-admin/pom.xml @@ -30,7 +30,7 @@ - 1.5.8.RELEASE + 2.1.7.RELEASE \ No newline at end of file diff --git a/spring-boot-admin/spring-boot-admin-client/pom.xml b/spring-boot-admin/spring-boot-admin-client/pom.xml index 7563a01172..aa2daf8d45 100644 --- a/spring-boot-admin/spring-boot-admin-client/pom.xml +++ b/spring-boot-admin/spring-boot-admin-client/pom.xml @@ -18,7 +18,7 @@ org.springframework.boot - spring-boot-starter + spring-boot-starter-web org.springframework.boot @@ -59,7 +59,7 @@
- 1.5.4 + 2.1.6 2.0.4.RELEASE diff --git a/spring-boot-admin/spring-boot-admin-client/src/main/resources/application.properties b/spring-boot-admin/spring-boot-admin-client/src/main/resources/application.properties index 58c178ecd9..ff4b1e3255 100644 --- a/spring-boot-admin/spring-boot-admin-client/src/main/resources/application.properties +++ b/spring-boot-admin/spring-boot-admin-client/src/main/resources/application.properties @@ -1,16 +1,20 @@ #basic auth creddentials -security.user.name=client -security.user.password=client +spring.security.user.name=client +spring.security.user.password=client #configs to connect to a secured server -spring.boot.admin.url=http://localhost:8080 -spring.boot.admin.username=admin -spring.boot.admin.password=admin +spring.boot.admin.client.url=http://localhost:8080 +#spring.boot.admin.client.instance.service-base-url=http://localhost:8081 +spring.boot.admin.client.username=admin +spring.boot.admin.client.password=admin #configs to give secured server info -spring.boot.admin.client.metadata.user.name=${security.user.name} -spring.boot.admin.client.metadata.user.password=${security.user.password} +spring.boot.admin.client.instance.metadata.user.name=${spring.security.user.name} +spring.boot.admin.client.instance.metadata.user.password=${spring.security.user.password} #app config spring.application.name=spring-boot-admin-client -server.port=8081 \ No newline at end of file +server.port=8081 + +management.endpoints.web.exposure.include=* +management.endpoint.health.show-details=always \ No newline at end of file diff --git a/spring-boot-admin/spring-boot-admin-client/src/test/java/com/baeldung/springbootadminclient/SpringBootAdminClientApplicationIntegrationTest.java b/spring-boot-admin/spring-boot-admin-client/src/test/java/com/baeldung/springbootadminclient/SpringBootAdminClientApplicationIntegrationTest.java index 0201deabca..f9e969c06a 100644 --- a/spring-boot-admin/spring-boot-admin-client/src/test/java/com/baeldung/springbootadminclient/SpringBootAdminClientApplicationIntegrationTest.java +++ b/spring-boot-admin/spring-boot-admin-client/src/test/java/com/baeldung/springbootadminclient/SpringBootAdminClientApplicationIntegrationTest.java @@ -15,7 +15,7 @@ import static org.junit.Assert.assertEquals; import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultMatchers.unauthenticated; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = RANDOM_PORT) @@ -36,20 +36,20 @@ public class SpringBootAdminClientApplicationIntegrationTest { @Test public void whenEnvironmentAvailable_ThenAdminServerPropertiesExist() { - assertEquals(environment.getProperty("spring.boot.admin.url"), "http://localhost:8080"); - assertEquals(environment.getProperty("spring.boot.admin.username"), "admin"); - assertEquals(environment.getProperty("spring.boot.admin.password"), "admin"); + assertEquals(environment.getProperty("spring.boot.admin.client.url"), "http://localhost:8080"); + assertEquals(environment.getProperty("spring.boot.admin.client.username"), "admin"); + assertEquals(environment.getProperty("spring.boot.admin.client.password"), "admin"); } @Test public void whenHttpBasicAttempted_ThenSuccess() throws Exception { - mockMvc.perform(get("/env").with(httpBasic("client", "client"))); + mockMvc.perform(get("/actuator/env").with(httpBasic("client", "client"))); } @Test public void whenInvalidHttpBasicAttempted_ThenUnauthorized() throws Exception { mockMvc - .perform(get("/env").with(httpBasic("client", "invalid"))) - .andExpect(status().isUnauthorized()); + .perform(get("/actuator/env").with(httpBasic("client", "invalid"))) + .andExpect(unauthenticated()); } } diff --git a/spring-boot-admin/spring-boot-admin-server/pom.xml b/spring-boot-admin/spring-boot-admin-server/pom.xml index d429d9289f..5ef99976c8 100644 --- a/spring-boot-admin/spring-boot-admin-server/pom.xml +++ b/spring-boot-admin/spring-boot-admin-server/pom.xml @@ -18,18 +18,14 @@ org.springframework.boot - spring-boot-starter + spring-boot-starter-web + de.codecentric - spring-boot-admin-server - ${spring-boot-admin-server.version} - - - de.codecentric - spring-boot-admin-server-ui + spring-boot-admin-starter-server ${spring-boot-admin-server.version} @@ -37,7 +33,7 @@ de.codecentric spring-boot-admin-server-ui-login - ${spring-boot-admin-server.version} + ${spring-boot-admin-server-ui-login.version} org.springframework.boot @@ -47,6 +43,7 @@ com.hazelcast hazelcast + de.codecentric @@ -54,10 +51,12 @@ ${spring-boot-admin-starter-client.version} - - - - + + + org.springframework.boot + spring-boot-starter-mail + + org.springframework.boot spring-boot-starter-test @@ -82,8 +81,9 @@ - 1.5.4 - 1.5.4 + 2.1.6 + 2.1.6 + 1.5.7 2.0.4.RELEASE diff --git a/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/SpringBootAdminServerApplication.java b/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/SpringBootAdminServerApplication.java index d1fb4e769b..e934086cf4 100644 --- a/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/SpringBootAdminServerApplication.java +++ b/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/SpringBootAdminServerApplication.java @@ -1,6 +1,6 @@ package com.baeldung.springbootadminserver; -import de.codecentric.boot.admin.config.EnableAdminServer; +import de.codecentric.boot.admin.server.config.EnableAdminServer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/HazelcastConfig.java b/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/HazelcastConfig.java index b19b7820af..d38b0e933c 100644 --- a/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/HazelcastConfig.java +++ b/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/HazelcastConfig.java @@ -2,8 +2,14 @@ package com.baeldung.springbootadminserver.configs; import com.hazelcast.config.Config; import com.hazelcast.config.EvictionPolicy; -import com.hazelcast.config.ListConfig; +import com.hazelcast.config.InMemoryFormat; import com.hazelcast.config.MapConfig; +import com.hazelcast.config.MergePolicyConfig; +import com.hazelcast.config.TcpIpConfig; +import com.hazelcast.map.merge.PutIfAbsentMapMergePolicy; + +import java.util.Collections; + import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -12,13 +18,30 @@ public class HazelcastConfig { @Bean public Config hazelcast() { - return new Config() - .setProperty("hazelcast.jmx", "true") - .addMapConfig(new MapConfig("spring-boot-admin-application-store") + MapConfig eventStoreMap = new MapConfig("spring-boot-admin-event-store").setInMemoryFormat(InMemoryFormat.OBJECT) .setBackupCount(1) - .setEvictionPolicy(EvictionPolicy.NONE)) - .addListConfig(new ListConfig("spring-boot-admin-event-store") + .setEvictionPolicy(EvictionPolicy.NONE) + .setMergePolicyConfig(new MergePolicyConfig(PutIfAbsentMapMergePolicy.class.getName(), 100)); + + MapConfig sentNotificationsMap = new MapConfig("spring-boot-admin-application-store").setInMemoryFormat(InMemoryFormat.OBJECT) .setBackupCount(1) - .setMaxSize(1000)); + .setEvictionPolicy(EvictionPolicy.LRU) + .setMergePolicyConfig(new MergePolicyConfig(PutIfAbsentMapMergePolicy.class.getName(), 100)); + + Config config = new Config(); + config.addMapConfig(eventStoreMap); + config.addMapConfig(sentNotificationsMap); + config.setProperty("hazelcast.jmx", "true"); + + config.getNetworkConfig() + .getJoin() + .getMulticastConfig() + .setEnabled(false); + TcpIpConfig tcpIpConfig = config.getNetworkConfig() + .getJoin() + .getTcpIpConfig(); + tcpIpConfig.setEnabled(true); + tcpIpConfig.setMembers(Collections.singletonList("127.0.0.1")); + return config; } } diff --git a/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/NotifierConfiguration.java b/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/NotifierConfiguration.java index 10a31464ab..f9abee11b7 100644 --- a/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/NotifierConfiguration.java +++ b/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/NotifierConfiguration.java @@ -1,42 +1,48 @@ package com.baeldung.springbootadminserver.configs; -import de.codecentric.boot.admin.notify.LoggingNotifier; -import de.codecentric.boot.admin.notify.RemindingNotifier; -import de.codecentric.boot.admin.notify.filter.FilteringNotifier; +import java.time.Duration; +import java.util.Collections; +import java.util.List; + +import org.springframework.beans.factory.ObjectProvider; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; -import java.util.concurrent.TimeUnit; +import de.codecentric.boot.admin.server.domain.entities.InstanceRepository; +import de.codecentric.boot.admin.server.notify.CompositeNotifier; +import de.codecentric.boot.admin.server.notify.LoggingNotifier; +import de.codecentric.boot.admin.server.notify.Notifier; +import de.codecentric.boot.admin.server.notify.RemindingNotifier; +import de.codecentric.boot.admin.server.notify.filter.FilteringNotifier; @Configuration -@EnableScheduling public class NotifierConfiguration { + private final InstanceRepository repository; + private final ObjectProvider> otherNotifiers; - // @Autowired private Notifier notifier; - - @Bean - public LoggingNotifier notifier() { - return new LoggingNotifier(); + public NotifierConfiguration(InstanceRepository repository, ObjectProvider> otherNotifiers) { + this.repository = repository; + this.otherNotifiers = otherNotifiers; } @Bean public FilteringNotifier filteringNotifier() { - return new FilteringNotifier(notifier()); + CompositeNotifier delegate = new CompositeNotifier(this.otherNotifiers.getIfAvailable(Collections::emptyList)); + return new FilteringNotifier(delegate, this.repository); } @Bean - @Primary - public RemindingNotifier remindingNotifier() { - RemindingNotifier remindingNotifier = new RemindingNotifier(filteringNotifier()); - remindingNotifier.setReminderPeriod(TimeUnit.MINUTES.toMillis(5)); - return remindingNotifier; + public LoggingNotifier notifier() { + return new LoggingNotifier(repository); } - @Scheduled(fixedRate = 60_000L) - public void remind() { - remindingNotifier().sendReminders(); + @Primary + @Bean(initMethod = "start", destroyMethod = "stop") + public RemindingNotifier remindingNotifier() { + RemindingNotifier remindingNotifier = new RemindingNotifier(filteringNotifier(), repository); + remindingNotifier.setReminderPeriod(Duration.ofMinutes(5)); + remindingNotifier.setCheckReminderInverval(Duration.ofSeconds(60)); + return remindingNotifier; } } diff --git a/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/WebSecurityConfig.java b/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/WebSecurityConfig.java index 4a7c8330b7..1943c61ff4 100644 --- a/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/WebSecurityConfig.java +++ b/spring-boot-admin/spring-boot-admin-server/src/main/java/com/baeldung/springbootadminserver/configs/WebSecurityConfig.java @@ -1,33 +1,58 @@ package com.baeldung.springbootadminserver.configs; +import java.util.UUID; + import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpMethod; import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; +import org.springframework.security.web.csrf.CookieCsrfTokenRepository; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; + +import de.codecentric.boot.admin.server.config.AdminServerProperties; @Configuration +@EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { + private final AdminServerProperties adminServer; + + public WebSecurityConfig(AdminServerProperties adminServer) { + this.adminServer = adminServer; + } @Override protected void configure(HttpSecurity http) throws Exception { - http - .formLogin() - .loginPage("/login.html") - .loginProcessingUrl("/login") - .permitAll(); - http - .logout() - .logoutUrl("/logout"); - http - .csrf() - .disable(); - http - .authorizeRequests() - .antMatchers("/login.html", "/**/*.css", "/img/**", "/third-party/**") - .permitAll(); - http - .authorizeRequests() - .antMatchers("/**") - .authenticated(); - http.httpBasic(); + SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); + successHandler.setTargetUrlParameter("redirectTo"); + successHandler.setDefaultTargetUrl(this.adminServer.getContextPath() + "/"); + + http.authorizeRequests() + .antMatchers(this.adminServer.getContextPath() + "/assets/**") + .permitAll() + .antMatchers(this.adminServer.getContextPath() + "/login") + .permitAll() + .anyRequest() + .authenticated() + .and() + .formLogin() + .loginPage(this.adminServer.getContextPath() + "/login") + .successHandler(successHandler) + .and() + .logout() + .logoutUrl(this.adminServer.getContextPath() + "/logout") + .and() + .httpBasic() + .and() + .csrf() + .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()) + .ignoringRequestMatchers(new AntPathRequestMatcher(this.adminServer.getContextPath() + "/instances", HttpMethod.POST.toString()), new AntPathRequestMatcher(this.adminServer.getContextPath() + "/instances/*", HttpMethod.DELETE.toString()), + new AntPathRequestMatcher(this.adminServer.getContextPath() + "/actuator/**")) + .and() + .rememberMe() + .key(UUID.randomUUID() + .toString()) + .tokenValiditySeconds(1209600); } } diff --git a/spring-boot-admin/spring-boot-admin-server/src/main/resources/application.properties b/spring-boot-admin/spring-boot-admin-server/src/main/resources/application.properties index 362f6428e8..273c11468c 100644 --- a/spring-boot-admin/spring-boot-admin-server/src/main/resources/application.properties +++ b/spring-boot-admin/spring-boot-admin-server/src/main/resources/application.properties @@ -1,26 +1,29 @@ spring.application.name=spring-boot-admin-server -security.user.name=admin -security.user.password=admin +spring.security.user.name=admin +spring.security.user.password=admin #configs to connect to self register the admin server as a client -spring.boot.admin.url=http://localhost:8080 -spring.boot.admin.username=${security.user.name} -spring.boot.admin.password=${security.user.password} +spring.boot.admin.client.url=http://localhost:8080 +spring.boot.admin.client.username=${spring.security.user.name} +spring.boot.admin.client.password=${spring.security.user.password} #configs to give secured server info -spring.boot.admin.client.metadata.user.name=${security.user.name} -spring.boot.admin.client.metadata.user.password=${security.user.password} +spring.boot.admin.client.instance.metadata.user.name=${spring.security.user.name} +spring.boot.admin.client.instance.metadata.user.password=${spring.security.user.password} + +management.endpoints.web.exposure.include=* +management.endpoint.health.show-details=always #mail notifications -#spring.mail.host=smtp.gmail.com -#spring.mail.username=test@gmail.com -#spring.mail.password=password -#spring.mail.port=587 -#spring.mail.properties.mail.smtp.auth=true -#spring.mail.properties.mail.smtp.starttls.enable=true +spring.mail.host= +spring.mail.username= +spring.mail.password= +spring.mail.port= +spring.mail.properties.mail.smtp.auth= +spring.mail.properties.mail.smtp.starttls.enable= -#spring.boot.admin.notify.mail.to=test@gmail.com +spring.boot.admin.notify.mail.to= #hipchat notifications #spring.boot.admin.notify.hipchat.auth-token= diff --git a/spring-boot-admin/spring-boot-admin-server/src/test/java/com/baeldung/springbootadminserver/NotifierConfigurationIntegrationTest.java b/spring-boot-admin/spring-boot-admin-server/src/test/java/com/baeldung/springbootadminserver/NotifierConfigurationIntegrationTest.java index 465d079ac3..eca83b6f6c 100644 --- a/spring-boot-admin/spring-boot-admin-server/src/test/java/com/baeldung/springbootadminserver/NotifierConfigurationIntegrationTest.java +++ b/spring-boot-admin/spring-boot-admin-server/src/test/java/com/baeldung/springbootadminserver/NotifierConfigurationIntegrationTest.java @@ -1,9 +1,8 @@ package com.baeldung.springbootadminserver; -import com.baeldung.springbootadminserver.configs.NotifierConfiguration; -import de.codecentric.boot.admin.notify.Notifier; -import de.codecentric.boot.admin.notify.RemindingNotifier; -import de.codecentric.boot.admin.notify.filter.FilteringNotifier; +import static org.junit.Assert.assertNotEquals; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.NONE; + import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -11,11 +10,14 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContext; import org.springframework.test.context.junit4.SpringRunner; -import static org.junit.Assert.assertNotEquals; -import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.NONE; +import com.baeldung.springbootadminserver.configs.NotifierConfiguration; + +import de.codecentric.boot.admin.server.notify.Notifier; +import de.codecentric.boot.admin.server.notify.RemindingNotifier; +import de.codecentric.boot.admin.server.notify.filter.FilteringNotifier; @RunWith(SpringRunner.class) -@SpringBootTest(classes = { NotifierConfiguration.class }, webEnvironment = NONE) +@SpringBootTest(classes = { NotifierConfiguration.class, SpringBootAdminServerApplication.class }, webEnvironment = NONE) public class NotifierConfigurationIntegrationTest { @Autowired private ApplicationContext applicationContext; diff --git a/spring-boot-admin/spring-boot-admin-server/src/test/java/com/baeldung/springbootadminserver/WebSecurityConfigIntegrationTest.java b/spring-boot-admin/spring-boot-admin-server/src/test/java/com/baeldung/springbootadminserver/WebSecurityConfigIntegrationTest.java index 0c0695e6c2..e5018f5f5f 100644 --- a/spring-boot-admin/spring-boot-admin-server/src/test/java/com/baeldung/springbootadminserver/WebSecurityConfigIntegrationTest.java +++ b/spring-boot-admin/spring-boot-admin-server/src/test/java/com/baeldung/springbootadminserver/WebSecurityConfigIntegrationTest.java @@ -14,6 +14,7 @@ import static org.springframework.security.test.web.servlet.request.SecurityMock import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultMatchers.unauthenticated; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @@ -51,21 +52,21 @@ public class WebSecurityConfigIntegrationTest { .password("admin")); mockMvc - .perform(get("/api/applications/")) + .perform(get("/applications/")) .andExpect(status().is2xxSuccessful()); } @Test public void whenHttpBasicAttempted_ThenSuccess() throws Exception { - mockMvc.perform(get("/env").with(httpBasic("admin", "admin"))); + mockMvc.perform(get("/actuator/env").with(httpBasic("admin", "admin"))); } @Test public void whenInvalidHttpBasicAttempted_ThenUnauthorized() throws Exception { mockMvc - .perform(get("/env").with(httpBasic("admin", "invalid"))) - .andExpect(status().isUnauthorized()); + .perform(get("/actuator/env").with(httpBasic("admin", "invalid"))) + .andExpect(unauthenticated()); } } diff --git a/spring-boot-angular-ecommerce/README.md b/spring-boot-angular-ecommerce/README.md deleted file mode 100644 index c6564643e2..0000000000 --- a/spring-boot-angular-ecommerce/README.md +++ /dev/null @@ -1,2 +0,0 @@ -### Relevant Articles: -- [A Simple E-Commerce Implementation with Spring](https://www.baeldung.com/spring-angular-ecommerce) diff --git a/spring-boot-angular-ecommerce/pom.xml b/spring-boot-angular-ecommerce/pom.xml deleted file mode 100644 index 510e6c6ec3..0000000000 --- a/spring-boot-angular-ecommerce/pom.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - 4.0.0 - spring-boot-angular-ecommerce - 0.0.1-SNAPSHOT - spring-boot-angular-ecommerce - jar - Spring Boot Angular E-commerce Appliciation - - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - - - - - - org.springframework.boot - spring-boot-dependencies - ${spring.boot.version} - pom - import - - - - - - - org.springframework.boot - spring-boot-starter-data-jpa - ${spring.boot.version} - - - org.springframework.boot - spring-boot-starter-web - ${spring.boot.version} - - - org.springframework.boot - spring-boot-devtools - ${spring.boot.version} - runtime - - - com.h2database - h2 - 1.4.197 - runtime - - - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - 2.9.6 - - - org.springframework.boot - spring-boot-starter-test - ${spring.boot.version} - test - - - - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring-boot-maven-plugin.version} - - - - - - UTF-8 - UTF-8 - 2.0.3.RELEASE - 2.0.4.RELEASE - - diff --git a/spring-boot-angular/README.md b/spring-boot-angular/README.md index cfc1ea69f4..027b23202e 100644 --- a/spring-boot-angular/README.md +++ b/spring-boot-angular/README.md @@ -1,3 +1,8 @@ -### Relevant Articles: -- [Building a Web Application with Spring Boot and Angular](https://www.baeldung.com/spring-boot-angular-web) +## Spring Boot Angular +This module contains articles about Spring Boot with Angular + +### Relevant Articles: + +- [Building a Web Application with Spring Boot and Angular](https://www.baeldung.com/spring-boot-angular-web) +- [A Simple E-Commerce Implementation with Spring](https://www.baeldung.com/spring-angular-ecommerce) diff --git a/spring-boot-angular/pom.xml b/spring-boot-angular/pom.xml index 71c46cb7f5..8c26668752 100644 --- a/spring-boot-angular/pom.xml +++ b/spring-boot-angular/pom.xml @@ -7,11 +7,12 @@ 1.0 jar + parent-boot-2 com.baeldung 0.0.1-SNAPSHOT - ../../parent-boot-2 + ../parent-boot-2 diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/EcommerceApplication.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/EcommerceApplication.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/EcommerceApplication.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/EcommerceApplication.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/controller/OrderController.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/controller/OrderController.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/controller/OrderController.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/controller/OrderController.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/controller/ProductController.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/controller/ProductController.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/controller/ProductController.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/controller/ProductController.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/dto/OrderProductDto.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/dto/OrderProductDto.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/dto/OrderProductDto.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/dto/OrderProductDto.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/exception/ApiExceptionHandler.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/exception/ApiExceptionHandler.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/exception/ApiExceptionHandler.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/exception/ApiExceptionHandler.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/exception/ResourceNotFoundException.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/exception/ResourceNotFoundException.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/exception/ResourceNotFoundException.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/exception/ResourceNotFoundException.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/model/Order.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/Order.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/model/Order.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/Order.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/model/OrderProduct.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderProduct.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/model/OrderProduct.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderProduct.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/model/OrderProductPK.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderProductPK.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/model/OrderProductPK.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderProductPK.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/model/OrderStatus.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderStatus.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/model/OrderStatus.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderStatus.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/model/Product.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/Product.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/model/Product.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/Product.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/repository/OrderProductRepository.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/OrderProductRepository.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/repository/OrderProductRepository.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/OrderProductRepository.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/repository/OrderRepository.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/OrderRepository.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/repository/OrderRepository.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/OrderRepository.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/repository/ProductRepository.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/ProductRepository.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/repository/ProductRepository.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/ProductRepository.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/service/OrderProductService.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderProductService.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/service/OrderProductService.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderProductService.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/service/OrderProductServiceImpl.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderProductServiceImpl.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/service/OrderProductServiceImpl.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderProductServiceImpl.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/service/OrderService.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderService.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/service/OrderService.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderService.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/service/OrderServiceImpl.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderServiceImpl.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/service/OrderServiceImpl.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderServiceImpl.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/service/ProductService.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/ProductService.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/service/ProductService.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/ProductService.java diff --git a/spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/service/ProductServiceImpl.java b/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/ProductServiceImpl.java similarity index 100% rename from spring-boot-angular-ecommerce/src/main/java/com/baeldung/ecommerce/service/ProductServiceImpl.java rename to spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/ProductServiceImpl.java diff --git a/spring-boot-angular/angularclient/.angular-cli.json b/spring-boot-angular/src/main/js/application/.angular-cli.json similarity index 100% rename from spring-boot-angular/angularclient/.angular-cli.json rename to spring-boot-angular/src/main/js/application/.angular-cli.json diff --git a/spring-boot-angular/angularclient/.editorconfig b/spring-boot-angular/src/main/js/application/.editorconfig similarity index 100% rename from spring-boot-angular/angularclient/.editorconfig rename to spring-boot-angular/src/main/js/application/.editorconfig diff --git a/spring-boot-angular/angularclient/.gitignore b/spring-boot-angular/src/main/js/application/.gitignore similarity index 82% rename from spring-boot-angular/angularclient/.gitignore rename to spring-boot-angular/src/main/js/application/.gitignore index eabf65e51a..0537fca516 100644 --- a/spring-boot-angular/angularclient/.gitignore +++ b/spring-boot-angular/src/main/js/application/.gitignore @@ -36,8 +36,8 @@ testem.log /typings # e2e -/e2e/*.js -/e2e/*.map +/spring-boot-angular/src/main/js/application/e2e/*.js +/spring-boot-angular/src/main/js/application/e2e/*.map # System Files .DS_Store diff --git a/spring-boot-angular/angularclient/README.md b/spring-boot-angular/src/main/js/application/README.md similarity index 100% rename from spring-boot-angular/angularclient/README.md rename to spring-boot-angular/src/main/js/application/README.md diff --git a/spring-boot-angular/angularclient/e2e/app.e2e-spec.ts b/spring-boot-angular/src/main/js/application/e2e/app.e2e-spec.ts similarity index 100% rename from spring-boot-angular/angularclient/e2e/app.e2e-spec.ts rename to spring-boot-angular/src/main/js/application/e2e/app.e2e-spec.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/e2e/src/app.po.ts b/spring-boot-angular/src/main/js/application/e2e/app.po.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/e2e/src/app.po.ts rename to spring-boot-angular/src/main/js/application/e2e/app.po.ts diff --git a/spring-boot-angular/angularclient/e2e/tsconfig.e2e.json b/spring-boot-angular/src/main/js/application/e2e/tsconfig.e2e.json similarity index 100% rename from spring-boot-angular/angularclient/e2e/tsconfig.e2e.json rename to spring-boot-angular/src/main/js/application/e2e/tsconfig.e2e.json diff --git a/spring-boot-angular/angularclient/karma.conf.js b/spring-boot-angular/src/main/js/application/karma.conf.js similarity index 100% rename from spring-boot-angular/angularclient/karma.conf.js rename to spring-boot-angular/src/main/js/application/karma.conf.js diff --git a/spring-boot-angular/angularclient/package-lock.json b/spring-boot-angular/src/main/js/application/package-lock.json similarity index 100% rename from spring-boot-angular/angularclient/package-lock.json rename to spring-boot-angular/src/main/js/application/package-lock.json diff --git a/spring-boot-angular/angularclient/package.json b/spring-boot-angular/src/main/js/application/package.json similarity index 100% rename from spring-boot-angular/angularclient/package.json rename to spring-boot-angular/src/main/js/application/package.json diff --git a/spring-boot-angular/angularclient/protractor.conf.js b/spring-boot-angular/src/main/js/application/protractor.conf.js similarity index 100% rename from spring-boot-angular/angularclient/protractor.conf.js rename to spring-boot-angular/src/main/js/application/protractor.conf.js diff --git a/spring-boot-angular/angularclient/src/app/app-routing.module.ts b/spring-boot-angular/src/main/js/application/src/app/app-routing.module.ts similarity index 100% rename from spring-boot-angular/angularclient/src/app/app-routing.module.ts rename to spring-boot-angular/src/main/js/application/src/app/app-routing.module.ts diff --git a/spring-boot-angular/angularclient/src/app/app.component.css b/spring-boot-angular/src/main/js/application/src/app/app.component.css similarity index 100% rename from spring-boot-angular/angularclient/src/app/app.component.css rename to spring-boot-angular/src/main/js/application/src/app/app.component.css diff --git a/spring-boot-angular/angularclient/src/app/app.component.html b/spring-boot-angular/src/main/js/application/src/app/app.component.html similarity index 100% rename from spring-boot-angular/angularclient/src/app/app.component.html rename to spring-boot-angular/src/main/js/application/src/app/app.component.html diff --git a/spring-boot-angular/angularclient/src/app/app.component.spec.ts b/spring-boot-angular/src/main/js/application/src/app/app.component.spec.ts similarity index 100% rename from spring-boot-angular/angularclient/src/app/app.component.spec.ts rename to spring-boot-angular/src/main/js/application/src/app/app.component.spec.ts diff --git a/spring-boot-angular/angularclient/src/app/app.component.ts b/spring-boot-angular/src/main/js/application/src/app/app.component.ts similarity index 100% rename from spring-boot-angular/angularclient/src/app/app.component.ts rename to spring-boot-angular/src/main/js/application/src/app/app.component.ts diff --git a/spring-boot-angular/angularclient/src/app/app.module.ts b/spring-boot-angular/src/main/js/application/src/app/app.module.ts similarity index 100% rename from spring-boot-angular/angularclient/src/app/app.module.ts rename to spring-boot-angular/src/main/js/application/src/app/app.module.ts diff --git a/spring-boot-angular/angularclient/src/app/model/user.ts b/spring-boot-angular/src/main/js/application/src/app/model/user.ts similarity index 100% rename from spring-boot-angular/angularclient/src/app/model/user.ts rename to spring-boot-angular/src/main/js/application/src/app/model/user.ts diff --git a/spring-boot-angular/angularclient/src/app/service/user.service.spec.ts b/spring-boot-angular/src/main/js/application/src/app/service/user.service.spec.ts similarity index 100% rename from spring-boot-angular/angularclient/src/app/service/user.service.spec.ts rename to spring-boot-angular/src/main/js/application/src/app/service/user.service.spec.ts diff --git a/spring-boot-angular/angularclient/src/app/service/user.service.ts b/spring-boot-angular/src/main/js/application/src/app/service/user.service.ts similarity index 100% rename from spring-boot-angular/angularclient/src/app/service/user.service.ts rename to spring-boot-angular/src/main/js/application/src/app/service/user.service.ts diff --git a/spring-boot-angular/angularclient/src/app/user-form/user-form.component.css b/spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.css similarity index 100% rename from spring-boot-angular/angularclient/src/app/user-form/user-form.component.css rename to spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.css diff --git a/spring-boot-angular/angularclient/src/app/user-form/user-form.component.html b/spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.html similarity index 100% rename from spring-boot-angular/angularclient/src/app/user-form/user-form.component.html rename to spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.html diff --git a/spring-boot-angular/angularclient/src/app/user-form/user-form.component.spec.ts b/spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.spec.ts similarity index 100% rename from spring-boot-angular/angularclient/src/app/user-form/user-form.component.spec.ts rename to spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.spec.ts diff --git a/spring-boot-angular/angularclient/src/app/user-form/user-form.component.ts b/spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.ts similarity index 100% rename from spring-boot-angular/angularclient/src/app/user-form/user-form.component.ts rename to spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.ts diff --git a/spring-boot-angular/angularclient/src/app/user-list/user-list.component.css b/spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.css similarity index 100% rename from spring-boot-angular/angularclient/src/app/user-list/user-list.component.css rename to spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.css diff --git a/spring-boot-angular/angularclient/src/app/user-list/user-list.component.html b/spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.html similarity index 100% rename from spring-boot-angular/angularclient/src/app/user-list/user-list.component.html rename to spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.html diff --git a/spring-boot-angular/angularclient/src/app/user-list/user-list.component.spec.ts b/spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.spec.ts similarity index 100% rename from spring-boot-angular/angularclient/src/app/user-list/user-list.component.spec.ts rename to spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.spec.ts diff --git a/spring-boot-angular/angularclient/src/app/user-list/user-list.component.ts b/spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.ts similarity index 100% rename from spring-boot-angular/angularclient/src/app/user-list/user-list.component.ts rename to spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/assets/.gitkeep b/spring-boot-angular/src/main/js/application/src/assets/.gitkeep similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/assets/.gitkeep rename to spring-boot-angular/src/main/js/application/src/assets/.gitkeep diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/environments/environment.prod.ts b/spring-boot-angular/src/main/js/application/src/environments/environment.prod.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/environments/environment.prod.ts rename to spring-boot-angular/src/main/js/application/src/environments/environment.prod.ts diff --git a/spring-boot-angular/angularclient/src/environments/environment.ts b/spring-boot-angular/src/main/js/application/src/environments/environment.ts similarity index 100% rename from spring-boot-angular/angularclient/src/environments/environment.ts rename to spring-boot-angular/src/main/js/application/src/environments/environment.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/favicon.ico b/spring-boot-angular/src/main/js/application/src/favicon.ico similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/favicon.ico rename to spring-boot-angular/src/main/js/application/src/favicon.ico diff --git a/spring-boot-angular/angularclient/src/index.html b/spring-boot-angular/src/main/js/application/src/index.html similarity index 100% rename from spring-boot-angular/angularclient/src/index.html rename to spring-boot-angular/src/main/js/application/src/index.html diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/main.ts b/spring-boot-angular/src/main/js/application/src/main.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/main.ts rename to spring-boot-angular/src/main/js/application/src/main.ts diff --git a/spring-boot-angular/angularclient/src/polyfills.ts b/spring-boot-angular/src/main/js/application/src/polyfills.ts similarity index 100% rename from spring-boot-angular/angularclient/src/polyfills.ts rename to spring-boot-angular/src/main/js/application/src/polyfills.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/styles.css b/spring-boot-angular/src/main/js/application/src/styles.css similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/styles.css rename to spring-boot-angular/src/main/js/application/src/styles.css diff --git a/spring-boot-angular/angularclient/src/tsconfig.app.json b/spring-boot-angular/src/main/js/application/src/tsconfig.app.json similarity index 100% rename from spring-boot-angular/angularclient/src/tsconfig.app.json rename to spring-boot-angular/src/main/js/application/src/tsconfig.app.json diff --git a/spring-boot-angular/angularclient/src/tsconfig.spec.json b/spring-boot-angular/src/main/js/application/src/tsconfig.spec.json similarity index 100% rename from spring-boot-angular/angularclient/src/tsconfig.spec.json rename to spring-boot-angular/src/main/js/application/src/tsconfig.spec.json diff --git a/spring-boot-angular/angularclient/src/typings.d.ts b/spring-boot-angular/src/main/js/application/src/typings.d.ts similarity index 100% rename from spring-boot-angular/angularclient/src/typings.d.ts rename to spring-boot-angular/src/main/js/application/src/typings.d.ts diff --git a/spring-boot-angular/angularclient/tsconfig.json b/spring-boot-angular/src/main/js/application/tsconfig.json similarity index 100% rename from spring-boot-angular/angularclient/tsconfig.json rename to spring-boot-angular/src/main/js/application/tsconfig.json diff --git a/spring-boot-angular/angularclient/tslint.json b/spring-boot-angular/src/main/js/application/tslint.json similarity index 100% rename from spring-boot-angular/angularclient/tslint.json rename to spring-boot-angular/src/main/js/application/tslint.json diff --git a/spring-boot-angular-ecommerce/src/main/frontend/.editorconfig b/spring-boot-angular/src/main/js/ecommerce/.editorconfig similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/.editorconfig rename to spring-boot-angular/src/main/js/ecommerce/.editorconfig diff --git a/spring-boot-angular-ecommerce/src/main/frontend/README.md b/spring-boot-angular/src/main/js/ecommerce/README.md similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/README.md rename to spring-boot-angular/src/main/js/ecommerce/README.md diff --git a/spring-boot-angular-ecommerce/src/main/frontend/angular.json b/spring-boot-angular/src/main/js/ecommerce/angular.json similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/angular.json rename to spring-boot-angular/src/main/js/ecommerce/angular.json diff --git a/spring-boot-angular-ecommerce/src/main/frontend/e2e/protractor.conf.js b/spring-boot-angular/src/main/js/ecommerce/e2e/protractor.conf.js similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/e2e/protractor.conf.js rename to spring-boot-angular/src/main/js/ecommerce/e2e/protractor.conf.js diff --git a/spring-boot-angular-ecommerce/src/main/frontend/e2e/src/app.e2e-spec.ts b/spring-boot-angular/src/main/js/ecommerce/e2e/src/app.e2e-spec.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/e2e/src/app.e2e-spec.ts rename to spring-boot-angular/src/main/js/ecommerce/e2e/src/app.e2e-spec.ts diff --git a/spring-boot-angular/angularclient/e2e/app.po.ts b/spring-boot-angular/src/main/js/ecommerce/e2e/src/app.po.ts similarity index 100% rename from spring-boot-angular/angularclient/e2e/app.po.ts rename to spring-boot-angular/src/main/js/ecommerce/e2e/src/app.po.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/e2e/tsconfig.e2e.json b/spring-boot-angular/src/main/js/ecommerce/e2e/tsconfig.e2e.json similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/e2e/tsconfig.e2e.json rename to spring-boot-angular/src/main/js/ecommerce/e2e/tsconfig.e2e.json diff --git a/spring-boot-angular-ecommerce/src/main/frontend/package-lock.json b/spring-boot-angular/src/main/js/ecommerce/package-lock.json similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/package-lock.json rename to spring-boot-angular/src/main/js/ecommerce/package-lock.json diff --git a/spring-boot-angular-ecommerce/src/main/frontend/package.json b/spring-boot-angular/src/main/js/ecommerce/package.json similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/package.json rename to spring-boot-angular/src/main/js/ecommerce/package.json diff --git a/spring-boot-angular-ecommerce/src/main/frontend/proxy-conf.json b/spring-boot-angular/src/main/js/ecommerce/proxy-conf.json similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/proxy-conf.json rename to spring-boot-angular/src/main/js/ecommerce/proxy-conf.json diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/app.component.css b/spring-boot-angular/src/main/js/ecommerce/src/app/app.component.css similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/app.component.css rename to spring-boot-angular/src/main/js/ecommerce/src/app/app.component.css diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/app.component.html b/spring-boot-angular/src/main/js/ecommerce/src/app/app.component.html similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/app.component.html rename to spring-boot-angular/src/main/js/ecommerce/src/app/app.component.html diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/app.component.spec.ts b/spring-boot-angular/src/main/js/ecommerce/src/app/app.component.spec.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/app.component.spec.ts rename to spring-boot-angular/src/main/js/ecommerce/src/app/app.component.spec.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/app.component.ts b/spring-boot-angular/src/main/js/ecommerce/src/app/app.component.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/app.component.ts rename to spring-boot-angular/src/main/js/ecommerce/src/app/app.component.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/app.module.ts b/spring-boot-angular/src/main/js/ecommerce/src/app/app.module.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/app.module.ts rename to spring-boot-angular/src/main/js/ecommerce/src/app/app.module.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/ecommerce.component.css b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/ecommerce.component.css similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/ecommerce.component.css rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/ecommerce.component.css diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/ecommerce.component.html b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/ecommerce.component.html similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/ecommerce.component.html rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/ecommerce.component.html diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/ecommerce.component.spec.ts b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/ecommerce.component.spec.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/ecommerce.component.spec.ts rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/ecommerce.component.spec.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/ecommerce.component.ts b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/ecommerce.component.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/ecommerce.component.ts rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/ecommerce.component.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/models/product-order.model.ts b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/models/product-order.model.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/models/product-order.model.ts rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/models/product-order.model.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/models/product-orders.model.ts b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/models/product-orders.model.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/models/product-orders.model.ts rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/models/product-orders.model.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/models/product.model.ts b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/models/product.model.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/models/product.model.ts rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/models/product.model.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/orders/orders.component.css b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/orders/orders.component.css similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/orders/orders.component.css rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/orders/orders.component.css diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/orders/orders.component.html b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/orders/orders.component.html similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/orders/orders.component.html rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/orders/orders.component.html diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/orders/orders.component.spec.ts b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/orders/orders.component.spec.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/orders/orders.component.spec.ts rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/orders/orders.component.spec.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/orders/orders.component.ts b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/orders/orders.component.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/orders/orders.component.ts rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/orders/orders.component.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/products/products.component.css b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/products/products.component.css similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/products/products.component.css rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/products/products.component.css diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/products/products.component.html b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/products/products.component.html similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/products/products.component.html rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/products/products.component.html diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/products/products.component.spec.ts b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/products/products.component.spec.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/products/products.component.spec.ts rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/products/products.component.spec.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/products/products.component.ts b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/products/products.component.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/products/products.component.ts rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/products/products.component.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/services/EcommerceService.ts b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/services/EcommerceService.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/services/EcommerceService.ts rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/services/EcommerceService.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/shopping-cart/shopping-cart.component.css b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/shopping-cart/shopping-cart.component.css similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/shopping-cart/shopping-cart.component.css rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/shopping-cart/shopping-cart.component.css diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/shopping-cart/shopping-cart.component.html b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/shopping-cart/shopping-cart.component.html similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/shopping-cart/shopping-cart.component.html rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/shopping-cart/shopping-cart.component.html diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/shopping-cart/shopping-cart.component.spec.ts b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/shopping-cart/shopping-cart.component.spec.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/shopping-cart/shopping-cart.component.spec.ts rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/shopping-cart/shopping-cart.component.spec.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/shopping-cart/shopping-cart.component.ts b/spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/shopping-cart/shopping-cart.component.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/app/ecommerce/shopping-cart/shopping-cart.component.ts rename to spring-boot-angular/src/main/js/ecommerce/src/app/ecommerce/shopping-cart/shopping-cart.component.ts diff --git a/spring-boot-angular/angularclient/src/assets/.gitkeep b/spring-boot-angular/src/main/js/ecommerce/src/assets/.gitkeep similarity index 100% rename from spring-boot-angular/angularclient/src/assets/.gitkeep rename to spring-boot-angular/src/main/js/ecommerce/src/assets/.gitkeep diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/browserslist b/spring-boot-angular/src/main/js/ecommerce/src/browserslist similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/browserslist rename to spring-boot-angular/src/main/js/ecommerce/src/browserslist diff --git a/spring-boot-angular/angularclient/src/environments/environment.prod.ts b/spring-boot-angular/src/main/js/ecommerce/src/environments/environment.prod.ts similarity index 100% rename from spring-boot-angular/angularclient/src/environments/environment.prod.ts rename to spring-boot-angular/src/main/js/ecommerce/src/environments/environment.prod.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/environments/environment.ts b/spring-boot-angular/src/main/js/ecommerce/src/environments/environment.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/environments/environment.ts rename to spring-boot-angular/src/main/js/ecommerce/src/environments/environment.ts diff --git a/spring-boot-angular/angularclient/src/favicon.ico b/spring-boot-angular/src/main/js/ecommerce/src/favicon.ico similarity index 100% rename from spring-boot-angular/angularclient/src/favicon.ico rename to spring-boot-angular/src/main/js/ecommerce/src/favicon.ico diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/index.html b/spring-boot-angular/src/main/js/ecommerce/src/index.html similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/index.html rename to spring-boot-angular/src/main/js/ecommerce/src/index.html diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/karma.conf.js b/spring-boot-angular/src/main/js/ecommerce/src/karma.conf.js similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/karma.conf.js rename to spring-boot-angular/src/main/js/ecommerce/src/karma.conf.js diff --git a/spring-boot-angular/angularclient/src/main.ts b/spring-boot-angular/src/main/js/ecommerce/src/main.ts similarity index 100% rename from spring-boot-angular/angularclient/src/main.ts rename to spring-boot-angular/src/main/js/ecommerce/src/main.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/polyfills.ts b/spring-boot-angular/src/main/js/ecommerce/src/polyfills.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/polyfills.ts rename to spring-boot-angular/src/main/js/ecommerce/src/polyfills.ts diff --git a/spring-boot-angular/angularclient/src/styles.css b/spring-boot-angular/src/main/js/ecommerce/src/styles.css similarity index 100% rename from spring-boot-angular/angularclient/src/styles.css rename to spring-boot-angular/src/main/js/ecommerce/src/styles.css diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/test.ts b/spring-boot-angular/src/main/js/ecommerce/src/test.ts similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/test.ts rename to spring-boot-angular/src/main/js/ecommerce/src/test.ts diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/tsconfig.app.json b/spring-boot-angular/src/main/js/ecommerce/src/tsconfig.app.json similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/tsconfig.app.json rename to spring-boot-angular/src/main/js/ecommerce/src/tsconfig.app.json diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/tsconfig.spec.json b/spring-boot-angular/src/main/js/ecommerce/src/tsconfig.spec.json similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/tsconfig.spec.json rename to spring-boot-angular/src/main/js/ecommerce/src/tsconfig.spec.json diff --git a/spring-boot-angular-ecommerce/src/main/frontend/src/tslint.json b/spring-boot-angular/src/main/js/ecommerce/src/tslint.json similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/src/tslint.json rename to spring-boot-angular/src/main/js/ecommerce/src/tslint.json diff --git a/spring-boot-angular-ecommerce/src/main/frontend/tsconfig.json b/spring-boot-angular/src/main/js/ecommerce/tsconfig.json similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/tsconfig.json rename to spring-boot-angular/src/main/js/ecommerce/tsconfig.json diff --git a/spring-boot-angular-ecommerce/src/main/frontend/tslint.json b/spring-boot-angular/src/main/js/ecommerce/tslint.json similarity index 100% rename from spring-boot-angular-ecommerce/src/main/frontend/tslint.json rename to spring-boot-angular/src/main/js/ecommerce/tslint.json diff --git a/spring-boot-angular-ecommerce/src/main/resources/application.properties b/spring-boot-angular/src/main/resources/application.properties similarity index 100% rename from spring-boot-angular-ecommerce/src/main/resources/application.properties rename to spring-boot-angular/src/main/resources/application.properties diff --git a/spring-boot-angular/src/main/resources/logback.xml b/spring-boot-angular/src/main/resources/logback.xml new file mode 100644 index 0000000000..7d900d8ea8 --- /dev/null +++ b/spring-boot-angular/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file diff --git a/spring-boot-angular-ecommerce/src/test/java/com/baeldung/ecommerce/EcommerceApplicationIntegrationTest.java b/spring-boot-angular/src/test/java/com/baeldung/ecommerce/EcommerceApplicationIntegrationTest.java similarity index 100% rename from spring-boot-angular-ecommerce/src/test/java/com/baeldung/ecommerce/EcommerceApplicationIntegrationTest.java rename to spring-boot-angular/src/test/java/com/baeldung/ecommerce/EcommerceApplicationIntegrationTest.java diff --git a/spring-boot-angular-ecommerce/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-boot-angular/src/test/java/org/baeldung/SpringContextIntegrationTest.java similarity index 100% rename from spring-boot-angular-ecommerce/src/test/java/org/baeldung/SpringContextIntegrationTest.java rename to spring-boot-angular/src/test/java/org/baeldung/SpringContextIntegrationTest.java diff --git a/spring-boot-angular-ecommerce/src/test/java/org/baeldung/SpringContextTest.java b/spring-boot-angular/src/test/java/org/baeldung/SpringContextTest.java similarity index 100% rename from spring-boot-angular-ecommerce/src/test/java/org/baeldung/SpringContextTest.java rename to spring-boot-angular/src/test/java/org/baeldung/SpringContextTest.java diff --git a/spring-boot-autoconfiguration/README.MD b/spring-boot-autoconfiguration/README.md similarity index 75% rename from spring-boot-autoconfiguration/README.MD rename to spring-boot-autoconfiguration/README.md index dc9cad539a..920c378139 100644 --- a/spring-boot-autoconfiguration/README.MD +++ b/spring-boot-autoconfiguration/README.md @@ -1,3 +1,7 @@ +## Spring Boot Auto Configuration + +This module contains articles about Spring Boot Auto Configuration + ### The Course The "REST With Spring" Classes: http://bit.ly/restwithspring diff --git a/spring-boot-bootstrap/README.md b/spring-boot-bootstrap/README.md index 6a88f25bd7..82ec384c86 100644 --- a/spring-boot-bootstrap/README.md +++ b/spring-boot-bootstrap/README.md @@ -1,3 +1,7 @@ +## Spring Boot Bootstrap + +This module contains articles about bootstrapping Spring Boot applications. + ### Relevant Articles: - [Spring Boot Tutorial – Bootstrap a Simple Application](http://www.baeldung.com/spring-boot-start) - [Thin JARs with Spring Boot](http://www.baeldung.com/spring-boot-thin-jar) diff --git a/spring-boot-camel/README.md b/spring-boot-camel/README.md index 0e85db4a7f..194b7ea9c7 100644 --- a/spring-boot-camel/README.md +++ b/spring-boot-camel/README.md @@ -1,18 +1,26 @@ -Example for the Article on Camel API with SpringBoot +## Spring Boot Camel -to start up, run: - mvn spring-boot:run +This module contains articles about Spring Boot with Apache Camel + +### Example for the Article on Camel API with SpringBoot + +To start, run: + +`mvn spring-boot:run` -them, do a POST http request to: - http://localhost:8080/camel/api/bean +Then, make a POST http request to: -with the HEADER: Content-Type: application/json, +`http://localhost:8080/camel/api/bean` -and a BODY Payload like {"id": 1,"name": "World"} +Include the HEADER: Content-Type: application/json, -and we will get a return code of 201 and the response: Hello, World - if the transform() method from Application class is uncommented and the process() method is commented +and a BODY Payload like: -or return code of 201 and the response: {"id": 10,"name": "Hello, World"} - if the transform() method from Application class is commented and the process() method is uncommented +`{"id": 1,"name": "World"}` + +We will get a return code of 201 and the response: `Hello, World` - if the transform() method from Application class is uncommented and the process() method is commented + +or return code of 201 and the response: `{"id": 10,"name": "Hello, World"}` - if the transform() method from Application class is commented and the process() method is uncommented ## Relevant articles: diff --git a/spring-boot-cli/README.md b/spring-boot-cli/README.md index 85323da9b4..8c8a0c99c1 100644 --- a/spring-boot-cli/README.md +++ b/spring-boot-cli/README.md @@ -1,6 +1,6 @@ -========= - ## Spring Boot CLI +This module contains articles about Spring Boot CLI + ### Relevant Articles: - [Introduction to Spring Boot CLI](http://www.baeldung.com/spring-boot-cli) diff --git a/spring-boot-client/README.MD b/spring-boot-client/README.MD index 8db48089a5..c8b9e1cd6e 100644 --- a/spring-boot-client/README.MD +++ b/spring-boot-client/README.MD @@ -1,3 +1,7 @@ +## Spring Boot Client + +This module contains articles about Spring Boot Clients + ### The Course The "REST With Spring" Classes: http://bit.ly/restwithspring diff --git a/spring-boot-crud/README.md b/spring-boot-crud/README.md index ab2cbe1e3a..6b0032deb3 100644 --- a/spring-boot-crud/README.md +++ b/spring-boot-crud/README.md @@ -1,3 +1,7 @@ +## Spring boot CRUD + +This module contains articles about Spring Boot CRUD Operations + ### Relevant Articles: - [Spring Boot CRUD Application with Thymeleaf](https://www.baeldung.com/spring-boot-crud-thymeleaf) - [Using a Spring Boot Application as a Dependency](https://www.baeldung.com/spring-boot-dependency) diff --git a/spring-boot-ctx-fluent/README.md b/spring-boot-ctx-fluent/README.md index 0b4b9c1271..646ad0f7d1 100644 --- a/spring-boot-ctx-fluent/README.md +++ b/spring-boot-ctx-fluent/README.md @@ -1,3 +1,6 @@ +## Spring Boot Context Fluent + +This module contains articles about Spring Boot Fluent Builder ### Relevant Articles: diff --git a/spring-boot-custom-starter/README.md b/spring-boot-custom-starter/README.md index f983441ca0..9a62884ecb 100644 --- a/spring-boot-custom-starter/README.md +++ b/spring-boot-custom-starter/README.md @@ -1,3 +1,7 @@ +## Spring Boot Custom Starter + +This module contains articles about writing Spring Boot [starters](https://www.baeldung.com/spring-boot-starters). + ### Relevant Articles: - [Creating a Custom Starter with Spring Boot](http://www.baeldung.com/spring-boot-custom-starter) diff --git a/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml b/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml index 1e4ee698c6..74e786be99 100644 --- a/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml +++ b/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml @@ -44,7 +44,7 @@ org.springframework.boot spring-boot-starter-test - 1.5.10.RELEASE + ${spring-boot.version} test diff --git a/spring-boot-data/pom.xml b/spring-boot-data/pom.xml index 9c11e09f4a..dc33d9f6ae 100644 --- a/spring-boot-data/pom.xml +++ b/spring-boot-data/pom.xml @@ -6,44 +6,39 @@ war spring-boot-data Spring Boot Data Module - parent-boot-2 com.baeldung 0.0.1-SNAPSHOT ../parent-boot-2 - org.springframework.boot spring-boot-starter-data-redis - 2.1.6.RELEASE - + + org.javers + javers-spring-boot-starter-sql + ${javers.version} + org.springframework.boot spring-boot-starter-data-mongodb - 2.1.6.RELEASE - org.springframework.boot spring-boot-starter-data-jpa - 2.1.6.RELEASE - com.h2database h2 - 1.4.197 + ${h2.version} - org.springframework.boot spring-boot-starter-web - org.springframework.boot spring-boot-starter-tomcat @@ -54,8 +49,8 @@ spring-boot-starter-test test - + spring-boot @@ -98,6 +93,14 @@ + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + @@ -106,6 +109,22 @@ autoconfiguration + + org.springframework.boot + spring-boot-maven-plugin + + com.baeldung.javers.SpringBootJaVersApplication + JAR + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + org.apache.maven.plugins maven-surefire-plugin @@ -133,14 +152,21 @@ + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + - com.baeldung.SpringBootDataApplication + 5.6.3 2.2.4 - diff --git a/spring-boot-data/src/main/java/com/baeldung/javers/SpringBootJaVersApplication.java b/spring-boot-data/src/main/java/com/baeldung/javers/SpringBootJaVersApplication.java new file mode 100644 index 0000000000..91c9b11af5 --- /dev/null +++ b/spring-boot-data/src/main/java/com/baeldung/javers/SpringBootJaVersApplication.java @@ -0,0 +1,31 @@ +package com.baeldung.javers; + +import com.baeldung.javers.domain.Address; +import com.baeldung.javers.domain.Product; +import com.baeldung.javers.domain.Store; +import com.baeldung.javers.repo.StoreRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; + +@SpringBootApplication +public class SpringBootJaVersApplication { + @Autowired + StoreRepository storeRepository; + + public static void main(String[] args) { + SpringApplication.run(SpringBootJaVersApplication.class, args); + } + + @EventListener + public void appReady(ApplicationReadyEvent event) { + Store store = new Store("Baeldung store", new Address("Some street", 22222)); + for (int i = 1; i < 3; i++) { + Product product = new Product("Product #" + i, 100 * i); + store.addProduct(product); + } + storeRepository.save(store); + } +} diff --git a/spring-boot-data/src/main/java/com/baeldung/javers/config/JaversConfiguration.java b/spring-boot-data/src/main/java/com/baeldung/javers/config/JaversConfiguration.java new file mode 100644 index 0000000000..b230dcec1d --- /dev/null +++ b/spring-boot-data/src/main/java/com/baeldung/javers/config/JaversConfiguration.java @@ -0,0 +1,20 @@ +package com.baeldung.javers.config; + +import org.javers.spring.auditable.AuthorProvider; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class JaversConfiguration { + @Bean + public AuthorProvider provideJaversAuthor() { + return new SimpleAuthorProvider(); + } + + private static class SimpleAuthorProvider implements AuthorProvider { + @Override + public String provide() { + return "Baeldung Author"; + } + } +} diff --git a/spring-boot-data/src/main/java/com/baeldung/javers/domain/Address.java b/spring-boot-data/src/main/java/com/baeldung/javers/domain/Address.java new file mode 100644 index 0000000000..930276b3ee --- /dev/null +++ b/spring-boot-data/src/main/java/com/baeldung/javers/domain/Address.java @@ -0,0 +1,33 @@ +package com.baeldung.javers.domain; + +import javax.persistence.Embeddable; + +@Embeddable +public class Address { + private String address; + private Integer zipCode; + + public Address(String address, Integer zipCode) { + this.address = address; + this.zipCode = zipCode; + } + + public Address() { + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public Integer getZipCode() { + return zipCode; + } + + public void setZipCode(Integer zipCode) { + this.zipCode = zipCode; + } +} diff --git a/spring-boot-data/src/main/java/com/baeldung/javers/domain/Product.java b/spring-boot-data/src/main/java/com/baeldung/javers/domain/Product.java new file mode 100644 index 0000000000..61a2993bb9 --- /dev/null +++ b/spring-boot-data/src/main/java/com/baeldung/javers/domain/Product.java @@ -0,0 +1,61 @@ +package com.baeldung.javers.domain; + +import javax.persistence.*; + +@Entity +public class Product { + @Id + @GeneratedValue + private int id; + + private String name; + private double price; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "store_id") + private Store store; + + public Product(String name, double price) { + this.name = name; + this.price = price; + } + + public Product() { + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public double getPrice() { + return price; + } + + public void setPrice(double price) { + this.price = price; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public Store getStore() { + return store; + } + + public void setStore(Store store) { + this.store = store; + } + + public void setNamePrefix(String prefix) { + this.name = prefix + this.name; + } +} diff --git a/spring-boot-data/src/main/java/com/baeldung/javers/domain/Store.java b/spring-boot-data/src/main/java/com/baeldung/javers/domain/Store.java new file mode 100644 index 0000000000..5aa6686261 --- /dev/null +++ b/spring-boot-data/src/main/java/com/baeldung/javers/domain/Store.java @@ -0,0 +1,62 @@ +package com.baeldung.javers.domain; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; + +@Entity +public class Store { + @Id + @GeneratedValue + private int id; + private String name; + @Embedded + private Address address; + @OneToMany( + mappedBy = "store", + cascade = CascadeType.ALL, + orphanRemoval = true + ) + private List products = new ArrayList<>(); + + public Store(String name, Address address) { + this.name = name; + this.address = address; + } + + public Store() { + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Address getAddress() { + return address; + } + + public void setAddress(Address address) { + this.address = address; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public void addProduct(Product product) { + product.setStore(this); + this.products.add(product); + } + + public List getProducts() { + return this.products; + } +} diff --git a/spring-boot-data/src/main/java/com/baeldung/javers/repo/ProductRepository.java b/spring-boot-data/src/main/java/com/baeldung/javers/repo/ProductRepository.java new file mode 100644 index 0000000000..090ebe6742 --- /dev/null +++ b/spring-boot-data/src/main/java/com/baeldung/javers/repo/ProductRepository.java @@ -0,0 +1,11 @@ +package com.baeldung.javers.repo; + +import com.baeldung.javers.domain.Product; +import org.javers.spring.annotation.JaversAuditable; +import org.springframework.data.repository.CrudRepository; + +public interface ProductRepository extends CrudRepository { + @Override + @JaversAuditable + S save(S s); +} diff --git a/spring-boot-data/src/main/java/com/baeldung/javers/repo/StoreRepository.java b/spring-boot-data/src/main/java/com/baeldung/javers/repo/StoreRepository.java new file mode 100644 index 0000000000..aa9d07c4c8 --- /dev/null +++ b/spring-boot-data/src/main/java/com/baeldung/javers/repo/StoreRepository.java @@ -0,0 +1,9 @@ +package com.baeldung.javers.repo; + +import com.baeldung.javers.domain.Store; +import org.javers.spring.annotation.JaversSpringDataAuditable; +import org.springframework.data.repository.CrudRepository; + +@JaversSpringDataAuditable +public interface StoreRepository extends CrudRepository { +} diff --git a/spring-boot-data/src/main/java/com/baeldung/javers/service/StoreService.java b/spring-boot-data/src/main/java/com/baeldung/javers/service/StoreService.java new file mode 100644 index 0000000000..2977f715cb --- /dev/null +++ b/spring-boot-data/src/main/java/com/baeldung/javers/service/StoreService.java @@ -0,0 +1,59 @@ +package com.baeldung.javers.service; + + +import com.baeldung.javers.domain.Product; +import com.baeldung.javers.domain.Store; +import com.baeldung.javers.repo.ProductRepository; +import com.baeldung.javers.repo.StoreRepository; +import org.springframework.stereotype.Service; + +import java.util.Optional; +import java.util.Random; + +@Service +public class StoreService { + private final ProductRepository productRepository; + private final StoreRepository storeRepository; + + public StoreService(ProductRepository productRepository, StoreRepository storeRepository) { + this.productRepository = productRepository; + this.storeRepository = storeRepository; + } + + public void updateProductPrice(Integer productId, Double price) { + Optional productOpt = productRepository.findById(productId); + productOpt.ifPresent(product -> { + product.setPrice(price); + productRepository.save(product); + }); + } + + public void rebrandStore(int storeId, String updatedName) { + Optional storeOpt = storeRepository.findById(storeId); + storeOpt.ifPresent(store -> { + store.setName(updatedName); + store.getProducts().forEach(product -> { + product.setNamePrefix(updatedName); + }); + storeRepository.save(store); + }); + } + + public void createRandomProduct(Integer storeId) { + Optional storeOpt = this.storeRepository.findById(storeId); + storeOpt.ifPresent(store -> { + Random random = new Random(); + Product product = new Product("Product#" + random.nextInt(), random.nextDouble() * 100); + store.addProduct(product); + storeRepository.save(store); + }); + } + + public Store findStoreById(int storeId) { + return storeRepository.findById(storeId).get(); + } + + public Product findProductById(int id) { + return this.productRepository.findById(id).get(); + } +} diff --git a/spring-boot-data/src/main/java/com/baeldung/javers/web/RebrandStoreDto.java b/spring-boot-data/src/main/java/com/baeldung/javers/web/RebrandStoreDto.java new file mode 100644 index 0000000000..c9681add40 --- /dev/null +++ b/spring-boot-data/src/main/java/com/baeldung/javers/web/RebrandStoreDto.java @@ -0,0 +1,5 @@ +package com.baeldung.javers.web; + +public class RebrandStoreDto { + public String name; +} diff --git a/spring-boot-data/src/main/java/com/baeldung/javers/web/StoreController.java b/spring-boot-data/src/main/java/com/baeldung/javers/web/StoreController.java new file mode 100644 index 0000000000..89c3c03a11 --- /dev/null +++ b/spring-boot-data/src/main/java/com/baeldung/javers/web/StoreController.java @@ -0,0 +1,73 @@ +package com.baeldung.javers.web; + +import com.baeldung.javers.domain.Product; +import com.baeldung.javers.domain.Store; +import com.baeldung.javers.service.StoreService; +import org.javers.core.Changes; +import org.javers.core.Javers; +import org.javers.core.metamodel.object.CdoSnapshot; +import org.javers.repository.jql.JqlQuery; +import org.javers.repository.jql.QueryBuilder; +import org.javers.shadow.Shadow; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +public class StoreController { + private final StoreService storeService; + private final Javers javers; + + public StoreController(StoreService customerService, Javers javers) { + this.storeService = customerService; + this.javers = javers; + } + + @PostMapping("/stores/{storeId}/products/random") + public void createRandomProduct(@PathVariable final Integer storeId) { + storeService.createRandomProduct(storeId); + } + + @PostMapping("/stores/{storeId}/rebrand") + public void rebrandStore(@PathVariable final Integer storeId, @RequestBody RebrandStoreDto rebrandStoreDto) { + storeService.rebrandStore(storeId, rebrandStoreDto.name); + } + + @PostMapping(value = "/stores/{storeId}/products/{productId}/price", consumes = MediaType.APPLICATION_JSON_VALUE) + public void updateProductPrice(@PathVariable final Integer productId, @PathVariable String storeId, @RequestBody UpdatePriceDto priceDto) { + storeService.updateProductPrice(productId, priceDto.price); + } + + @GetMapping("/products/{productId}/changes") + public String getProductChanges(@PathVariable int productId) { + Product product = storeService.findProductById(productId); + QueryBuilder jqlQuery = QueryBuilder.byInstance(product); + Changes changes = javers.findChanges(jqlQuery.build()); + return javers.getJsonConverter().toJson(changes); + } + + @GetMapping("/products/snapshots") + public String getProductSnapshots() { + QueryBuilder jqlQuery = QueryBuilder.byClass(Product.class); + List snapshots = javers.findSnapshots(jqlQuery.build()); + return javers.getJsonConverter().toJson(snapshots); + } + + @GetMapping("/stores/{storeId}/shadows") + public String getStoreShadows(@PathVariable int storeId) { + Store store = storeService.findStoreById(storeId); + JqlQuery jqlQuery = QueryBuilder.byInstance(store) + .withChildValueObjects().build(); + List> shadows = javers.findShadows(jqlQuery); + return javers.getJsonConverter().toJson(shadows.get(0)); + } + + @GetMapping("/stores/snapshots") + public String getStoresSnapshots() { + QueryBuilder jqlQuery = QueryBuilder.byClass(Store.class); + List snapshots = javers.findSnapshots(jqlQuery.build()); + return javers.getJsonConverter().toJson(snapshots); + } + +} diff --git a/spring-boot-data/src/main/java/com/baeldung/javers/web/UpdatePriceDto.java b/spring-boot-data/src/main/java/com/baeldung/javers/web/UpdatePriceDto.java new file mode 100644 index 0000000000..02808a8134 --- /dev/null +++ b/spring-boot-data/src/main/java/com/baeldung/javers/web/UpdatePriceDto.java @@ -0,0 +1,5 @@ +package com.baeldung.javers.web; + +public class UpdatePriceDto { + public double price; +} diff --git a/spring-boot-data/src/main/resources/application.properties b/spring-boot-data/src/main/resources/application.properties index 845b783634..6378a48506 100644 --- a/spring-boot-data/src/main/resources/application.properties +++ b/spring-boot-data/src/main/resources/application.properties @@ -1,2 +1,25 @@ spring.jackson.date-format=yyyy-MM-dd HH:mm:ss -spring.jackson.time-zone=Europe/Zagreb \ No newline at end of file +spring.jackson.time-zone=Europe/Zagreb +spring.h2.console.path=/h2 +spring.h2.console.enabled=true +spring.datasource.url=jdbc:h2:mem:testdb +spring.datasource.driver-class-name=org.h2.Driver +spring.datasource.username=sa +spring.datasource.password= +spring.main.allow-bean-definition-overriding=true +javers.mappingStyle=FIELD +javers.algorithm=SIMPLE +javers.commitIdGenerator=synchronized_sequence +javers.prettyPrint=true +javers.typeSafeValues=false +javers.newObjectSnapshot=true +javers.packagesToScan= +javers.auditableAspectEnabled=true +javers.springDataAuditableRepositoryAspectEnabled=true +javers.sqlSchema= +javers.sqlSchemaManagementEnabled=true +javers.prettyPrintDateFormats.localDateTime=dd MMM yyyy, HH:mm:ss +javers.prettyPrintDateFormats.zonedDateTime=dd MMM yyyy, HH:mm:ssZ +javers.prettyPrintDateFormats.localDate=dd MMM yyyy +javers.prettyPrintDateFormats.localTime=HH:mm:ss + diff --git a/spring-boot-di/README.MD b/spring-boot-di/README.MD index 78cd163668..6e2c495b88 100644 --- a/spring-boot-di/README.MD +++ b/spring-boot-di/README.MD @@ -1,3 +1,7 @@ +## Spring Boot Dependency Inject + +This module contains articles about dependency injection with Spring Boot + ### The Course The "REST With Spring" Classes: http://bit.ly/restwithspring diff --git a/spring-boot-di/pom.xml b/spring-boot-di/pom.xml index b07d7c6385..c0faf44335 100644 --- a/spring-boot-di/pom.xml +++ b/spring-boot-di/pom.xml @@ -1,55 +1,59 @@ - 4.0.0 - spring-boot-di - spring-boot-di - jar - Module For Spring Boot DI + 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 + spring-boot-di + spring-boot-di + jar + Module For Spring Boot DI - - parent-boot-2 - com.baeldung - 0.0.1-SNAPSHOT - ../parent-boot-2 - + + parent-boot-2 + com.baeldung + 0.0.1-SNAPSHOT + ../parent-boot-2 + - + + + org.aspectj + aspectjweaver + - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-tomcat - provided - + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-tomcat + provided + - - org.apache.tomcat.embed - tomcat-embed-jasper - provided - + + org.apache.tomcat.embed + tomcat-embed-jasper + provided + - + - - - - org.springframework.boot - spring-boot-maven-plugin - - com.baeldung.SpringBootDiApplication - JAR - - - - + + + + org.springframework.boot + spring-boot-maven-plugin + + com.baeldung.SpringBootDiApplication + JAR + + + + - - com.baeldung.SpringBootDiApplication - + + com.baeldung.SpringBootDiApplication + diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/annotation/Animal.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/annotation/Animal.java new file mode 100644 index 0000000000..73bd0e3673 --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/annotation/Animal.java @@ -0,0 +1,10 @@ +package com.baeldung.componentscan.filter.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface Animal { } diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/annotation/ComponentScanAnnotationFilterApp.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/annotation/ComponentScanAnnotationFilterApp.java new file mode 100644 index 0000000000..7e89870d4b --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/annotation/ComponentScanAnnotationFilterApp.java @@ -0,0 +1,21 @@ +package com.baeldung.componentscan.filter.annotation; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.FilterType; + +import java.util.Arrays; + +@Configuration +@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Animal.class)) +public class ComponentScanAnnotationFilterApp { + private static ApplicationContext applicationContext; + + public static void main(String[] args) { + applicationContext = new AnnotationConfigApplicationContext(ComponentScanAnnotationFilterApp.class); + Arrays.stream(applicationContext.getBeanDefinitionNames()) + .forEach(System.out::println); + } +} diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/annotation/Elephant.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/annotation/Elephant.java new file mode 100644 index 0000000000..8ad8111d6b --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/annotation/Elephant.java @@ -0,0 +1,4 @@ +package com.baeldung.componentscan.filter.annotation; + +@Animal +public class Elephant { } diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/Cat.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/Cat.java new file mode 100644 index 0000000000..b34a2d7112 --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/Cat.java @@ -0,0 +1,3 @@ +package com.baeldung.componentscan.filter.aspectj; + +public class Cat { } diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/ComponentScanCustomFilterApp.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/ComponentScanCustomFilterApp.java new file mode 100644 index 0000000000..3674c09531 --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/ComponentScanCustomFilterApp.java @@ -0,0 +1,24 @@ +package com.baeldung.componentscan.filter.aspectj; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.FilterType; + +import java.util.Arrays; + +@Configuration +@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.ASPECTJ, + pattern = "com.baeldung.componentscan.filter.aspectj.* " + + "&& !(com.baeldung.componentscan.filter.aspectj.L* " + + "|| com.baeldung.componentscan.filter.aspectj.E*)")) +public class ComponentScanCustomFilterApp { + private static ApplicationContext applicationContext; + + public static void main(String[] args) { + applicationContext = new AnnotationConfigApplicationContext(ComponentScanCustomFilterApp.class); + Arrays.stream(applicationContext.getBeanDefinitionNames()) + .forEach(System.out::println); + } +} diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/Elephant.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/Elephant.java new file mode 100644 index 0000000000..30abc9dcd4 --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/Elephant.java @@ -0,0 +1,3 @@ +package com.baeldung.componentscan.filter.aspectj; + +public class Elephant { } diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/Loin.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/Loin.java new file mode 100644 index 0000000000..cf442e981e --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/Loin.java @@ -0,0 +1,3 @@ +package com.baeldung.componentscan.filter.aspectj; + +public class Loin { } diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/assignable/Animal.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/assignable/Animal.java new file mode 100644 index 0000000000..77cf2e72f0 --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/assignable/Animal.java @@ -0,0 +1,3 @@ +package com.baeldung.componentscan.filter.assignable; + +public interface Animal { } diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/assignable/Cat.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/assignable/Cat.java new file mode 100644 index 0000000000..262ae154f8 --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/assignable/Cat.java @@ -0,0 +1,3 @@ +package com.baeldung.componentscan.filter.assignable; + +public class Cat implements Animal { } diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/assignable/ComponentScanAssignableTypeFilterApp.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/assignable/ComponentScanAssignableTypeFilterApp.java new file mode 100644 index 0000000000..a5fa2b0942 --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/assignable/ComponentScanAssignableTypeFilterApp.java @@ -0,0 +1,21 @@ +package com.baeldung.componentscan.filter.assignable; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.FilterType; + +import java.util.Arrays; + +@Configuration +@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = Animal.class)) +public class ComponentScanAssignableTypeFilterApp { + private static ApplicationContext applicationContext; + + public static void main(String[] args) { + applicationContext = new AnnotationConfigApplicationContext(ComponentScanAssignableTypeFilterApp.class); + Arrays.stream(applicationContext.getBeanDefinitionNames()) + .forEach(System.out::println); + } +} diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/assignable/Elephant.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/assignable/Elephant.java new file mode 100644 index 0000000000..815e0d762a --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/assignable/Elephant.java @@ -0,0 +1,3 @@ +package com.baeldung.componentscan.filter.assignable; + +public class Elephant implements Animal { } diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Cat.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Cat.java new file mode 100644 index 0000000000..282d6bb641 --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Cat.java @@ -0,0 +1,3 @@ +package com.baeldung.componentscan.filter.custom; + +public class Cat extends Pet { } diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilter.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilter.java new file mode 100644 index 0000000000..ebaccf7838 --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilter.java @@ -0,0 +1,22 @@ +package com.baeldung.componentscan.filter.custom; + +import org.springframework.core.type.ClassMetadata; +import org.springframework.core.type.classreading.MetadataReader; +import org.springframework.core.type.classreading.MetadataReaderFactory; +import org.springframework.core.type.filter.TypeFilter; + +import java.io.IOException; + +public class ComponentScanCustomFilter implements TypeFilter { + + @Override + public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) + throws IOException { + ClassMetadata classMetadata = metadataReader.getClassMetadata(); + String superClass = classMetadata.getSuperClassName(); + if (Pet.class.getName().equalsIgnoreCase(superClass)) { + return true; + } + return false; + } +} diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilterApp.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilterApp.java new file mode 100644 index 0000000000..1a4f5dbf4e --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilterApp.java @@ -0,0 +1,21 @@ +package com.baeldung.componentscan.filter.custom; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.FilterType; + +import java.util.Arrays; + +@Configuration +@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.CUSTOM, classes = ComponentScanCustomFilter.class)) +public class ComponentScanCustomFilterApp { + private static ApplicationContext applicationContext; + + public static void main(String[] args) { + applicationContext = new AnnotationConfigApplicationContext(ComponentScanCustomFilterApp.class); + Arrays.stream(applicationContext.getBeanDefinitionNames()) + .forEach(System.out::println); + } +} diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Loin.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Loin.java new file mode 100644 index 0000000000..0e2f9e0692 --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Loin.java @@ -0,0 +1,3 @@ +package com.baeldung.componentscan.filter.custom; + +public class Loin { } diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Pet.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Pet.java new file mode 100644 index 0000000000..9b4497221d --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Pet.java @@ -0,0 +1,3 @@ +package com.baeldung.componentscan.filter.custom; + +public class Pet { } diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/Cat.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/Cat.java new file mode 100644 index 0000000000..87341cae9d --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/Cat.java @@ -0,0 +1,3 @@ +package com.baeldung.componentscan.filter.regex; + +public class Cat { } diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterApp.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterApp.java new file mode 100644 index 0000000000..36e94446b2 --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterApp.java @@ -0,0 +1,20 @@ +package com.baeldung.componentscan.filter.regex; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.FilterType; + +import java.util.Arrays; + +@Configuration +@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = ".*[t]")) +public class ComponentScanRegexFilterApp { + private static ApplicationContext applicationContext; + + public static void main(String[] args) { + applicationContext = new AnnotationConfigApplicationContext(ComponentScanRegexFilterApp.class); + Arrays.stream(applicationContext.getBeanDefinitionNames()).forEach(System.out::println); + } +} diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/Elephant.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/Elephant.java new file mode 100644 index 0000000000..314dca5b77 --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/Elephant.java @@ -0,0 +1,3 @@ +package com.baeldung.componentscan.filter.regex; + +public class Elephant { } diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/Loin.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/Loin.java new file mode 100644 index 0000000000..1b75fc1b43 --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/Loin.java @@ -0,0 +1,3 @@ +package com.baeldung.componentscan.filter.regex; + +public class Loin { } diff --git a/spring-boot-disable-console-logging/README.md b/spring-boot-disable-console-logging/README.md index 3d75fddc8e..7f1c06042f 100644 --- a/spring-boot-disable-console-logging/README.md +++ b/spring-boot-disable-console-logging/README.md @@ -1,2 +1,6 @@ +## Spring Boot Disable Console Logging + +This module contains articles about disabling Spring Boot console logging. + ### Relevant Articles: - [How to Disable Console Logging in Spring Boot](https://www.baeldung.com/spring-boot-disable-console-logging) diff --git a/spring-boot-flowable/README.md b/spring-boot-flowable/README.md index 8fb90d953b..884ddb7ec6 100644 --- a/spring-boot-flowable/README.md +++ b/spring-boot-flowable/README.md @@ -1,3 +1,7 @@ +## Spring Boot Flowable + +This module contains articles about Flowable in Boot applications + ### Relevant articles - [Introduction to Flowable](http://www.baeldung.com/flowable) diff --git a/spring-boot-gradle/README.md b/spring-boot-gradle/README.md index 76b82dce02..3a64cca553 100644 --- a/spring-boot-gradle/README.md +++ b/spring-boot-gradle/README.md @@ -1,3 +1,7 @@ +## Spring Boot Gradle + +This module contains articles about Gradle in Spring Boot projects. + ### Relevant Articles: - [Spring Boot: Configuring a Main Class](http://www.baeldung.com/spring-boot-main-class) diff --git a/spring-boot-jasypt/README.md b/spring-boot-jasypt/README.md index 5df2a4a6e5..a07ca19790 100644 --- a/spring-boot-jasypt/README.md +++ b/spring-boot-jasypt/README.md @@ -1,3 +1,6 @@ +## Spring Boot Jasypt + +This module contains articles about Jasypt in Spring Boot projects. ### Relevant Articles: diff --git a/spring-boot-keycloak/README.md b/spring-boot-keycloak/README.md index cfe82c6cf7..15f0f1459c 100644 --- a/spring-boot-keycloak/README.md +++ b/spring-boot-keycloak/README.md @@ -1,2 +1,6 @@ +## Spring Boot Keycloak + +This module contains articles about Keycloak in Spring Boot projects. + ## Relevant articles: - [A Quick Guide to Using Keycloak with Spring Boot](http://www.baeldung.com/spring-boot-keycloak) diff --git a/spring-boot-kotlin/README.md b/spring-boot-kotlin/README.md index dc50c24aa0..73c312040d 100644 --- a/spring-boot-kotlin/README.md +++ b/spring-boot-kotlin/README.md @@ -1,2 +1,6 @@ +## Spring Boot Kotlin + +This module contains articles about Kotlin in Spring Boot projects. + ### Relevant Articles: - [Non-blocking Spring Boot with Kotlin Coroutines](http://www.baeldung.com/non-blocking-spring-boot-with-kotlin-coroutines) diff --git a/spring-boot-kotlin/src/main/kotlin/com/baeldung/nonblockingcoroutines/controller/ProductControllerCoroutines.kt b/spring-boot-kotlin/src/main/kotlin/com/baeldung/nonblockingcoroutines/controller/ProductControllerCoroutines.kt index d70d352cda..363090abac 100644 --- a/spring-boot-kotlin/src/main/kotlin/com/baeldung/nonblockingcoroutines/controller/ProductControllerCoroutines.kt +++ b/spring-boot-kotlin/src/main/kotlin/com/baeldung/nonblockingcoroutines/controller/ProductControllerCoroutines.kt @@ -5,6 +5,8 @@ import com.baeldung.nonblockingcoroutines.repository.ProductRepositoryCoroutines import kotlinx.coroutines.Deferred import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.CoroutineStart +import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.async import kotlinx.coroutines.flow.Flow import org.springframework.beans.factory.annotation.Autowired @@ -28,17 +30,17 @@ class ProductControllerCoroutines { } @GetMapping("/{id}/stock") - suspend fun findOneInStock(@PathVariable id: Int): ProductStockView { - val product: Deferred = GlobalScope.async { + suspend fun findOneInStock(@PathVariable id: Int): ProductStockView = coroutineScope { + val product: Deferred = async(start = CoroutineStart.LAZY) { productRepository.getProductById(id) } - val quantity: Deferred = GlobalScope.async { + val quantity: Deferred = async(start = CoroutineStart.LAZY) { webClient.get() .uri("/stock-service/product/$id/quantity") .accept(APPLICATION_JSON) .awaitExchange().awaitBody() } - return ProductStockView(product.await()!!, quantity.await()) + ProductStockView(product.await()!!, quantity.await()) } @FlowPreview diff --git a/spring-boot-logging-log4j2/README.md b/spring-boot-logging-log4j2/README.md index ea968d7fae..2d72ab6f97 100644 --- a/spring-boot-logging-log4j2/README.md +++ b/spring-boot-logging-log4j2/README.md @@ -1,3 +1,7 @@ +## Spring Boot Logging with Log4j 2 + +This module contains articles about logging in Spring Boot projects with Log4j 2. + ### Relevant Articles: - [Logging in Spring Boot](http://www.baeldung.com/spring-boot-logging) - [Logging to Graylog with Spring Boot](https://www.baeldung.com/graylog-with-spring-boot) diff --git a/spring-boot-logging-log4j2/pom.xml b/spring-boot-logging-log4j2/pom.xml index 64696969ca..8e4bf60f91 100644 --- a/spring-boot-logging-log4j2/pom.xml +++ b/spring-boot-logging-log4j2/pom.xml @@ -37,7 +37,7 @@ org.projectlombok lombok - 1.18.4 + ${lombok.version} provided @@ -79,5 +79,6 @@ com.baeldung.springbootlogging.SpringBootLoggingApplication 1.3.8.RELEASE 1.1.16 + 1.18.4 diff --git a/spring-boot-management/README.md b/spring-boot-management/README.md new file mode 100644 index 0000000000..53d4c439ff --- /dev/null +++ b/spring-boot-management/README.md @@ -0,0 +1,7 @@ +## Spring Boot Logging HTTP Requests + +This module contains articles about the management of Spring Boot applications. + +### Relevant Articles: +- [Logging HTTP Requests with Spring Boot Actuator HTTP Tracing](https://www.baeldung.com/spring-boot-actuator-http) + diff --git a/spring-boot-management/pom.xml b/spring-boot-management/pom.xml index 2b3e8f5d06..ca483d2f61 100644 --- a/spring-boot-management/pom.xml +++ b/spring-boot-management/pom.xml @@ -1,47 +1,56 @@ - - 4.0.0 - - com.baeldung - parent-boot-2 - 0.0.1-SNAPSHOT - ../parent-boot-2 - - com.baeldung - spring-boot-management - 0.0.1-SNAPSHOT - spring-boot-management + + 4.0.0 + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../parent-boot-2 + + com.baeldung + spring-boot-management + 0.0.1-SNAPSHOT + spring-boot-management - - 1.8 - + + com.baeldung.spring.boot.management.logging.LoggingApplication + 1.8 + 2.1.6 + - - - org.springframework.boot - spring-boot-starter-actuator - - - org.springframework.boot - spring-boot-starter-web - + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-security + + + de.codecentric + spring-boot-admin-starter-client + ${spring-boot-admin-starter-client.version} + - - org.springframework.boot - spring-boot-starter-test - test - - + + org.springframework.boot + spring-boot-starter-test + test + + - - - - org.springframework.boot - spring-boot-maven-plugin - - - + + + + org.springframework.boot + spring-boot-maven-plugin + + + diff --git a/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/logging/LoggingApplication.java b/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/logging/LoggingApplication.java new file mode 100644 index 0000000000..6371ac4c64 --- /dev/null +++ b/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/logging/LoggingApplication.java @@ -0,0 +1,11 @@ +package com.baeldung.spring.boot.management.logging; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class LoggingApplication { + public static void main(String[] args) { + SpringApplication.run(LoggingApplication.class); + } +} diff --git a/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/logging/LoggingController.java b/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/logging/LoggingController.java new file mode 100644 index 0000000000..5bd15be10c --- /dev/null +++ b/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/logging/LoggingController.java @@ -0,0 +1,24 @@ +package com.baeldung.spring.boot.management.logging; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/log") +public class LoggingController { + private Log log = LogFactory.getLog(LoggingController.class); + + @GetMapping + public String log() { + log.trace("This is a TRACE level message"); + log.debug("This is a DEBUG level message"); + log.info("This is an INFO level message"); + log.warn("This is a WARN level message"); + log.error("This is an ERROR level message"); + + return "See the log for details"; + } +} diff --git a/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/logging/SecurityConfig.java b/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/logging/SecurityConfig.java new file mode 100644 index 0000000000..45cc1ebb33 --- /dev/null +++ b/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/logging/SecurityConfig.java @@ -0,0 +1,14 @@ +package com.baeldung.spring.boot.management.logging; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@Configuration +public class SecurityConfig extends WebSecurityConfigurerAdapter { + @Override + protected void configure(HttpSecurity http) throws Exception { + http.csrf() + .ignoringAntMatchers("/actuator/**"); + } +} diff --git a/spring-boot-management/src/main/resources/application.properties b/spring-boot-management/src/main/resources/application.properties index 835ca64eac..338251cf9b 100644 --- a/spring-boot-management/src/main/resources/application.properties +++ b/spring-boot-management/src/main/resources/application.properties @@ -1,3 +1,22 @@ -management.endpoints.web.exposure.include=httptrace +management.endpoints.web.exposure.include=httptrace,loggers,health,info,metrics management.trace.http.include=RESPONSE_HEADERS +management.endpoint.loggers.enabled=true + +#basic auth creddentials +spring.security.user.name=client +spring.security.user.password=client + +#configs to connect to a secured server +spring.boot.admin.client.url=http://localhost:8080 +spring.boot.admin.client.username=admin +spring.boot.admin.client.password=admin + +#configs to give secured server info +spring.boot.admin.client.instance.metadata.user.name=${spring.security.user.name} +spring.boot.admin.client.instance.metadata.user.password=${spring.security.user.password} + +#app config +spring.application.name=spring-boot-management +server.port=8081 + diff --git a/spring-boot-management/src/main/resources/logback.xml b/spring-boot-management/src/main/resources/logback.xml new file mode 100644 index 0000000000..36314cbeeb --- /dev/null +++ b/spring-boot-management/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + \ No newline at end of file diff --git a/spring-boot-mvc-2/README.md b/spring-boot-mvc-2/README.md index f8e26f218b..0ff0f1f156 100644 --- a/spring-boot-mvc-2/README.md +++ b/spring-boot-mvc-2/README.md @@ -1,3 +1,8 @@ +## Spring Boot MVC + +This module contains articles about Spring Web MVC in Spring Boot projects. + ### Relevant Articles: - [Functional Controllers in Spring MVC](https://www.baeldung.com/spring-mvc-functional-controllers) +- More articles: [[prev -->]](/spring-boot-mvc) diff --git a/spring-boot-mvc-birt/README.md b/spring-boot-mvc-birt/README.md index 9fe3d94e2a..2c3804c745 100644 --- a/spring-boot-mvc-birt/README.md +++ b/spring-boot-mvc-birt/README.md @@ -1,3 +1,7 @@ +## Spring Boot MVC BIRT + +This module contains articles about BIRT Reporting in Spring Boot MVC projects. + ### Relevant Articles - [BIRT Reporting with Spring Boot](https://www.baeldung.com/birt-reports-spring-boot) diff --git a/spring-boot-mvc-birt/pom.xml b/spring-boot-mvc-birt/pom.xml index bf6bbbf71d..3532b20c15 100644 --- a/spring-boot-mvc-birt/pom.xml +++ b/spring-boot-mvc-birt/pom.xml @@ -48,19 +48,19 @@ com.innoventsolutions.birt.runtime org.eclipse.birt.runtime_4.8.0-20180626 - 4.8.0 + ${eclipse.birt.runtime.version} log4j log4j - 1.2.17 + ${log4j.version} org.projectlombok lombok - 1.18.6 + ${lombok.version} provided @@ -80,6 +80,7 @@ com.baeldung.birt.engine.ReportEngineApplication 1.8 1.8 + 4.8.0 diff --git a/spring-boot-mvc/README.md b/spring-boot-mvc/README.md index e3e3dbdb74..444d91b0e7 100644 --- a/spring-boot-mvc/README.md +++ b/spring-boot-mvc/README.md @@ -1,3 +1,7 @@ +## Spring Boot MVC + +This module contains articles about Spring Web MVC in Spring Boot projects. + ### Relevant Articles: - [Guide to the Favicon in Spring Boot](http://www.baeldung.com/spring-boot-favicon) @@ -14,3 +18,4 @@ - [Accessing Spring MVC Model Objects in JavaScript](https://www.baeldung.com/spring-mvc-model-objects-js) - [Using Spring ResponseEntity to Manipulate the HTTP Response](http://www.baeldung.com/spring-response-entity) - [Spring Bean Annotations](http://www.baeldung.com/spring-bean-annotations) +- More articles: [[next -->]](/spring-boot-mvc-2) diff --git a/spring-boot-nashorn/README.md b/spring-boot-nashorn/README.md index 1ca43927ee..f24adfe8e8 100644 --- a/spring-boot-nashorn/README.md +++ b/spring-boot-nashorn/README.md @@ -1,3 +1,8 @@ -### Relevant Articles: -- []() +## Spring Boot Nashorn + +This module contains articles about Spring Boot with Nashorn + +### Relevant Articles: + +- [Isomorphic Application with React and Nashorn](https://www.baeldung.com/react-nashorn-isomorphic-app) diff --git a/spring-boot-ops-2/src/main/java/com/baeldung/gracefulshutdown/GracefulShutdownApplication.java b/spring-boot-ops-2/src/main/java/com/baeldung/gracefulshutdown/GracefulShutdownApplication.java new file mode 100644 index 0000000000..dd0d0f920c --- /dev/null +++ b/spring-boot-ops-2/src/main/java/com/baeldung/gracefulshutdown/GracefulShutdownApplication.java @@ -0,0 +1,12 @@ +package com.baeldung.gracefulshutdown; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class GracefulShutdownApplication { + + public static void main(String args[]) { + SpringApplication.run(GracefulShutdownApplication.class, args); + } +} diff --git a/spring-boot-ops-2/src/main/java/com/baeldung/gracefulshutdown/beans/LongRunningProcessBean.java b/spring-boot-ops-2/src/main/java/com/baeldung/gracefulshutdown/beans/LongRunningProcessBean.java new file mode 100644 index 0000000000..e21ddfe021 --- /dev/null +++ b/spring-boot-ops-2/src/main/java/com/baeldung/gracefulshutdown/beans/LongRunningProcessBean.java @@ -0,0 +1,36 @@ +package com.baeldung.gracefulshutdown.beans; + +import javax.annotation.PostConstruct; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.task.TaskExecutor; +import org.springframework.stereotype.Component; + +@Component +public class LongRunningProcessBean { + + private static final Logger LOG = LoggerFactory.getLogger(LongRunningProcessBean.class); + + @Autowired + private TaskExecutor taskExecutor; + + @PostConstruct + public void runTaskOnStartup() { + LOG.info("runTaskOnStartup entering"); + for (int i = 0; i < 3; i++) { + final int processNumber = i; + taskExecutor.execute(() -> { + try { + LOG.info("Long running process {} using threadpool started", processNumber); + Thread.sleep(60_000); + LOG.info("Long running process {} using threadpool completed", processNumber); + } catch (Exception e) { + LOG.error("Error while executing task", e); + } + }); + } + LOG.info("runTaskOnStartup exiting"); + } +} diff --git a/spring-boot-ops-2/src/main/java/com/baeldung/gracefulshutdown/config/SpringConfiguration.java b/spring-boot-ops-2/src/main/java/com/baeldung/gracefulshutdown/config/SpringConfiguration.java new file mode 100644 index 0000000000..b458f16206 --- /dev/null +++ b/spring-boot-ops-2/src/main/java/com/baeldung/gracefulshutdown/config/SpringConfiguration.java @@ -0,0 +1,32 @@ +package com.baeldung.gracefulshutdown.config; + +import javax.annotation.PreDestroy; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.task.TaskExecutor; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +@Configuration +public class SpringConfiguration { + + private static final Logger LOG = LoggerFactory.getLogger(SpringConfiguration.class); + + @Bean + public TaskExecutor taskExecutor() { + ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); + taskExecutor.setCorePoolSize(2); + taskExecutor.setMaxPoolSize(2); + taskExecutor.setWaitForTasksToCompleteOnShutdown(true); + taskExecutor.setAwaitTerminationSeconds(30); + taskExecutor.initialize(); + return taskExecutor; + } + + @PreDestroy + public void destroy() { + LOG.info("Shutdown initiated"); + } +} diff --git a/spring-boot-properties/extra.properties b/spring-boot-properties/extra.properties index 51874a0415..8e28a6f889 100644 --- a/spring-boot-properties/extra.properties +++ b/spring-boot-properties/extra.properties @@ -1 +1 @@ -application.theme.color=red \ No newline at end of file +application.theme.color=blue \ No newline at end of file diff --git a/spring-boot/README.MD b/spring-boot/README.MD index 04d76e438e..522a1f7120 100644 --- a/spring-boot/README.MD +++ b/spring-boot/README.MD @@ -1,3 +1,7 @@ +## Spring Boot + +This module contains articles about Spring Boot + ### The Course The "REST With Spring" Classes: http://bit.ly/restwithspring diff --git a/spring-boot/src/main/java/com/baeldung/validation/application/Application.java b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/Application.java similarity index 78% rename from spring-boot/src/main/java/com/baeldung/validation/application/Application.java rename to spring-boot/src/main/java/com/baeldung/beanvalidation/application/Application.java index af8f768193..b37eec9da0 100644 --- a/spring-boot/src/main/java/com/baeldung/validation/application/Application.java +++ b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/Application.java @@ -1,7 +1,8 @@ -package com.baeldung.validation.application; +package com.baeldung.beanvalidation.application; + +import com.baeldung.beanvalidation.application.entities.User; +import com.baeldung.beanvalidation.application.repositories.UserRepository; -import com.baeldung.validation.application.entities.User; -import com.baeldung.validation.application.repositories.UserRepository; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-boot/src/main/java/com/baeldung/validation/application/controllers/UserController.java b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/controllers/UserController.java similarity index 87% rename from spring-boot/src/main/java/com/baeldung/validation/application/controllers/UserController.java rename to spring-boot/src/main/java/com/baeldung/beanvalidation/application/controllers/UserController.java index a4aeefb70b..0c47e27e25 100644 --- a/spring-boot/src/main/java/com/baeldung/validation/application/controllers/UserController.java +++ b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/controllers/UserController.java @@ -1,7 +1,8 @@ -package com.baeldung.validation.application.controllers; +package com.baeldung.beanvalidation.application.controllers; + +import com.baeldung.beanvalidation.application.entities.User; +import com.baeldung.beanvalidation.application.repositories.UserRepository; -import com.baeldung.validation.application.entities.User; -import com.baeldung.validation.application.repositories.UserRepository; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/spring-boot/src/main/java/com/baeldung/validation/application/entities/User.java b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/entities/User.java similarity index 90% rename from spring-boot/src/main/java/com/baeldung/validation/application/entities/User.java rename to spring-boot/src/main/java/com/baeldung/beanvalidation/application/entities/User.java index 529368f132..8233d08f4e 100644 --- a/spring-boot/src/main/java/com/baeldung/validation/application/entities/User.java +++ b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/entities/User.java @@ -1,4 +1,4 @@ -package com.baeldung.validation.application.entities; +package com.baeldung.beanvalidation.application.entities; import javax.persistence.Entity; import javax.persistence.GeneratedValue; diff --git a/spring-boot/src/main/java/com/baeldung/validation/application/repositories/UserRepository.java b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/repositories/UserRepository.java similarity index 59% rename from spring-boot/src/main/java/com/baeldung/validation/application/repositories/UserRepository.java rename to spring-boot/src/main/java/com/baeldung/beanvalidation/application/repositories/UserRepository.java index b579addcaa..8bf7a9f8b2 100644 --- a/spring-boot/src/main/java/com/baeldung/validation/application/repositories/UserRepository.java +++ b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/repositories/UserRepository.java @@ -1,8 +1,9 @@ -package com.baeldung.validation.application.repositories; +package com.baeldung.beanvalidation.application.repositories; -import com.baeldung.validation.application.entities.User; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; +import com.baeldung.beanvalidation.application.entities.User; + @Repository public interface UserRepository extends CrudRepository {} diff --git a/spring-boot/src/test/java/com/baeldung/validation/application/UserControllerIntegrationTest.java b/spring-boot/src/test/java/com/baeldung/beanvalidation/application/UserControllerIntegrationTest.java similarity index 91% rename from spring-boot/src/test/java/com/baeldung/validation/application/UserControllerIntegrationTest.java rename to spring-boot/src/test/java/com/baeldung/beanvalidation/application/UserControllerIntegrationTest.java index 77a230ee6c..07d9b0807e 100644 --- a/spring-boot/src/test/java/com/baeldung/validation/application/UserControllerIntegrationTest.java +++ b/spring-boot/src/test/java/com/baeldung/beanvalidation/application/UserControllerIntegrationTest.java @@ -1,7 +1,8 @@ -package com.baeldung.validation.application; +package com.baeldung.beanvalidation.application; + +import com.baeldung.beanvalidation.application.controllers.UserController; +import com.baeldung.beanvalidation.application.repositories.UserRepository; -import com.baeldung.validation.application.controllers.UserController; -import com.baeldung.validation.application.repositories.UserRepository; import java.nio.charset.Charset; import static org.assertj.core.api.Assertions.assertThat; import org.hamcrest.core.Is; diff --git a/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextIntegrationTest.java deleted file mode 100644 index 28dbc9a8d8..0000000000 --- a/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.baeldung; - -import org.baeldung.spring.cloud.DataFlowShellApplication; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = DataFlowShellApplication.class) -public class SpringContextIntegrationTest { - - @Test - public void contextLoads() { - } - -} diff --git a/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextLiveTest.java index 5be4f9c077..1784eb772a 100644 --- a/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextLiveTest.java +++ b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextLiveTest.java @@ -6,6 +6,15 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +/** + * This live test requires: + * complete data-flow server and shell setup running + * + *
+ * For more info: + * https://www.baeldung.com/spring-cloud-data-flow-stream-processing + * + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = DataFlowShellApplication.class) public class SpringContextLiveTest { diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextIntegrationTest.java deleted file mode 100644 index dc635cd003..0000000000 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextIntegrationTest.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.baeldung.spring.cloud.bootstrap.gateway; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest -public class SpringContextIntegrationTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } - -} diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextLiveTest.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextLiveTest.java index a3cbb3310d..a5c6ab612a 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextLiveTest.java +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextLiveTest.java @@ -5,6 +5,15 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +/** + * This live test requires: + * Eureka server and Gateway application up and running + * + *
+ * For more info: + * https://www.baeldung.com/spring-cloud-netflix-eureka + * https://www.baeldung.com/spring-cloud-gateway-pattern + */ @RunWith(SpringRunner.class) @SpringBootTest public class SpringContextLiveTest { diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml index 13ad18810e..18bc426364 100644 --- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml @@ -18,6 +18,8 @@ 1.8 Greenwich.SR1 + 4.0.0 + 1.8.2 @@ -41,19 +43,19 @@ io.confluent kafka-avro-serializer - 4.0.0 + ${kafka-avro-serializer.version} org.apache.avro avro-compiler - 1.8.2 + ${avro.version} org.apache.avro avro-maven-plugin - 1.8.2 + ${avro.version} diff --git a/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextIntegrationTest.java b/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextIntegrationTest.java deleted file mode 100644 index e1eb2f8e24..0000000000 --- a/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextIntegrationTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.baeldung.spring.cloud.vaultsample; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = VaultSampleApplication.class) -public class SpringContextIntegrationTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} \ No newline at end of file diff --git a/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextLiveTest.java b/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextLiveTest.java index 3be4d96964..82fe3d7a4a 100644 --- a/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextLiveTest.java +++ b/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextLiveTest.java @@ -5,6 +5,15 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +/** + * This live test requires: + * vault server up and running on the environment + * + *
+ * For more info on setting up the vault server: + * https://www.baeldung.com/vault + * + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = VaultSampleApplication.class) public class SpringContextLiveTest { diff --git a/spring-core-2/README.md b/spring-core-2/README.md index 4c9e3b9ddf..113bbe9c83 100644 --- a/spring-core-2/README.md +++ b/spring-core-2/README.md @@ -1,3 +1,6 @@ ## Relevant Articles: - [Understanding getBean() in Spring](https://www.baeldung.com/spring-getbean) +- [Exploring the Spring BeanFactory API](http://www.baeldung.com/spring-beanfactory) +- [How to use the Spring FactoryBean?](http://www.baeldung.com/spring-factorybean) +- [Spring – Injecting Collections](http://www.baeldung.com/spring-injecting-collections) diff --git a/spring-core-2/pom.xml b/spring-core-2/pom.xml index d68beda64a..c9334e3d38 100644 --- a/spring-core-2/pom.xml +++ b/spring-core-2/pom.xml @@ -14,6 +14,11 @@ + + org.springframework + spring-test + ${spring.version} + org.springframework spring-beans diff --git a/spring-core/src/main/java/com/baeldung/beanfactory/Employee.java b/spring-core-2/src/main/java/com/baeldung/beanfactory/Employee.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/beanfactory/Employee.java rename to spring-core-2/src/main/java/com/baeldung/beanfactory/Employee.java diff --git a/spring-core/src/main/java/com/baeldung/collection/BaeldungBean.java b/spring-core-2/src/main/java/com/baeldung/collection/BaeldungBean.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/collection/BaeldungBean.java rename to spring-core-2/src/main/java/com/baeldung/collection/BaeldungBean.java diff --git a/spring-core/src/main/java/com/baeldung/collection/CollectionConfig.java b/spring-core-2/src/main/java/com/baeldung/collection/CollectionConfig.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/collection/CollectionConfig.java rename to spring-core-2/src/main/java/com/baeldung/collection/CollectionConfig.java diff --git a/spring-core/src/main/java/com/baeldung/collection/CollectionInjectionDemo.java b/spring-core-2/src/main/java/com/baeldung/collection/CollectionInjectionDemo.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/collection/CollectionInjectionDemo.java rename to spring-core-2/src/main/java/com/baeldung/collection/CollectionInjectionDemo.java diff --git a/spring-core/src/main/java/com/baeldung/collection/CollectionsBean.java b/spring-core-2/src/main/java/com/baeldung/collection/CollectionsBean.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/collection/CollectionsBean.java rename to spring-core-2/src/main/java/com/baeldung/collection/CollectionsBean.java diff --git a/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java b/spring-core-2/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java rename to spring-core-2/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java diff --git a/spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java b/spring-core-2/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java rename to spring-core-2/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java diff --git a/spring-core/src/main/java/com/baeldung/factorybean/README.md b/spring-core-2/src/main/java/com/baeldung/factorybean/README.md similarity index 100% rename from spring-core/src/main/java/com/baeldung/factorybean/README.md rename to spring-core-2/src/main/java/com/baeldung/factorybean/README.md diff --git a/spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java b/spring-core-2/src/main/java/com/baeldung/factorybean/SingleToolFactory.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java rename to spring-core-2/src/main/java/com/baeldung/factorybean/SingleToolFactory.java diff --git a/spring-core/src/main/java/com/baeldung/factorybean/Tool.java b/spring-core-2/src/main/java/com/baeldung/factorybean/Tool.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/factorybean/Tool.java rename to spring-core-2/src/main/java/com/baeldung/factorybean/Tool.java diff --git a/spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java b/spring-core-2/src/main/java/com/baeldung/factorybean/ToolFactory.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java rename to spring-core-2/src/main/java/com/baeldung/factorybean/ToolFactory.java diff --git a/spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml b/spring-core-2/src/main/resources/factorybean-abstract-spring-ctx.xml similarity index 100% rename from spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml rename to spring-core-2/src/main/resources/factorybean-abstract-spring-ctx.xml diff --git a/spring-core/src/main/resources/factorybean-spring-ctx.xml b/spring-core-2/src/main/resources/factorybean-spring-ctx.xml similarity index 100% rename from spring-core/src/main/resources/factorybean-spring-ctx.xml rename to spring-core-2/src/main/resources/factorybean-spring-ctx.xml diff --git a/spring-core/src/test/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResourceIntegrationTest.java b/spring-core-2/src/test/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResourceIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResourceIntegrationTest.java rename to spring-core-2/src/test/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResourceIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/beanfactory/README.md b/spring-core-2/src/test/java/com/baeldung/beanfactory/README.md similarity index 100% rename from spring-core/src/test/java/com/baeldung/beanfactory/README.md rename to spring-core-2/src/test/java/com/baeldung/beanfactory/README.md diff --git a/spring-core/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanIntegrationTest.java b/spring-core-2/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanIntegrationTest.java rename to spring-core-2/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigIntegrationTest.java b/spring-core-2/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigIntegrationTest.java rename to spring-core-2/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigIntegrationTest.java b/spring-core-2/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigIntegrationTest.java rename to spring-core-2/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigIntegrationTest.java diff --git a/spring-core/src/test/resources/beanfactory-example.xml b/spring-core-2/src/test/resources/beanfactory-example.xml similarity index 100% rename from spring-core/src/test/resources/beanfactory-example.xml rename to spring-core-2/src/test/resources/beanfactory-example.xml diff --git a/spring-core/README.md b/spring-core/README.md index 111b034bef..3ff3f1ea41 100644 --- a/spring-core/README.md +++ b/spring-core/README.md @@ -1,22 +1,12 @@ ### Relevant Articles: - [Wiring in Spring: @Autowired, @Resource and @Inject](http://www.baeldung.com/spring-annotations-resource-inject-autowire) -- [Exploring the Spring BeanFactory API](http://www.baeldung.com/spring-beanfactory) -- [How to use the Spring FactoryBean?](http://www.baeldung.com/spring-factorybean) -- [Constructor Dependency Injection in Spring](http://www.baeldung.com/constructor-injection-in-spring) - [Constructor Injection in Spring with Lombok](http://www.baeldung.com/spring-injection-lombok) - [Introduction to Spring’s StreamUtils](http://www.baeldung.com/spring-stream-utils) - [XML-Based Injection in Spring](http://www.baeldung.com/spring-xml-injection) - [A Quick Guide to the Spring @Lazy Annotation](http://www.baeldung.com/spring-lazy-annotation) -- [Injecting Prototype Beans into a Singleton Instance in Spring](http://www.baeldung.com/spring-inject-prototype-bean-into-singleton) -- [@Lookup Annotation in Spring](http://www.baeldung.com/spring-lookup) - [BeanNameAware and BeanFactoryAware Interfaces in Spring](http://www.baeldung.com/spring-bean-name-factory-aware) -- [Spring – Injecting Collections](http://www.baeldung.com/spring-injecting-collections) - [Access a File from the Classpath in a Spring Application](http://www.baeldung.com/spring-classpath-file-access) -- [Controlling Bean Creation Order with @DependsOn Annotation](http://www.baeldung.com/spring-depends-on) -- [Spring Autowiring of Generic Types](https://www.baeldung.com/spring-autowire-generics) - [Spring Application Context Events](https://www.baeldung.com/spring-context-events) -- [Unsatisfied Dependency in Spring](https://www.baeldung.com/spring-unsatisfied-dependency) - [What is a Spring Bean?](https://www.baeldung.com/spring-bean) - [Spring PostConstruct and PreDestroy Annotations](https://www.baeldung.com/spring-postconstruct-predestroy) -- [Guice vs Spring – Dependency Injection](https://www.baeldung.com/guice-spring-dependency-injection) -- [Circular Dependencies in Spring](http://www.baeldung.com/circular-dependencies-in-spring) + diff --git a/spring-core/src/main/java/com/baeldung/definition/Config.java b/spring-core/src/main/java/com/baeldung/springbean/Config.java similarity index 74% rename from spring-core/src/main/java/com/baeldung/definition/Config.java rename to spring-core/src/main/java/com/baeldung/springbean/Config.java index 126e6259ca..27275dbb0f 100644 --- a/spring-core/src/main/java/com/baeldung/definition/Config.java +++ b/spring-core/src/main/java/com/baeldung/springbean/Config.java @@ -1,11 +1,12 @@ -package com.baeldung.definition; +package com.baeldung.springbean; -import com.baeldung.definition.domain.Address; -import com.baeldung.definition.domain.Company; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import com.baeldung.springbean.domain.Address; +import com.baeldung.springbean.domain.Company; + @Configuration @ComponentScan(basePackageClasses = Company.class) public class Config { diff --git a/spring-core/src/main/java/com/baeldung/definition/domain/Address.java b/spring-core/src/main/java/com/baeldung/springbean/domain/Address.java similarity index 84% rename from spring-core/src/main/java/com/baeldung/definition/domain/Address.java rename to spring-core/src/main/java/com/baeldung/springbean/domain/Address.java index 91be18398e..5704be4bf8 100644 --- a/spring-core/src/main/java/com/baeldung/definition/domain/Address.java +++ b/spring-core/src/main/java/com/baeldung/springbean/domain/Address.java @@ -1,4 +1,4 @@ -package com.baeldung.definition.domain; +package com.baeldung.springbean.domain; import lombok.Data; diff --git a/spring-core/src/main/java/com/baeldung/definition/domain/Company.java b/spring-core/src/main/java/com/baeldung/springbean/domain/Company.java similarity index 84% rename from spring-core/src/main/java/com/baeldung/definition/domain/Company.java rename to spring-core/src/main/java/com/baeldung/springbean/domain/Company.java index eabde8afdf..68c177dab7 100644 --- a/spring-core/src/main/java/com/baeldung/definition/domain/Company.java +++ b/spring-core/src/main/java/com/baeldung/springbean/domain/Company.java @@ -1,4 +1,4 @@ -package com.baeldung.definition.domain; +package com.baeldung.springbean.domain; import lombok.Data; import org.springframework.stereotype.Component; diff --git a/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java b/spring-core/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java rename to spring-core/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java diff --git a/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java b/spring-core/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java rename to spring-core/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java diff --git a/spring-core/src/test/java/com/baeldung/definition/SpringBeanIntegrationTest.java b/spring-core/src/test/java/com/baeldung/springbean/SpringBeanIntegrationTest.java similarity index 88% rename from spring-core/src/test/java/com/baeldung/definition/SpringBeanIntegrationTest.java rename to spring-core/src/test/java/com/baeldung/springbean/SpringBeanIntegrationTest.java index 0057611308..e148ab2dd9 100644 --- a/spring-core/src/test/java/com/baeldung/definition/SpringBeanIntegrationTest.java +++ b/spring-core/src/test/java/com/baeldung/springbean/SpringBeanIntegrationTest.java @@ -1,11 +1,12 @@ -package com.baeldung.definition; +package com.baeldung.springbean; + +import static org.junit.Assert.assertEquals; -import com.baeldung.definition.domain.Company; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import static org.junit.Assert.assertEquals; +import com.baeldung.springbean.domain.Company; public class SpringBeanIntegrationTest { @Test diff --git a/spring-data-rest-querydsl/pom.xml b/spring-data-rest-querydsl/pom.xml index 55ff78f0cb..2c75990c65 100644 --- a/spring-data-rest-querydsl/pom.xml +++ b/spring-data-rest-querydsl/pom.xml @@ -1,5 +1,6 @@ - 4.0.0 com.baeldung @@ -44,6 +45,11 @@ spring-boot-starter-test test + + com.h2database + h2 + test + diff --git a/spring-data-rest-querydsl/src/main/java/com/baeldung/Application.java b/spring-data-rest-querydsl/src/main/java/com/baeldung/Application.java index 28d084a4dc..4b2f567090 100644 --- a/spring-data-rest-querydsl/src/main/java/com/baeldung/Application.java +++ b/spring-data-rest-querydsl/src/main/java/com/baeldung/Application.java @@ -13,6 +13,9 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import javax.annotation.PostConstruct; +/** + * Note: In the IDE, remember to generate query type classes before running the Integration Test (e.g. in Eclipse right-click on the project > Run As > Maven generate sources) + */ @SpringBootApplication @EntityScan("com.baeldung.entity") @EnableJpaRepositories("com.baeldung.controller.repository") diff --git a/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-data-rest-querydsl/src/test/java/com/baeldung/SpringContextTest.java similarity index 60% rename from spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextLiveTest.java rename to spring-data-rest-querydsl/src/test/java/com/baeldung/SpringContextTest.java index 5cb0a8167e..48c4630fa5 100644 --- a/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextLiveTest.java +++ b/spring-data-rest-querydsl/src/test/java/com/baeldung/SpringContextTest.java @@ -1,4 +1,4 @@ -package org.baeldung; +package com.baeldung; import org.junit.Test; import org.junit.runner.RunWith; @@ -7,9 +7,13 @@ import org.springframework.test.context.junit4.SpringRunner; import com.baeldung.Application; +/** + * Note: In the IDE, remember to generate query type classes before running the Integration Test (e.g. in Eclipse right-click on the project > Run As > Maven generate sources) + * + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) -public class SpringContextLiveTest { +public class SpringContextTest { @Test public void whenSpringContextIsBootstrapped_thenNoExceptions() { diff --git a/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextIntegrationTest.java deleted file mode 100644 index 7f906bdbcd..0000000000 --- a/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import com.baeldung.Application; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = Application.class) -public class SpringContextIntegrationTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-data-rest-querydsl/src/test/resources/application.yml b/spring-data-rest-querydsl/src/test/resources/application.yml new file mode 100644 index 0000000000..33b7231838 --- /dev/null +++ b/spring-data-rest-querydsl/src/test/resources/application.yml @@ -0,0 +1,11 @@ +spring: + datasource: + url: jdbc:h2:mem:springcloud + username: sa + password: + jpa: + hibernate: + ddl-auto: create-drop + properties: + hibernate: + dialect: org.hibernate.dialect.H2Dialect \ No newline at end of file diff --git a/spring-di/README.md b/spring-di/README.md index a61ebe5127..17f50ba410 100644 --- a/spring-di/README.md +++ b/spring-di/README.md @@ -1,3 +1,15 @@ +## Spring Dependency Injection + +This module contains articles about dependency injection with Spring + ### Relevant Articles - [The Spring @Qualifier Annotation](https://www.baeldung.com/spring-qualifier-annotation) +- [Constructor Dependency Injection in Spring](http://www.baeldung.com/constructor-injection-in-spring) +- [Spring Autowiring of Generic Types](https://www.baeldung.com/spring-autowire-generics) +- [Guice vs Spring – Dependency Injection](https://www.baeldung.com/guice-spring-dependency-injection) +- [Injecting Prototype Beans into a Singleton Instance in Spring](http://www.baeldung.com/spring-inject-prototype-bean-into-singleton) +- [@Lookup Annotation in Spring](http://www.baeldung.com/spring-lookup) +- [Controlling Bean Creation Order with @DependsOn Annotation](http://www.baeldung.com/spring-depends-on) +- [Unsatisfied Dependency in Spring](https://www.baeldung.com/spring-unsatisfied-dependency) +- [Circular Dependencies in Spring](http://www.baeldung.com/circular-dependencies-in-spring) diff --git a/spring-di/pom.xml b/spring-di/pom.xml index f3ad380778..c865815753 100644 --- a/spring-di/pom.xml +++ b/spring-di/pom.xml @@ -9,18 +9,70 @@ spring-di - parent-boot-2 com.baeldung + parent-spring-5 0.0.1-SNAPSHOT - ../parent-boot-2 + ../parent-spring-5 - + + org.springframework + spring-test + ${spring.version} + + + org.springframework + spring-beans + ${spring.version} + org.springframework spring-context + ${spring.version} + + javax.inject + javax.inject + ${javax.inject.version} + + + com.google.guava + guava + ${guava.version} + + + org.projectlombok + lombok + ${lombok.version} + + + org.springframework.boot + spring-boot-starter + ${spring-boot.version} + + + org.springframework.boot + spring-boot-test + ${mockito.spring.boot.version} + test + + + org.assertj + assertj-core + ${assertj.version} + test + + + commons-io + commons-io + ${commons.io.version} + + + + + + javax.annotation @@ -28,12 +80,12 @@ ${annotation-api.version} - - - org.springframework - spring-test - test - + + + + + + @@ -66,7 +118,7 @@ org.apache.maven.plugins maven-war-plugin - 3.2.2 + ${maven-war-plugin.version} false @@ -97,6 +149,14 @@ 5.0.6.RELEASE 1.3.2 + + 1.4.4.RELEASE + 1 + 20.0 + 2.5 + 1.5.2.RELEASE + 1.10.19 + 3.12.2 \ No newline at end of file diff --git a/spring-core/src/main/java/com/baeldung/circulardependency/CircularDependencyA.java b/spring-di/src/main/java/com/baeldung/circulardependency/CircularDependencyA.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/circulardependency/CircularDependencyA.java rename to spring-di/src/main/java/com/baeldung/circulardependency/CircularDependencyA.java diff --git a/spring-core/src/main/java/com/baeldung/circulardependency/CircularDependencyB.java b/spring-di/src/main/java/com/baeldung/circulardependency/CircularDependencyB.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/circulardependency/CircularDependencyB.java rename to spring-di/src/main/java/com/baeldung/circulardependency/CircularDependencyB.java diff --git a/spring-core/src/main/java/com/baeldung/constructordi/Config.java b/spring-di/src/main/java/com/baeldung/constructordi/Config.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/constructordi/Config.java rename to spring-di/src/main/java/com/baeldung/constructordi/Config.java diff --git a/spring-core/src/main/java/com/baeldung/constructordi/SpringRunner.java b/spring-di/src/main/java/com/baeldung/constructordi/SpringRunner.java similarity index 96% rename from spring-core/src/main/java/com/baeldung/constructordi/SpringRunner.java rename to spring-di/src/main/java/com/baeldung/constructordi/SpringRunner.java index bffd35ec59..abbe97a4bd 100644 --- a/spring-core/src/main/java/com/baeldung/constructordi/SpringRunner.java +++ b/spring-di/src/main/java/com/baeldung/constructordi/SpringRunner.java @@ -1,31 +1,31 @@ -package com.baeldung.constructordi; - -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; - -import com.baeldung.constructordi.domain.Car; - -public class SpringRunner { - public static void main(String[] args) { - Car toyota = getCarFromXml(); - - System.out.println(toyota); - - toyota = getCarFromJavaConfig(); - - System.out.println(toyota); - } - - private static Car getCarFromJavaConfig() { - ApplicationContext context = new AnnotationConfigApplicationContext(Config.class); - - return context.getBean(Car.class); - } - - private static Car getCarFromXml() { - ApplicationContext context = new ClassPathXmlApplicationContext("constructordi.xml"); - - return context.getBean(Car.class); - } -} +package com.baeldung.constructordi; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import com.baeldung.constructordi.domain.Car; + +public class SpringRunner { + public static void main(String[] args) { + Car toyota = getCarFromXml(); + + System.out.println(toyota); + + toyota = getCarFromJavaConfig(); + + System.out.println(toyota); + } + + private static Car getCarFromJavaConfig() { + ApplicationContext context = new AnnotationConfigApplicationContext(Config.class); + + return context.getBean(Car.class); + } + + private static Car getCarFromXml() { + ApplicationContext context = new ClassPathXmlApplicationContext("constructordi.xml"); + + return context.getBean(Car.class); + } +} diff --git a/spring-core/src/main/java/com/baeldung/constructordi/domain/Car.java b/spring-di/src/main/java/com/baeldung/constructordi/domain/Car.java similarity index 96% rename from spring-core/src/main/java/com/baeldung/constructordi/domain/Car.java rename to spring-di/src/main/java/com/baeldung/constructordi/domain/Car.java index 5c9467fdf4..9f68ba5cd9 100644 --- a/spring-core/src/main/java/com/baeldung/constructordi/domain/Car.java +++ b/spring-di/src/main/java/com/baeldung/constructordi/domain/Car.java @@ -1,21 +1,21 @@ -package com.baeldung.constructordi.domain; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -@Component -public class Car { - private Engine engine; - private Transmission transmission; - - @Autowired - public Car(Engine engine, Transmission transmission) { - this.engine = engine; - this.transmission = transmission; - } - - @Override - public String toString() { - return String.format("Engine: %s Transmission: %s", engine, transmission); - } -} +package com.baeldung.constructordi.domain; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class Car { + private Engine engine; + private Transmission transmission; + + @Autowired + public Car(Engine engine, Transmission transmission) { + this.engine = engine; + this.transmission = transmission; + } + + @Override + public String toString() { + return String.format("Engine: %s Transmission: %s", engine, transmission); + } +} diff --git a/spring-core/src/main/java/com/baeldung/constructordi/domain/Engine.java b/spring-di/src/main/java/com/baeldung/constructordi/domain/Engine.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/constructordi/domain/Engine.java rename to spring-di/src/main/java/com/baeldung/constructordi/domain/Engine.java diff --git a/spring-core/src/main/java/com/baeldung/constructordi/domain/Transmission.java b/spring-di/src/main/java/com/baeldung/constructordi/domain/Transmission.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/constructordi/domain/Transmission.java rename to spring-di/src/main/java/com/baeldung/constructordi/domain/Transmission.java diff --git a/spring-core/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java b/spring-di/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java rename to spring-di/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java diff --git a/spring-core/src/main/java/com/baeldung/dependency/ArbitraryDependency.java b/spring-di/src/main/java/com/baeldung/dependency/ArbitraryDependency.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependency/ArbitraryDependency.java rename to spring-di/src/main/java/com/baeldung/dependency/ArbitraryDependency.java diff --git a/spring-core/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java b/spring-di/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java rename to spring-di/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java diff --git a/spring-core/src/main/java/com/baeldung/dependency/exception/app/PurchaseDeptService.java b/spring-di/src/main/java/com/baeldung/dependency/exception/app/PurchaseDeptService.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependency/exception/app/PurchaseDeptService.java rename to spring-di/src/main/java/com/baeldung/dependency/exception/app/PurchaseDeptService.java diff --git a/spring-core/src/main/java/com/baeldung/dependency/exception/app/SpringDependenciesExampleApplication.java b/spring-di/src/main/java/com/baeldung/dependency/exception/app/SpringDependenciesExampleApplication.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependency/exception/app/SpringDependenciesExampleApplication.java rename to spring-di/src/main/java/com/baeldung/dependency/exception/app/SpringDependenciesExampleApplication.java diff --git a/spring-core/src/main/java/com/baeldung/dependency/exception/repository/DressRepository.java b/spring-di/src/main/java/com/baeldung/dependency/exception/repository/DressRepository.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependency/exception/repository/DressRepository.java rename to spring-di/src/main/java/com/baeldung/dependency/exception/repository/DressRepository.java diff --git a/spring-core/src/main/java/com/baeldung/dependency/exception/repository/InventoryRepository.java b/spring-di/src/main/java/com/baeldung/dependency/exception/repository/InventoryRepository.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependency/exception/repository/InventoryRepository.java rename to spring-di/src/main/java/com/baeldung/dependency/exception/repository/InventoryRepository.java diff --git a/spring-core/src/main/java/com/baeldung/dependency/exception/repository/ShoeRepository.java b/spring-di/src/main/java/com/baeldung/dependency/exception/repository/ShoeRepository.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependency/exception/repository/ShoeRepository.java rename to spring-di/src/main/java/com/baeldung/dependency/exception/repository/ShoeRepository.java diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleFormatter.java b/spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleFormatter.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleFormatter.java rename to spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleFormatter.java diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleWithConstructorInjection.java b/spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleWithConstructorInjection.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleWithConstructorInjection.java rename to spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleWithConstructorInjection.java diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleWithSetterInjection.java b/spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleWithSetterInjection.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleWithSetterInjection.java rename to spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleWithSetterInjection.java diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/TextFormatter.java b/spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/TextFormatter.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/TextFormatter.java rename to spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/TextFormatter.java diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/annotation/CarQualifier.java b/spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/annotation/CarQualifier.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/annotation/CarQualifier.java rename to spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/annotation/CarQualifier.java diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/app/CustomConfiguration.java b/spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/app/CustomConfiguration.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/app/CustomConfiguration.java rename to spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/app/CustomConfiguration.java diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/model/Car.java b/spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/model/Car.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/model/Car.java rename to spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/model/Car.java diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/model/CarHandler.java b/spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/model/CarHandler.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/model/CarHandler.java rename to spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/model/CarHandler.java diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/model/Motorcycle.java b/spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/model/Motorcycle.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/model/Motorcycle.java rename to spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/model/Motorcycle.java diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/model/Vehicle.java b/spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/model/Vehicle.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/model/Vehicle.java rename to spring-di/src/main/java/com/baeldung/dependencyinjectiontypes/model/Vehicle.java diff --git a/spring-core/src/main/java/com/baeldung/dependson/DriverApplication.java b/spring-di/src/main/java/com/baeldung/dependson/DriverApplication.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependson/DriverApplication.java rename to spring-di/src/main/java/com/baeldung/dependson/DriverApplication.java diff --git a/spring-core/src/main/java/com/baeldung/dependson/config/Config.java b/spring-di/src/main/java/com/baeldung/dependson/config/Config.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependson/config/Config.java rename to spring-di/src/main/java/com/baeldung/dependson/config/Config.java diff --git a/spring-core/src/main/java/com/baeldung/dependson/file/processor/FileProcessor.java b/spring-di/src/main/java/com/baeldung/dependson/file/processor/FileProcessor.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependson/file/processor/FileProcessor.java rename to spring-di/src/main/java/com/baeldung/dependson/file/processor/FileProcessor.java diff --git a/spring-core/src/main/java/com/baeldung/dependson/file/reader/FileReader.java b/spring-di/src/main/java/com/baeldung/dependson/file/reader/FileReader.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependson/file/reader/FileReader.java rename to spring-di/src/main/java/com/baeldung/dependson/file/reader/FileReader.java diff --git a/spring-core/src/main/java/com/baeldung/dependson/file/writer/FileWriter.java b/spring-di/src/main/java/com/baeldung/dependson/file/writer/FileWriter.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependson/file/writer/FileWriter.java rename to spring-di/src/main/java/com/baeldung/dependson/file/writer/FileWriter.java diff --git a/spring-core/src/main/java/com/baeldung/dependson/shared/File.java b/spring-di/src/main/java/com/baeldung/dependson/shared/File.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/dependson/shared/File.java rename to spring-di/src/main/java/com/baeldung/dependson/shared/File.java diff --git a/spring-core/src/main/java/com/baeldung/di/spring/Account.java b/spring-di/src/main/java/com/baeldung/di/spring/Account.java similarity index 94% rename from spring-core/src/main/java/com/baeldung/di/spring/Account.java rename to spring-di/src/main/java/com/baeldung/di/spring/Account.java index 6d9883bda5..e34f2864e5 100644 --- a/spring-core/src/main/java/com/baeldung/di/spring/Account.java +++ b/spring-di/src/main/java/com/baeldung/di/spring/Account.java @@ -1,27 +1,27 @@ -package com.baeldung.di.spring; - -import org.springframework.stereotype.Component; - -@Component -public class Account { - - private String accountNumber; - private String type; - - public String getAccountNumber() { - return accountNumber; - } - - public void setAccountNumber(String accountNumber) { - this.accountNumber = accountNumber; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - -} +package com.baeldung.di.spring; + +import org.springframework.stereotype.Component; + +@Component +public class Account { + + private String accountNumber; + private String type; + + public String getAccountNumber() { + return accountNumber; + } + + public void setAccountNumber(String accountNumber) { + this.accountNumber = accountNumber; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + +} diff --git a/spring-core/src/main/java/com/baeldung/di/spring/AccountService.java b/spring-di/src/main/java/com/baeldung/di/spring/AccountService.java similarity index 93% rename from spring-core/src/main/java/com/baeldung/di/spring/AccountService.java rename to spring-di/src/main/java/com/baeldung/di/spring/AccountService.java index 75ba6bb3eb..388c8c03db 100644 --- a/spring-core/src/main/java/com/baeldung/di/spring/AccountService.java +++ b/spring-di/src/main/java/com/baeldung/di/spring/AccountService.java @@ -1,5 +1,5 @@ -package com.baeldung.di.spring; - -public interface AccountService { - -} +package com.baeldung.di.spring; + +public interface AccountService { + +} diff --git a/spring-core/src/main/java/com/baeldung/di/spring/AccountServiceImpl.java b/spring-di/src/main/java/com/baeldung/di/spring/AccountServiceImpl.java similarity index 95% rename from spring-core/src/main/java/com/baeldung/di/spring/AccountServiceImpl.java rename to spring-di/src/main/java/com/baeldung/di/spring/AccountServiceImpl.java index 4a4baf7d92..6a3e4619f3 100644 --- a/spring-core/src/main/java/com/baeldung/di/spring/AccountServiceImpl.java +++ b/spring-di/src/main/java/com/baeldung/di/spring/AccountServiceImpl.java @@ -1,8 +1,8 @@ -package com.baeldung.di.spring; - -import org.springframework.stereotype.Component; - -@Component -public class AccountServiceImpl implements AccountService { - -} +package com.baeldung.di.spring; + +import org.springframework.stereotype.Component; + +@Component +public class AccountServiceImpl implements AccountService { + +} diff --git a/spring-core/src/main/java/com/baeldung/di/spring/AudioBookService.java b/spring-di/src/main/java/com/baeldung/di/spring/AudioBookService.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/di/spring/AudioBookService.java rename to spring-di/src/main/java/com/baeldung/di/spring/AudioBookService.java diff --git a/spring-core/src/main/java/com/baeldung/di/spring/AudioBookServiceImpl.java b/spring-di/src/main/java/com/baeldung/di/spring/AudioBookServiceImpl.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/di/spring/AudioBookServiceImpl.java rename to spring-di/src/main/java/com/baeldung/di/spring/AudioBookServiceImpl.java diff --git a/spring-core/src/main/java/com/baeldung/di/spring/AuthorService.java b/spring-di/src/main/java/com/baeldung/di/spring/AuthorService.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/di/spring/AuthorService.java rename to spring-di/src/main/java/com/baeldung/di/spring/AuthorService.java diff --git a/spring-core/src/main/java/com/baeldung/di/spring/AuthorServiceImpl.java b/spring-di/src/main/java/com/baeldung/di/spring/AuthorServiceImpl.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/di/spring/AuthorServiceImpl.java rename to spring-di/src/main/java/com/baeldung/di/spring/AuthorServiceImpl.java diff --git a/spring-core/src/main/java/com/baeldung/di/spring/BookService.java b/spring-di/src/main/java/com/baeldung/di/spring/BookService.java similarity index 93% rename from spring-core/src/main/java/com/baeldung/di/spring/BookService.java rename to spring-di/src/main/java/com/baeldung/di/spring/BookService.java index 8e693e687d..6b25137ced 100644 --- a/spring-core/src/main/java/com/baeldung/di/spring/BookService.java +++ b/spring-di/src/main/java/com/baeldung/di/spring/BookService.java @@ -1,5 +1,5 @@ -package com.baeldung.di.spring; - -public interface BookService { - -} +package com.baeldung.di.spring; + +public interface BookService { + +} diff --git a/spring-core/src/main/java/com/baeldung/di/spring/BookServiceImpl.java b/spring-di/src/main/java/com/baeldung/di/spring/BookServiceImpl.java similarity index 95% rename from spring-core/src/main/java/com/baeldung/di/spring/BookServiceImpl.java rename to spring-di/src/main/java/com/baeldung/di/spring/BookServiceImpl.java index b4ea602234..7cbb7e9b89 100644 --- a/spring-core/src/main/java/com/baeldung/di/spring/BookServiceImpl.java +++ b/spring-di/src/main/java/com/baeldung/di/spring/BookServiceImpl.java @@ -1,10 +1,10 @@ -package com.baeldung.di.spring; - -import org.springframework.beans.factory.annotation.Autowired; - -public class BookServiceImpl implements BookService { - - @Autowired(required = false) - private AuthorService authorService; - -} +package com.baeldung.di.spring; + +import org.springframework.beans.factory.annotation.Autowired; + +public class BookServiceImpl implements BookService { + + @Autowired(required = false) + private AuthorService authorService; + +} diff --git a/spring-core/src/main/java/com/baeldung/di/spring/Foo.java b/spring-di/src/main/java/com/baeldung/di/spring/Foo.java similarity index 93% rename from spring-core/src/main/java/com/baeldung/di/spring/Foo.java rename to spring-di/src/main/java/com/baeldung/di/spring/Foo.java index 9d9b5d0888..6b2ba9b602 100644 --- a/spring-core/src/main/java/com/baeldung/di/spring/Foo.java +++ b/spring-di/src/main/java/com/baeldung/di/spring/Foo.java @@ -1,4 +1,4 @@ -package com.baeldung.di.spring; - -public class Foo { -} +package com.baeldung.di.spring; + +public class Foo { +} diff --git a/spring-core/src/main/java/com/baeldung/di/spring/FooProcessor.java b/spring-di/src/main/java/com/baeldung/di/spring/FooProcessor.java similarity index 94% rename from spring-core/src/main/java/com/baeldung/di/spring/FooProcessor.java rename to spring-di/src/main/java/com/baeldung/di/spring/FooProcessor.java index 9baaaef7a3..74f4d3a92b 100644 --- a/spring-core/src/main/java/com/baeldung/di/spring/FooProcessor.java +++ b/spring-di/src/main/java/com/baeldung/di/spring/FooProcessor.java @@ -1,6 +1,6 @@ -package com.baeldung.di.spring; - -public class FooProcessor { - - private Foo foo; +package com.baeldung.di.spring; + +public class FooProcessor { + + private Foo foo; } \ No newline at end of file diff --git a/spring-core/src/main/java/com/baeldung/di/spring/IService.java b/spring-di/src/main/java/com/baeldung/di/spring/IService.java similarity index 94% rename from spring-core/src/main/java/com/baeldung/di/spring/IService.java rename to spring-di/src/main/java/com/baeldung/di/spring/IService.java index 478eea0657..8c27f91589 100644 --- a/spring-core/src/main/java/com/baeldung/di/spring/IService.java +++ b/spring-di/src/main/java/com/baeldung/di/spring/IService.java @@ -1,5 +1,5 @@ -package com.baeldung.di.spring; - -public interface IService { - public String serve(); -} +package com.baeldung.di.spring; + +public interface IService { + public String serve(); +} diff --git a/spring-core/src/main/java/com/baeldung/di/spring/IndexApp.java b/spring-di/src/main/java/com/baeldung/di/spring/IndexApp.java similarity index 94% rename from spring-core/src/main/java/com/baeldung/di/spring/IndexApp.java rename to spring-di/src/main/java/com/baeldung/di/spring/IndexApp.java index a45970d6b2..d3ca2158cd 100644 --- a/spring-core/src/main/java/com/baeldung/di/spring/IndexApp.java +++ b/spring-di/src/main/java/com/baeldung/di/spring/IndexApp.java @@ -1,19 +1,19 @@ -package com.baeldung.di.spring; - -public class IndexApp { - - private IService service; - - public String getServiceValue() { - return service.serve(); - } - - public IService getService() { - return service; - } - - public void setService(IService service) { - this.service = service; - } - -} +package com.baeldung.di.spring; + +public class IndexApp { + + private IService service; + + public String getServiceValue() { + return service.serve(); + } + + public IService getService() { + return service; + } + + public void setService(IService service) { + this.service = service; + } + +} diff --git a/spring-core/src/main/java/com/baeldung/di/spring/IndexService.java b/spring-di/src/main/java/com/baeldung/di/spring/IndexService.java similarity index 94% rename from spring-core/src/main/java/com/baeldung/di/spring/IndexService.java rename to spring-di/src/main/java/com/baeldung/di/spring/IndexService.java index ad241f5200..cbd4c28f3c 100644 --- a/spring-core/src/main/java/com/baeldung/di/spring/IndexService.java +++ b/spring-di/src/main/java/com/baeldung/di/spring/IndexService.java @@ -1,10 +1,10 @@ -package com.baeldung.di.spring; - -public class IndexService implements IService { - - @Override - public String serve() { - return "Hello World"; - } - -} +package com.baeldung.di.spring; + +public class IndexService implements IService { + + @Override + public String serve() { + return "Hello World"; + } + +} diff --git a/spring-core/src/main/java/com/baeldung/di/spring/InstanceServiceFactory.java b/spring-di/src/main/java/com/baeldung/di/spring/InstanceServiceFactory.java similarity index 96% rename from spring-core/src/main/java/com/baeldung/di/spring/InstanceServiceFactory.java rename to spring-di/src/main/java/com/baeldung/di/spring/InstanceServiceFactory.java index f083504e8f..2cc7ff65ae 100644 --- a/spring-core/src/main/java/com/baeldung/di/spring/InstanceServiceFactory.java +++ b/spring-di/src/main/java/com/baeldung/di/spring/InstanceServiceFactory.java @@ -1,14 +1,14 @@ -package com.baeldung.di.spring; - -public class InstanceServiceFactory { - public IService getService(int number) { - switch (number) { - case 1: - return new MessageService("Foo"); - case 0: - return new IndexService(); - default: - throw new IllegalArgumentException("Unknown parameter " + number); - } - } -} +package com.baeldung.di.spring; + +public class InstanceServiceFactory { + public IService getService(int number) { + switch (number) { + case 1: + return new MessageService("Foo"); + case 0: + return new IndexService(); + default: + throw new IllegalArgumentException("Unknown parameter " + number); + } + } +} diff --git a/spring-core/src/main/java/com/baeldung/di/spring/MessageApp.java b/spring-di/src/main/java/com/baeldung/di/spring/MessageApp.java similarity index 94% rename from spring-core/src/main/java/com/baeldung/di/spring/MessageApp.java rename to spring-di/src/main/java/com/baeldung/di/spring/MessageApp.java index 1bf6c20b28..bb8188853a 100644 --- a/spring-core/src/main/java/com/baeldung/di/spring/MessageApp.java +++ b/spring-di/src/main/java/com/baeldung/di/spring/MessageApp.java @@ -1,14 +1,14 @@ -package com.baeldung.di.spring; - -public class MessageApp { - - private IService iService; - - public MessageApp(IService iService) { - this.iService = iService; - } - - public String getServiceValue() { - return iService.serve(); - } -} +package com.baeldung.di.spring; + +public class MessageApp { + + private IService iService; + + public MessageApp(IService iService) { + this.iService = iService; + } + + public String getServiceValue() { + return iService.serve(); + } +} diff --git a/spring-core/src/main/java/com/baeldung/di/spring/MessageService.java b/spring-di/src/main/java/com/baeldung/di/spring/MessageService.java similarity index 94% rename from spring-core/src/main/java/com/baeldung/di/spring/MessageService.java rename to spring-di/src/main/java/com/baeldung/di/spring/MessageService.java index 9b6efaab2a..1bb548bdf6 100644 --- a/spring-core/src/main/java/com/baeldung/di/spring/MessageService.java +++ b/spring-di/src/main/java/com/baeldung/di/spring/MessageService.java @@ -1,16 +1,16 @@ -package com.baeldung.di.spring; - -public class MessageService implements IService { - - private String message; - - public MessageService(String message) { - this.message = message; - } - - @Override - public String serve() { - return message; - } - -} +package com.baeldung.di.spring; + +public class MessageService implements IService { + + private String message; + + public MessageService(String message) { + this.message = message; + } + + @Override + public String serve() { + return message; + } + +} diff --git a/spring-core/src/main/java/com/baeldung/di/spring/PersonDao.java b/spring-di/src/main/java/com/baeldung/di/spring/PersonDao.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/di/spring/PersonDao.java rename to spring-di/src/main/java/com/baeldung/di/spring/PersonDao.java diff --git a/spring-core/src/main/java/com/baeldung/di/spring/PersonDaoImpl.java b/spring-di/src/main/java/com/baeldung/di/spring/PersonDaoImpl.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/di/spring/PersonDaoImpl.java rename to spring-di/src/main/java/com/baeldung/di/spring/PersonDaoImpl.java diff --git a/spring-core/src/main/java/com/baeldung/di/spring/SpringBeansConfig.java b/spring-di/src/main/java/com/baeldung/di/spring/SpringBeansConfig.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/di/spring/SpringBeansConfig.java rename to spring-di/src/main/java/com/baeldung/di/spring/SpringBeansConfig.java diff --git a/spring-core/src/main/java/com/baeldung/di/spring/SpringMainConfig.java b/spring-di/src/main/java/com/baeldung/di/spring/SpringMainConfig.java similarity index 96% rename from spring-core/src/main/java/com/baeldung/di/spring/SpringMainConfig.java rename to spring-di/src/main/java/com/baeldung/di/spring/SpringMainConfig.java index 75066fd539..374a7e8e32 100644 --- a/spring-core/src/main/java/com/baeldung/di/spring/SpringMainConfig.java +++ b/spring-di/src/main/java/com/baeldung/di/spring/SpringMainConfig.java @@ -1,18 +1,18 @@ -package com.baeldung.di.spring; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; - -@Configuration -@Import({ SpringBeansConfig.class }) -@ComponentScan("com.baeldung.di.spring") -public class SpringMainConfig { - - @Bean - public BookService bookServiceGenerator() { - return new BookServiceImpl(); - } - -} +package com.baeldung.di.spring; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration +@Import({ SpringBeansConfig.class }) +@ComponentScan("com.baeldung.di.spring") +public class SpringMainConfig { + + @Bean + public BookService bookServiceGenerator() { + return new BookServiceImpl(); + } + +} diff --git a/spring-core/src/main/java/com/baeldung/di/spring/SpringPersonService.java b/spring-di/src/main/java/com/baeldung/di/spring/SpringPersonService.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/di/spring/SpringPersonService.java rename to spring-di/src/main/java/com/baeldung/di/spring/SpringPersonService.java diff --git a/spring-core/src/main/java/com/baeldung/di/spring/StaticServiceFactory.java b/spring-di/src/main/java/com/baeldung/di/spring/StaticServiceFactory.java similarity index 96% rename from spring-core/src/main/java/com/baeldung/di/spring/StaticServiceFactory.java rename to spring-di/src/main/java/com/baeldung/di/spring/StaticServiceFactory.java index bd70898faf..6ef4c5e9ac 100644 --- a/spring-core/src/main/java/com/baeldung/di/spring/StaticServiceFactory.java +++ b/spring-di/src/main/java/com/baeldung/di/spring/StaticServiceFactory.java @@ -1,14 +1,14 @@ -package com.baeldung.di.spring; - -public class StaticServiceFactory { - public static IService getService(int number) { - switch (number) { - case 1: - return new MessageService("Foo"); - case 0: - return new IndexService(); - default: - throw new IllegalArgumentException("Unknown parameter " + number); - } - } -} +package com.baeldung.di.spring; + +public class StaticServiceFactory { + public static IService getService(int number) { + switch (number) { + case 1: + return new MessageService("Foo"); + case 0: + return new IndexService(); + default: + throw new IllegalArgumentException("Unknown parameter " + number); + } + } +} diff --git a/spring-core/src/main/java/com/baeldung/di/spring/UserService.java b/spring-di/src/main/java/com/baeldung/di/spring/UserService.java similarity index 95% rename from spring-core/src/main/java/com/baeldung/di/spring/UserService.java rename to spring-di/src/main/java/com/baeldung/di/spring/UserService.java index 330d7f7448..5ff35cda95 100644 --- a/spring-core/src/main/java/com/baeldung/di/spring/UserService.java +++ b/spring-di/src/main/java/com/baeldung/di/spring/UserService.java @@ -1,20 +1,20 @@ -package com.baeldung.di.spring; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -@Component -public class UserService { - - @Autowired - private AccountService accountService; - - public AccountService getAccountService() { - return accountService; - } - - public void setAccountService(AccountService accountService) { - this.accountService = accountService; - } - -} +package com.baeldung.di.spring; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class UserService { + + @Autowired + private AccountService accountService; + + public AccountService getAccountService() { + return accountService; + } + + public void setAccountService(AccountService accountService) { + this.accountService = accountService; + } + +} diff --git a/spring-di/src/main/java/com/baeldung/methodinjections/AppConfig.java b/spring-di/src/main/java/com/baeldung/methodinjections/AppConfig.java new file mode 100644 index 0000000000..7c1e209383 --- /dev/null +++ b/spring-di/src/main/java/com/baeldung/methodinjections/AppConfig.java @@ -0,0 +1,10 @@ +package com.baeldung.methodinjections; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ComponentScan(basePackages = "com.baeldung.methodinjections") + +public class AppConfig { +} diff --git a/spring-di/src/main/java/com/baeldung/methodinjections/Grader.java b/spring-di/src/main/java/com/baeldung/methodinjections/Grader.java new file mode 100644 index 0000000000..10dc77484c --- /dev/null +++ b/spring-di/src/main/java/com/baeldung/methodinjections/Grader.java @@ -0,0 +1,19 @@ +package com.baeldung.methodinjections; + +import java.util.Collection; + +import org.springframework.stereotype.Component; + +@Component +public class Grader { + + public String grade(Collection marks) { + + boolean result = marks.stream() + .anyMatch(mark -> mark < 45); + if (result) { + return "FAIL"; + } + return "PASS"; + } +} diff --git a/spring-di/src/main/java/com/baeldung/methodinjections/SchoolNotification.java b/spring-di/src/main/java/com/baeldung/methodinjections/SchoolNotification.java new file mode 100644 index 0000000000..752eb8893f --- /dev/null +++ b/spring-di/src/main/java/com/baeldung/methodinjections/SchoolNotification.java @@ -0,0 +1,45 @@ +package com.baeldung.methodinjections; + +import java.util.ArrayList; +import java.util.Collection; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +@Component("schoolNotification") +@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) +public class SchoolNotification { + @Autowired + Grader grader; + + private String name; + private Collection marks; + + public SchoolNotification(String name) { + this.name = name; + this.marks = new ArrayList(); + } + + public String addMark(Integer mark) { + this.marks.add(mark); + return this.grader.grade(this.marks); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Collection getMarks() { + return marks; + } + + public void setMarks(Collection marks) { + this.marks = marks; + } +} diff --git a/spring-di/src/main/java/com/baeldung/methodinjections/Student.java b/spring-di/src/main/java/com/baeldung/methodinjections/Student.java new file mode 100644 index 0000000000..ceeebc3d0d --- /dev/null +++ b/spring-di/src/main/java/com/baeldung/methodinjections/Student.java @@ -0,0 +1,27 @@ +package com.baeldung.methodinjections; + +import org.springframework.beans.factory.annotation.Lookup; +import org.springframework.stereotype.Component; + +@Component("studentBean") +public class Student { + + private String id; + + /** + * Injects a prototype bean SchoolNotification into Singleton student + */ + @Lookup + public SchoolNotification getNotification(String name) { + // spring overrides and returns a SchoolNotification instance + return null; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/spring-di/src/main/java/com/baeldung/methodinjections/StudentServices.java b/spring-di/src/main/java/com/baeldung/methodinjections/StudentServices.java new file mode 100644 index 0000000000..20d631b120 --- /dev/null +++ b/spring-di/src/main/java/com/baeldung/methodinjections/StudentServices.java @@ -0,0 +1,21 @@ +package com.baeldung.methodinjections; + +import java.util.HashMap; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Lookup; +import org.springframework.stereotype.Component; + +@Component("studentService") +public abstract class StudentServices { + + private Map notes = new HashMap<>(); + + @Lookup + protected abstract SchoolNotification getNotification(String name); + + public String appendMark(String name, Integer mark) { + SchoolNotification notification = notes.computeIfAbsent(name, exists -> getNotification(name)); + return notification.addMark(mark); + } +} diff --git a/spring-di/src/main/java/org/baeldung/sample/App.java b/spring-di/src/main/java/com/baeldung/sample/App.java similarity index 92% rename from spring-di/src/main/java/org/baeldung/sample/App.java rename to spring-di/src/main/java/com/baeldung/sample/App.java index 17fc49fc8c..f2a017f3e5 100644 --- a/spring-di/src/main/java/org/baeldung/sample/App.java +++ b/spring-di/src/main/java/com/baeldung/sample/App.java @@ -1,4 +1,4 @@ -package org.baeldung.sample; +package com.baeldung.sample; import org.springframework.context.annotation.AnnotationConfigApplicationContext; diff --git a/spring-di/src/main/java/org/baeldung/sample/AppConfig.java b/spring-di/src/main/java/com/baeldung/sample/AppConfig.java similarity index 71% rename from spring-di/src/main/java/org/baeldung/sample/AppConfig.java rename to spring-di/src/main/java/com/baeldung/sample/AppConfig.java index 8a177d2611..d13023d89e 100644 --- a/spring-di/src/main/java/org/baeldung/sample/AppConfig.java +++ b/spring-di/src/main/java/com/baeldung/sample/AppConfig.java @@ -1,10 +1,10 @@ -package org.baeldung.sample; +package com.baeldung.sample; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration -@ComponentScan("org.baeldung.sample") +@ComponentScan("com.baeldung.sample") public class AppConfig { } diff --git a/spring-di/src/main/java/com/baeldung/sample/Bar.java b/spring-di/src/main/java/com/baeldung/sample/Bar.java new file mode 100644 index 0000000000..42302b5563 --- /dev/null +++ b/spring-di/src/main/java/com/baeldung/sample/Bar.java @@ -0,0 +1,5 @@ +package com.baeldung.sample; + +public class Bar { + +} diff --git a/spring-di/src/main/java/org/baeldung/sample/BarFormatter.java b/spring-di/src/main/java/com/baeldung/sample/BarFormatter.java similarity index 86% rename from spring-di/src/main/java/org/baeldung/sample/BarFormatter.java rename to spring-di/src/main/java/com/baeldung/sample/BarFormatter.java index 8396653970..e3e0733627 100644 --- a/spring-di/src/main/java/org/baeldung/sample/BarFormatter.java +++ b/spring-di/src/main/java/com/baeldung/sample/BarFormatter.java @@ -1,4 +1,4 @@ -package org.baeldung.sample; +package com.baeldung.sample; import org.springframework.stereotype.Component; diff --git a/spring-di/src/main/java/com/baeldung/sample/Foo.java b/spring-di/src/main/java/com/baeldung/sample/Foo.java new file mode 100644 index 0000000000..b25c9ecfb5 --- /dev/null +++ b/spring-di/src/main/java/com/baeldung/sample/Foo.java @@ -0,0 +1,5 @@ +package com.baeldung.sample; + +public class Foo { + +} diff --git a/spring-di/src/main/java/com/baeldung/sample/FooDAO.java b/spring-di/src/main/java/com/baeldung/sample/FooDAO.java new file mode 100644 index 0000000000..cc8f732bf9 --- /dev/null +++ b/spring-di/src/main/java/com/baeldung/sample/FooDAO.java @@ -0,0 +1,5 @@ +package com.baeldung.sample; + +public class FooDAO { + +} diff --git a/spring-di/src/main/java/org/baeldung/sample/FooFormatter.java b/spring-di/src/main/java/com/baeldung/sample/FooFormatter.java similarity index 86% rename from spring-di/src/main/java/org/baeldung/sample/FooFormatter.java rename to spring-di/src/main/java/com/baeldung/sample/FooFormatter.java index 68cb7f81f2..25a0b9059d 100644 --- a/spring-di/src/main/java/org/baeldung/sample/FooFormatter.java +++ b/spring-di/src/main/java/com/baeldung/sample/FooFormatter.java @@ -1,4 +1,4 @@ -package org.baeldung.sample; +package com.baeldung.sample; import org.springframework.stereotype.Component; diff --git a/spring-di/src/main/java/org/baeldung/sample/FooService.java b/spring-di/src/main/java/com/baeldung/sample/FooService.java similarity index 91% rename from spring-di/src/main/java/org/baeldung/sample/FooService.java rename to spring-di/src/main/java/com/baeldung/sample/FooService.java index 711711f205..6d7ed3d93b 100644 --- a/spring-di/src/main/java/org/baeldung/sample/FooService.java +++ b/spring-di/src/main/java/com/baeldung/sample/FooService.java @@ -1,4 +1,4 @@ -package org.baeldung.sample; +package com.baeldung.sample; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/spring-di/src/main/java/org/baeldung/sample/Formatter.java b/spring-di/src/main/java/com/baeldung/sample/Formatter.java similarity index 65% rename from spring-di/src/main/java/org/baeldung/sample/Formatter.java rename to spring-di/src/main/java/com/baeldung/sample/Formatter.java index ab29c2b848..c5de59993c 100644 --- a/spring-di/src/main/java/org/baeldung/sample/Formatter.java +++ b/spring-di/src/main/java/com/baeldung/sample/Formatter.java @@ -1,4 +1,4 @@ -package org.baeldung.sample; +package com.baeldung.sample; public interface Formatter { diff --git a/spring-di/src/main/java/org/baeldung/sample/FormatterType.java b/spring-di/src/main/java/com/baeldung/sample/FormatterType.java similarity index 93% rename from spring-di/src/main/java/org/baeldung/sample/FormatterType.java rename to spring-di/src/main/java/com/baeldung/sample/FormatterType.java index a00a9750bf..1ac6c6f4ad 100644 --- a/spring-di/src/main/java/org/baeldung/sample/FormatterType.java +++ b/spring-di/src/main/java/com/baeldung/sample/FormatterType.java @@ -1,4 +1,4 @@ -package org.baeldung.sample; +package com.baeldung.sample; import org.springframework.beans.factory.annotation.Qualifier; diff --git a/spring-di/src/main/java/org/baeldung/sample/Bar.java b/spring-di/src/main/java/org/baeldung/sample/Bar.java deleted file mode 100644 index 54e8d54418..0000000000 --- a/spring-di/src/main/java/org/baeldung/sample/Bar.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.baeldung.sample; - -public class Bar { - -} diff --git a/spring-di/src/main/java/org/baeldung/sample/Foo.java b/spring-di/src/main/java/org/baeldung/sample/Foo.java deleted file mode 100644 index 562a00121a..0000000000 --- a/spring-di/src/main/java/org/baeldung/sample/Foo.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.baeldung.sample; - -public class Foo { - -} diff --git a/spring-di/src/main/java/org/baeldung/sample/FooDAO.java b/spring-di/src/main/java/org/baeldung/sample/FooDAO.java deleted file mode 100644 index 151c0c38de..0000000000 --- a/spring-di/src/main/java/org/baeldung/sample/FooDAO.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.baeldung.sample; - -public class FooDAO { - -} diff --git a/spring-di/src/main/resources/application.properties b/spring-di/src/main/resources/application.properties new file mode 100644 index 0000000000..11710b49aa --- /dev/null +++ b/spring-di/src/main/resources/application.properties @@ -0,0 +1,2 @@ +spring.profiles.active=prod + diff --git a/spring-di/src/main/resources/baeldung.xml b/spring-di/src/main/resources/baeldung.xml new file mode 100644 index 0000000000..d84492f1d4 --- /dev/null +++ b/spring-di/src/main/resources/baeldung.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + diff --git a/spring-di/src/main/resources/beaninjectiontypes-context.xml b/spring-di/src/main/resources/beaninjectiontypes-context.xml new file mode 100644 index 0000000000..dfdea41cdc --- /dev/null +++ b/spring-di/src/main/resources/beaninjectiontypes-context.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-di/src/main/resources/beans.xml b/spring-di/src/main/resources/beans.xml new file mode 100644 index 0000000000..4002fa63bd --- /dev/null +++ b/spring-di/src/main/resources/beans.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/spring-di/src/main/resources/classpathxmlapplicationcontext-example.xml b/spring-di/src/main/resources/classpathxmlapplicationcontext-example.xml new file mode 100644 index 0000000000..d0ba03cec8 --- /dev/null +++ b/spring-di/src/main/resources/classpathxmlapplicationcontext-example.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-di/src/main/resources/classpathxmlapplicationcontext-internationalization.xml b/spring-di/src/main/resources/classpathxmlapplicationcontext-internationalization.xml new file mode 100644 index 0000000000..f68d623be7 --- /dev/null +++ b/spring-di/src/main/resources/classpathxmlapplicationcontext-internationalization.xml @@ -0,0 +1,14 @@ + + + + + + + dialog/dialog + + + + \ No newline at end of file diff --git a/spring-di/src/main/resources/com.baeldung.di.spring.properties b/spring-di/src/main/resources/com.baeldung.di.spring.properties new file mode 100644 index 0000000000..8b8b5b85c2 --- /dev/null +++ b/spring-di/src/main/resources/com.baeldung.di.spring.properties @@ -0,0 +1 @@ +message.value=Hello World \ No newline at end of file diff --git a/spring-di/src/main/resources/com.baeldung.di.spring.xml b/spring-di/src/main/resources/com.baeldung.di.spring.xml new file mode 100644 index 0000000000..81942453b2 --- /dev/null +++ b/spring-di/src/main/resources/com.baeldung.di.spring.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-di/src/main/resources/constructordi.xml b/spring-di/src/main/resources/constructordi.xml new file mode 100644 index 0000000000..08f6013dc6 --- /dev/null +++ b/spring-di/src/main/resources/constructordi.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + diff --git a/spring-di/src/main/resources/dependencyinjectiontypes-context.xml b/spring-di/src/main/resources/dependencyinjectiontypes-context.xml new file mode 100644 index 0000000000..bd6b3c408d --- /dev/null +++ b/spring-di/src/main/resources/dependencyinjectiontypes-context.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-di/src/main/resources/dialog/dialog_en.properties b/spring-di/src/main/resources/dialog/dialog_en.properties new file mode 100644 index 0000000000..cf65b8990e --- /dev/null +++ b/spring-di/src/main/resources/dialog/dialog_en.properties @@ -0,0 +1,3 @@ +hello=hello +you=you +thanks=thank {0} \ No newline at end of file diff --git a/spring-di/src/main/resources/dialog/dialog_zh_CN.properties b/spring-di/src/main/resources/dialog/dialog_zh_CN.properties new file mode 100644 index 0000000000..ab09c8b39f --- /dev/null +++ b/spring-di/src/main/resources/dialog/dialog_zh_CN.properties @@ -0,0 +1,3 @@ +hello=\u4f60\u597d +you=\u4f60 +thanks=\u8c22\u8c22{0} \ No newline at end of file diff --git a/spring-di/src/main/resources/factorybean-abstract-spring-ctx.xml b/spring-di/src/main/resources/factorybean-abstract-spring-ctx.xml new file mode 100644 index 0000000000..a82b884ee5 --- /dev/null +++ b/spring-di/src/main/resources/factorybean-abstract-spring-ctx.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-di/src/main/resources/factorybean-spring-ctx.xml b/spring-di/src/main/resources/factorybean-spring-ctx.xml new file mode 100644 index 0000000000..3231fda676 --- /dev/null +++ b/spring-di/src/main/resources/factorybean-spring-ctx.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/spring-di/src/main/resources/injectiontypes.xml b/spring-di/src/main/resources/injectiontypes.xml new file mode 100644 index 0000000000..9dad1e300a --- /dev/null +++ b/spring-di/src/main/resources/injectiontypes.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-di/src/main/resources/logback.xml b/spring-di/src/main/resources/logback.xml new file mode 100644 index 0000000000..7d900d8ea8 --- /dev/null +++ b/spring-di/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file diff --git a/spring-di/src/main/resources/setterdi.xml b/spring-di/src/main/resources/setterdi.xml new file mode 100644 index 0000000000..cf3b00d7f5 --- /dev/null +++ b/spring-di/src/main/resources/setterdi.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/spring-core/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java b/spring-di/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java rename to spring-di/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java b/spring-di/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java rename to spring-di/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java b/spring-di/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java rename to spring-di/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/circulardependency/CircularDependencyIntegrationTest.java b/spring-di/src/test/java/com/baeldung/circulardependency/CircularDependencyIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/circulardependency/CircularDependencyIntegrationTest.java rename to spring-di/src/test/java/com/baeldung/circulardependency/CircularDependencyIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/circulardependency/TestConfig.java b/spring-di/src/test/java/com/baeldung/circulardependency/TestConfig.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/circulardependency/TestConfig.java rename to spring-di/src/test/java/com/baeldung/circulardependency/TestConfig.java diff --git a/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java b/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java rename to spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java diff --git a/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java b/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java rename to spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java diff --git a/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java b/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java rename to spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java diff --git a/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectName.java b/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectName.java rename to spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java diff --git a/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java b/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java rename to spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java diff --git a/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectType.java b/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectType.java rename to spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java diff --git a/spring-core/src/test/java/com/baeldung/constructordi/ConstructorDependencyInjectionIntegrationTest.java b/spring-di/src/test/java/com/baeldung/constructordi/ConstructorDependencyInjectionIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/constructordi/ConstructorDependencyInjectionIntegrationTest.java rename to spring-di/src/test/java/com/baeldung/constructordi/ConstructorDependencyInjectionIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/dependencyinjectiontypes/DependencyInjectionIntegrationTest.java b/spring-di/src/test/java/com/baeldung/dependencyinjectiontypes/DependencyInjectionIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/dependencyinjectiontypes/DependencyInjectionIntegrationTest.java rename to spring-di/src/test/java/com/baeldung/dependencyinjectiontypes/DependencyInjectionIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/dependson/config/TestConfig.java b/spring-di/src/test/java/com/baeldung/dependson/config/TestConfig.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/dependson/config/TestConfig.java rename to spring-di/src/test/java/com/baeldung/dependson/config/TestConfig.java diff --git a/spring-core/src/test/java/com/baeldung/dependson/processor/FileProcessorIntegrationTest.java b/spring-di/src/test/java/com/baeldung/dependson/processor/FileProcessorIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/dependson/processor/FileProcessorIntegrationTest.java rename to spring-di/src/test/java/com/baeldung/dependson/processor/FileProcessorIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/di/spring/BeanInjectionIntegrationTest.java b/spring-di/src/test/java/com/baeldung/di/spring/BeanInjectionIntegrationTest.java similarity index 96% rename from spring-core/src/test/java/com/baeldung/di/spring/BeanInjectionIntegrationTest.java rename to spring-di/src/test/java/com/baeldung/di/spring/BeanInjectionIntegrationTest.java index 4bfb3c5de4..b0c566e4d7 100644 --- a/spring-core/src/test/java/com/baeldung/di/spring/BeanInjectionIntegrationTest.java +++ b/spring-di/src/test/java/com/baeldung/di/spring/BeanInjectionIntegrationTest.java @@ -1,31 +1,31 @@ -package com.baeldung.di.spring; - -import static org.junit.Assert.*; -import org.junit.Before; -import org.junit.Test; -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; - -public class BeanInjectionIntegrationTest { - - private ApplicationContext applicationContext; - - @Before - public void setUp() throws Exception { - applicationContext = new ClassPathXmlApplicationContext("com.baeldung.di.spring.xml"); - } - - @Test - public void singletonBean_getBean_returnsSingleInstance() { - final IndexApp indexApp1 = applicationContext.getBean("indexApp", IndexApp.class); - final IndexApp indexApp2 = applicationContext.getBean("indexApp", IndexApp.class); - assertEquals(indexApp1, indexApp2); - } - - @Test - public void getBean_returnsInstance() { - final IndexApp indexApp = applicationContext.getBean("indexApp", IndexApp.class); - assertNotNull(indexApp); - } - -} +package com.baeldung.di.spring; + +import static org.junit.Assert.*; +import org.junit.Before; +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class BeanInjectionIntegrationTest { + + private ApplicationContext applicationContext; + + @Before + public void setUp() throws Exception { + applicationContext = new ClassPathXmlApplicationContext("com.baeldung.di.spring.xml"); + } + + @Test + public void singletonBean_getBean_returnsSingleInstance() { + final IndexApp indexApp1 = applicationContext.getBean("indexApp", IndexApp.class); + final IndexApp indexApp2 = applicationContext.getBean("indexApp", IndexApp.class); + assertEquals(indexApp1, indexApp2); + } + + @Test + public void getBean_returnsInstance() { + final IndexApp indexApp = applicationContext.getBean("indexApp", IndexApp.class); + assertNotNull(indexApp); + } + +} diff --git a/spring-core/src/test/java/com/baeldung/di/spring/SpringUnitTest.java b/spring-di/src/test/java/com/baeldung/di/spring/SpringUnitTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/di/spring/SpringUnitTest.java rename to spring-di/src/test/java/com/baeldung/di/spring/SpringUnitTest.java diff --git a/spring-core/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java b/spring-di/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java rename to spring-di/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java b/spring-di/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java rename to spring-di/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java b/spring-di/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java rename to spring-di/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/methodinjections/StudentIntegrationTest.java b/spring-di/src/test/java/com/baeldung/methodinjections/StudentIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/methodinjections/StudentIntegrationTest.java rename to spring-di/src/test/java/com/baeldung/methodinjections/StudentIntegrationTest.java diff --git a/spring-di/src/test/java/org/baeldung/sample/FooServiceIntegrationTest.java b/spring-di/src/test/java/com/baeldung/sample/FooServiceIntegrationTest.java similarity index 96% rename from spring-di/src/test/java/org/baeldung/sample/FooServiceIntegrationTest.java rename to spring-di/src/test/java/com/baeldung/sample/FooServiceIntegrationTest.java index 6b518395a1..d42b98fc76 100644 --- a/spring-di/src/test/java/org/baeldung/sample/FooServiceIntegrationTest.java +++ b/spring-di/src/test/java/com/baeldung/sample/FooServiceIntegrationTest.java @@ -1,4 +1,4 @@ -package org.baeldung.sample; +package com.baeldung.sample; import org.junit.Assert; import org.junit.Test; diff --git a/spring-di/src/test/resources/beanfactory-example.xml b/spring-di/src/test/resources/beanfactory-example.xml new file mode 100644 index 0000000000..7b3d4f29ed --- /dev/null +++ b/spring-di/src/test/resources/beanfactory-example.xml @@ -0,0 +1,13 @@ + + + + + + + + + + \ No newline at end of file diff --git a/spring-di/src/test/resources/data/employees.dat b/spring-di/src/test/resources/data/employees.dat new file mode 100644 index 0000000000..9c28fdf82f --- /dev/null +++ b/spring-di/src/test/resources/data/employees.dat @@ -0,0 +1 @@ +Joe Employee,Jan Employee,James T. Employee \ No newline at end of file diff --git a/spring-di/src/test/resources/input.txt b/spring-di/src/test/resources/input.txt new file mode 100644 index 0000000000..811232fa1f --- /dev/null +++ b/spring-di/src/test/resources/input.txt @@ -0,0 +1 @@ +This file is merely for testing. \ No newline at end of file diff --git a/spring-di/src/test/resources/output.txt b/spring-di/src/test/resources/output.txt new file mode 100644 index 0000000000..34e1e27d5a --- /dev/null +++ b/spring-di/src/test/resources/output.txt @@ -0,0 +1 @@ +Should be copied to OutputStream. \ No newline at end of file diff --git a/spring-drools/README.md b/spring-drools/README.md index 00b35a4624..3685a399bc 100644 --- a/spring-drools/README.md +++ b/spring-drools/README.md @@ -1,3 +1,7 @@ +## Spring Drools + +This modules contains articles about Spring with Drools + ## Relevant articles: - [Drools Spring Integration](http://www.baeldung.com/drools-spring-integration) diff --git a/spring-ehcache/README.md b/spring-ehcache/README.md index ecf96cd7c7..da7376e476 100644 --- a/spring-ehcache/README.md +++ b/spring-ehcache/README.md @@ -1,7 +1,8 @@ -## Spring Ehcache Example Project +## Spring Ehcache -A simple example of using ehcache with spring-boot. +This module contains articles about Spring with Ehcache ### Relevant Articles: + - [Spring Boot Ehcache Example](https://www.baeldung.com/spring-boot-ehcache) diff --git a/spring-ejb/README.md b/spring-ejb/README.md index 58ccb20e70..f475aafc7f 100644 --- a/spring-ejb/README.md +++ b/spring-ejb/README.md @@ -1,3 +1,7 @@ +## Spring EJB + +This module contains articles about Spring with EJB + ### Relevant Articles - [Guide to EJB Set-up](http://www.baeldung.com/ejb-intro) diff --git a/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-ejb/spring-ejb-client/src/test/java/com/baeldung/SpringContextLiveTest.java similarity index 71% rename from spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextLiveTest.java rename to spring-ejb/spring-ejb-client/src/test/java/com/baeldung/SpringContextLiveTest.java index bbd3b6c2ba..4d6724f10f 100644 --- a/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextLiveTest.java +++ b/spring-ejb/spring-ejb-client/src/test/java/com/baeldung/SpringContextLiveTest.java @@ -1,4 +1,4 @@ -package org.baeldung; +package com.baeldung; import org.junit.Test; import org.junit.runner.RunWith; @@ -7,6 +7,11 @@ import org.springframework.test.context.junit4.SpringRunner; import com.baeldung.springejbclient.SpringEjbClientApplication; +/** + * This Live Test requires: + * * run the `spring-ejb-remote` module with the following command: `mvn clean package cargo:run -Pwildfly-standalone` + * + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = SpringEjbClientApplication.class) public class SpringContextLiveTest { diff --git a/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java deleted file mode 100644 index 4d2d83646d..0000000000 --- a/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import com.baeldung.springejbclient.SpringEjbClientApplication; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = SpringEjbClientApplication.class) -public class SpringContextIntegrationTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-ejb/spring-ejb-remote/pom.xml b/spring-ejb/spring-ejb-remote/pom.xml index 4f4ddb0b54..4a365180f2 100644 --- a/spring-ejb/spring-ejb-remote/pom.xml +++ b/spring-ejb/spring-ejb-remote/pom.xml @@ -1,11 +1,12 @@ - 4.0.0 spring-ejb-remote - spring-ejb-remote + spring-ejb-remote ejb - + com.baeldung.spring.ejb spring-ejb @@ -46,7 +47,7 @@ wildfly10x - http://download.jboss.org/wildfly/12.0.0.Final/wildfly-12.0.0.Final.zip + https://download.jboss.org/wildfly/12.0.0.Final/wildfly-12.0.0.Final.zip diff --git a/spring-exceptions/README.md b/spring-exceptions/README.md index b9472c4cca..026e8485c8 100644 --- a/spring-exceptions/README.md +++ b/spring-exceptions/README.md @@ -1,10 +1,7 @@ -========= +## Spring `Exception`s -## Spring Exceptions Example Project +This module contains articles about Spring `Exception`s -This project is used to replicate Spring Exceptions only. - - ### Relevant articles: - [Spring BeanCreationException](http://www.baeldung.com/spring-beancreationexception) - [Spring DataIntegrityViolationException](http://www.baeldung.com/spring-dataIntegrityviolationexception) diff --git a/spring-freemarker/README.md b/spring-freemarker/README.md index bd939d11e9..ce8fb78f4d 100644 --- a/spring-freemarker/README.md +++ b/spring-freemarker/README.md @@ -1,7 +1,6 @@ -========= - -## Using FreeMarker in Spring MVC +## Spring FreeMarker +This module contains articles about Spring with FreeMarker ### Relevant Articles: - [Introduction to Using FreeMarker in Spring MVC](http://www.baeldung.com/freemarker-in-spring-mvc-tutorial) diff --git a/spring-groovy/README.md b/spring-groovy/README.md index 36404230a9..c3bb5636ba 100644 --- a/spring-groovy/README.md +++ b/spring-groovy/README.md @@ -1,3 +1,7 @@ +## Spring Groovy + +This module contains articles about Spring with Groovy + ## Relevant Articles: - [Groovy Bean Definitions](https://www.baeldung.com/spring-groovy-beans) diff --git a/spring-integration/README.md b/spring-integration/README.md index 244cf1fb14..f2fbfe48b5 100644 --- a/spring-integration/README.md +++ b/spring-integration/README.md @@ -1,3 +1,7 @@ +## Spring Integration + +This module contains articles about Spring Integration + ### Relevant Articles: - [Introduction to Spring Integration](http://www.baeldung.com/spring-integration) - [Security In Spring Integration](http://www.baeldung.com/spring-integration-security) diff --git a/spring-jenkins-pipeline/README.md b/spring-jenkins-pipeline/README.md index 8c10e85da2..0086ae256d 100644 --- a/spring-jenkins-pipeline/README.md +++ b/spring-jenkins-pipeline/README.md @@ -1,5 +1,12 @@ -BASIC CRUD API with Spring Boot -================================ +## Spring Jenkins + +This module contains articles about Spring with Jenkins + +### Relevant articles + +- [Intro to Jenkins 2 and the Power of Pipelines](http://www.baeldung.com/jenkins-pipelines) + +## Basic CRUD API with Spring Boot This is the code of a simple API for some CRUD operations build using Spring Boot. @@ -21,6 +28,4 @@ Now with default configurations it will be available at: [http://localhost:8080] Enjoy it :) -### Relevant articles -- [Intro to Jenkins 2 and the Power of Pipelines](http://www.baeldung.com/jenkins-pipelines) diff --git a/spring-jenkins-pipeline/src/test/resources/application.properties b/spring-jenkins-pipeline/src/test/resources/application.properties new file mode 100644 index 0000000000..4ee830556a --- /dev/null +++ b/spring-jenkins-pipeline/src/test/resources/application.properties @@ -0,0 +1,2 @@ +#To use a randomly allocated free port during tests to avoid port conflict across tests +spring.data.mongodb.port=0 diff --git a/spring-jersey/README.md b/spring-jersey/README.md index 37928620d3..6adc5f1375 100644 --- a/spring-jersey/README.md +++ b/spring-jersey/README.md @@ -1,4 +1,6 @@ -========= +## Spring Jersey + +This module contains articles about Spring with Jersey ## REST API with Jersey & Spring Example Project - [REST API with Jersey and Spring](http://www.baeldung.com/jersey-rest-api-with-spring) diff --git a/spring-jms/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-jms/src/test/java/org/baeldung/SpringContextIntegrationTest.java index e13809f571..483ffec208 100644 --- a/spring-jms/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ b/spring-jms/src/test/java/org/baeldung/SpringContextIntegrationTest.java @@ -6,7 +6,7 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations = {"classpath:applicationContext.xml", "classpath:EmbeddedActiveMQ.xml"}) +@ContextConfiguration(locations = { "classpath:applicationContext.xml" }) public class SpringContextIntegrationTest { @Test diff --git a/spring-jms/src/test/java/org/baeldung/SpringContextTest.java b/spring-jms/src/test/java/org/baeldung/SpringContextTest.java index e89faeebb7..11c9d9bca6 100644 --- a/spring-jms/src/test/java/org/baeldung/SpringContextTest.java +++ b/spring-jms/src/test/java/org/baeldung/SpringContextTest.java @@ -6,7 +6,7 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations = {"classpath:applicationContext.xml", "classpath:EmbeddedActiveMQ.xml"}) +@ContextConfiguration(locations = { "classpath:applicationContext.xml" }) public class SpringContextTest { @Test diff --git a/spring-jooq/src/test/resources/application.properties b/spring-jooq/src/test/resources/application.properties new file mode 100644 index 0000000000..ef37552bf0 --- /dev/null +++ b/spring-jooq/src/test/resources/application.properties @@ -0,0 +1,4 @@ +spring.datasource.url=jdbc:h2:~/jooq;DB_CLOSE_ON_EXIT=FALSE;AUTO_SERVER=TRUE +spring.datasource.username=sa +spring.datasource.password= +spring.jpa.hibernate.ddl-auto=update diff --git a/spring-mvc-simple-2/pom.xml b/spring-mvc-simple-2/pom.xml index 74302cff78..ca911b2719 100644 --- a/spring-mvc-simple-2/pom.xml +++ b/spring-mvc-simple-2/pom.xml @@ -18,6 +18,11 @@ org.springframework.boot spring-boot-starter-web
+ + org.springframework.boot + spring-boot-starter-test + test +
diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/MyMessageInterpolator.java b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/MyMessageInterpolator.java new file mode 100644 index 0000000000..efa3d62b88 --- /dev/null +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/MyMessageInterpolator.java @@ -0,0 +1,29 @@ +package com.baeldung.interpolation; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import javax.validation.MessageInterpolator; +import java.util.Locale; + +public class MyMessageInterpolator implements MessageInterpolator { + + private static Logger logger = LoggerFactory.getLogger(MyMessageInterpolator.class); + + private final MessageInterpolator defaultInterpolator; + + public MyMessageInterpolator(MessageInterpolator interpolator) { + this.defaultInterpolator = interpolator; + } + + @Override + public String interpolate(String messageTemplate, Context context) { + messageTemplate = messageTemplate.toUpperCase(); + return defaultInterpolator.interpolate(messageTemplate, context, Locale.getDefault()); + } + + @Override + public String interpolate(String messageTemplate, Context context, Locale locale) { + messageTemplate = messageTemplate.toUpperCase(); + return defaultInterpolator.interpolate(messageTemplate, context, locale); + } +} diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/NotNullRequest.java b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/NotNullRequest.java new file mode 100644 index 0000000000..9a2b00be8f --- /dev/null +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/NotNullRequest.java @@ -0,0 +1,17 @@ +package com.baeldung.interpolation; + +import javax.validation.constraints.NotNull; + +public class NotNullRequest { + + @NotNull(message = "stringValue has to be present") + private String stringValue; + + public String getStringValue() { + return stringValue; + } + + public void setStringValue(String stringValue) { + this.stringValue = stringValue; + } +} diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationController.java b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationController.java new file mode 100644 index 0000000000..3fed170fdf --- /dev/null +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationController.java @@ -0,0 +1,15 @@ +package com.baeldung.interpolation; + +import javax.validation.Valid; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class ValidationController { + + @PostMapping("/test-not-null") + public void testNotNull(@Valid @RequestBody NotNullRequest request) { + + } +} diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java new file mode 100644 index 0000000000..6c9b924200 --- /dev/null +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/interpolation/ValidationExamples.java @@ -0,0 +1,31 @@ +package com.baeldung.interpolation; + +import java.util.Formatter; +import javax.validation.constraints.Size; +import javax.validation.constraints.Min; +import javax.validation.constraints.DecimalMin; + +public class ValidationExamples { + + private static final Formatter formatter = new Formatter(); + + @Size( + min = 5, + max = 14, + message = "The author email '${validatedValue}' must be between {min} and {max} characters long" + ) + private String authorEmail; + + @Min( + value = 1, + message = "There must be at least {value} test{value > 1 ? 's' : ''} in the test case" + ) + private int testCount; + + @DecimalMin( + value = "50", + message = "The code coverage ${formatter.format('%1$.2f', validatedValue)} must be higher than {value}%" + ) + private double codeCoverage; + +} diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/spring/slash/Application.java b/spring-mvc-simple-2/src/main/java/com/baeldung/spring/slash/Application.java new file mode 100644 index 0000000000..7db6ac3755 --- /dev/null +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/spring/slash/Application.java @@ -0,0 +1,14 @@ +package com.baeldung.spring.slash; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@SpringBootApplication +public class Application implements WebMvcConfigurer { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/spring/slash/SlashParsingController.java b/spring-mvc-simple-2/src/main/java/com/baeldung/spring/slash/SlashParsingController.java new file mode 100644 index 0000000000..635587ee5b --- /dev/null +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/spring/slash/SlashParsingController.java @@ -0,0 +1,31 @@ +package com.baeldung.spring.slash; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("slash") +public class SlashParsingController { + + @GetMapping("mypaths/{anything}") + public String pathVariable(@PathVariable("anything") String anything) { + return anything; + } + + @GetMapping("all/**") + public String allDirectories(HttpServletRequest request) { + return request.getRequestURI() + .split(request.getContextPath() + "/all/")[1]; + } + + @GetMapping("all") + public String queryParameter(@RequestParam("param") String param) { + return param; + } + +} diff --git a/spring-mvc-simple-2/src/test/java/com/baeldung/spring/slash/SlashParsingControllerIntTest.java b/spring-mvc-simple-2/src/test/java/com/baeldung/spring/slash/SlashParsingControllerIntTest.java new file mode 100644 index 0000000000..d81b34f7bf --- /dev/null +++ b/spring-mvc-simple-2/src/test/java/com/baeldung/spring/slash/SlashParsingControllerIntTest.java @@ -0,0 +1,87 @@ +package com.baeldung.spring.slash; + +import static org.junit.Assert.assertEquals; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import java.net.URI; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +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.junit.jupiter.SpringExtension; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.MvcResult; + +@AutoConfigureMockMvc +@ExtendWith(SpringExtension.class) +@SpringBootTest +public class SlashParsingControllerIntTest { + + @Autowired + private MockMvc mockMvc; + + @Test + public void whenUsingPathVariablemWithoutSlashes_thenStatusOk() throws Exception { + final String stringWithoutSlashes = "noslash"; + + MvcResult mvcResult = mockMvc.perform(get("/slash/mypaths/" + stringWithoutSlashes)) + .andExpect(status().isOk()) + .andReturn(); + + assertEquals(stringWithoutSlashes, mvcResult.getResponse() + .getContentAsString()); + } + + @Test + public void whenUsingPathVariableWithSlashes_thenStatusNotFound() throws Exception { + final String stringWithSlashes = "url/with/slashes"; + + mockMvc.perform(get("/slash/mypaths/" + stringWithSlashes)) + .andExpect(status().isNotFound()); + } + + @Test + public void givenAllFallbackEndpoint_whenUsingPathWithSlashes_thenStatusOk() throws Exception { + final String stringWithSlashes = "url/for/testing/purposes"; + + MvcResult mvcResult = mockMvc.perform(get("/slash/all/" + stringWithSlashes)) + .andExpect(status().isOk()) + .andReturn(); + + assertEquals(stringWithSlashes, mvcResult.getResponse() + .getContentAsString()); + } + + @Test + public void givenAllFallbackEndpoint_whenUsingConsecutiveSlashes_thenPathNormalized() throws Exception { + final String stringWithSlashes = "http://myurl.com"; + + MvcResult mvcResult = mockMvc.perform(get("/slash/all/" + stringWithSlashes)) + .andExpect(status().isOk()) + .andReturn(); + + String stringWithSlashesNormalized = URI.create("/slash/all/" + stringWithSlashes) + .normalize() + .toString() + .split("/slash/all/")[1]; + + assertEquals(stringWithSlashesNormalized, mvcResult.getResponse() + .getContentAsString()); + } + + @Test + public void whenUsingSlashesInQueryParam_thenParameterAccepted() throws Exception { + final String stringWithSlashes = "url/for////testing/purposes"; + + MvcResult mvcResult = mockMvc.perform(get("/slash/all").param("param", stringWithSlashes)) + .andExpect(status().isOk()) + .andReturn(); + + assertEquals(stringWithSlashes, mvcResult.getResponse() + .getContentAsString()); + } + +} diff --git a/spring-reactive-kotlin/README.md b/spring-reactive-kotlin/README.md index cf5debc617..46f4b580fd 100644 --- a/spring-reactive-kotlin/README.md +++ b/spring-reactive-kotlin/README.md @@ -1,2 +1,6 @@ +## Spring Reactive Kotlin + +This module contains articles about reactive Kotlin + ### Relevant Articles: - [Spring Webflux with Kotlin](http://www.baeldung.com/spring-webflux-kotlin) diff --git a/spring-reactor/README.md b/spring-reactor/README.md index 0da2d6be51..e7d7eb927d 100644 --- a/spring-reactor/README.md +++ b/spring-reactor/README.md @@ -1,3 +1,7 @@ +## Spring Reactor + +This module contains articles about Spring Reactor + ## Relevant articles: - [Introduction to Spring Reactor](http://www.baeldung.com/spring-reactor) diff --git a/spring-remoting/README.md b/spring-remoting/README.md index 0898b9b002..247aa52db2 100644 --- a/spring-remoting/README.md +++ b/spring-remoting/README.md @@ -1,4 +1,6 @@ -## Spring Remoting Tutorials +## Spring Remoting + +This module contains articles about Spring Remoting ### Relevant Articles - [Intro to Spring Remoting with HTTP Invokers](http://www.baeldung.com/spring-remoting-http-invoker) diff --git a/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/com/baeldung/SpringContextLiveTest.java b/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/com/baeldung/SpringContextLiveTest.java new file mode 100644 index 0000000000..4904873be2 --- /dev/null +++ b/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/com/baeldung/SpringContextLiveTest.java @@ -0,0 +1,23 @@ +package com.baeldung; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import com.baeldung.server.JmsServer; + +/** + * This Live Test requires: + * * the `com.baeldung:remoting-http-api:jar:1.0-SNAPSHOT` artifact accessible. For that we can run `mvn clean install` in the 'spring-remoting/remoting-http/remoting-http-api' module. + * * an ActiveMQ instance running (e.g. `docker run -p 61616:61616 -p 8161:8161 --name bael-activemq rmohr/activemq`) + * + */ +@SpringBootTest(classes = JmsServer.class) +@RunWith(SpringRunner.class) +public class SpringContextLiveTest { + + @Test + public void whenSpringContextIsBootstrapped_thenNoExceptions() { + } +} diff --git a/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/org/baeldung/SpringContextManualTest.java b/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/org/baeldung/SpringContextManualTest.java deleted file mode 100644 index b806f21c27..0000000000 --- a/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/org/baeldung/SpringContextManualTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import com.baeldung.server.JmsServer; - -@SpringBootTest(classes = JmsServer.class) -@RunWith(SpringRunner.class) -public class SpringContextManualTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/com/baeldung/SpringContextLiveTest.java similarity index 56% rename from spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/org/baeldung/SpringContextLiveTest.java rename to spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/com/baeldung/SpringContextLiveTest.java index 3bace4cd1e..73f7592dcc 100644 --- a/spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/org/baeldung/SpringContextLiveTest.java +++ b/spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/com/baeldung/SpringContextLiveTest.java @@ -1,4 +1,4 @@ -package org.baeldung; +package com.baeldung; import org.junit.Test; import org.junit.runner.RunWith; @@ -7,6 +7,12 @@ import org.springframework.test.context.junit4.SpringRunner; import com.baeldung.client.RmiClient; +/** + * This Live Test requires: + * * the `com.baeldung:remoting-http-api:jar:1.0-SNAPSHOT` artifact accessible. For that we can run `mvn clean install` in the 'spring-remoting/remoting-http/remoting-http-api' module. + * * the 'spring-remoting\remoting-rmi\remoting-rmi-server' service running + * + */ @SpringBootTest(classes = RmiClient.class) @RunWith(SpringRunner.class) public class SpringContextLiveTest { diff --git a/spring-rest-angular/README.md b/spring-rest-angular/README.md index d2c2879649..5cd2570152 100644 --- a/spring-rest-angular/README.md +++ b/spring-rest-angular/README.md @@ -1,4 +1,6 @@ -## Spring REST Angular Example Project +## Spring REST Angular + +This module contains articles about REST APIs with Spring and Angular ### Relevant Articles: diff --git a/spring-rest-angular/src/main/java/org/baeldung/web/main/PersistenceConfig.java b/spring-rest-angular/src/main/java/org/baeldung/web/main/PersistenceConfig.java index e0f6002733..0fc6b74892 100644 --- a/spring-rest-angular/src/main/java/org/baeldung/web/main/PersistenceConfig.java +++ b/spring-rest-angular/src/main/java/org/baeldung/web/main/PersistenceConfig.java @@ -26,7 +26,7 @@ public class PersistenceConfig { @Bean public DataSource dataSource() { EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); - EmbeddedDatabase db = builder.setType(EmbeddedDatabaseType.HSQL).addScript("db/sql/data.sql").build(); + EmbeddedDatabase db = builder.setType(EmbeddedDatabaseType.HSQL).build(); return db; } diff --git a/spring-rest-angular/src/main/resources/application.properties b/spring-rest-angular/src/main/resources/application.properties index 2571d286a3..cfa27938c9 100644 --- a/spring-rest-angular/src/main/resources/application.properties +++ b/spring-rest-angular/src/main/resources/application.properties @@ -1,4 +1,5 @@ server.servlet.contextPath=/ spring.h2.console.enabled=true logging.level.org.hibernate.SQL=info -spring.jpa.hibernate.ddl-auto=none \ No newline at end of file +spring.jpa.generate-ddl=true +spring.jpa.hibernate.ddl-auto=create \ No newline at end of file diff --git a/spring-rest-angular/src/main/resources/db/sql/data.sql b/spring-rest-angular/src/main/resources/data.sql similarity index 92% rename from spring-rest-angular/src/main/resources/db/sql/data.sql rename to spring-rest-angular/src/main/resources/data.sql index 418381a681..71e54b29ce 100644 --- a/spring-rest-angular/src/main/resources/db/sql/data.sql +++ b/spring-rest-angular/src/main/resources/data.sql @@ -1,10 +1,3 @@ -CREATE TABLE student ( - id INTEGER PRIMARY KEY, - name VARCHAR(30), - gender VARCHAR(10), - age INTEGER -); - INSERT INTO student (id,name,gender,age) VALUES (1,'Bryan', 'Male',20); INSERT INTO student (id,name,gender,age) diff --git a/spring-rest-compress/README.md b/spring-rest-compress/README.md index 238c28e4b5..ce627d8595 100644 --- a/spring-rest-compress/README.md +++ b/spring-rest-compress/README.md @@ -1,5 +1,6 @@ -========================================================================= -## How to compress requests using the Spring RestTemplate Example Project +## Spring REST Compress + +This module contains articles about request compression with Spring ### Relevant Articles: -- [How to compress requests using the Spring RestTemplate]() +- [How to compress requests using the Spring RestTemplate](https://www.baeldung.com/spring-resttemplate-compressing-requests) diff --git a/spring-rest-full/README.md b/spring-rest-full/README.md index b7b006d75e..a0e6e74179 100644 --- a/spring-rest-full/README.md +++ b/spring-rest-full/README.md @@ -1,8 +1,9 @@ -========= +## Spring REST Full -## REST Example Project with Spring +This module contains articles about REST APIs with Spring ### Courses + The "REST With Spring" Classes: http://bit.ly/restwithspring The "Learn Spring Security" Classes: http://github.learnspringsecurity.com diff --git a/spring-rest-hal-browser/README.md b/spring-rest-hal-browser/README.md index d9760c8295..027937f116 100644 --- a/spring-rest-hal-browser/README.md +++ b/spring-rest-hal-browser/README.md @@ -1,2 +1,6 @@ +## Spring REST HAL Browser + +This module contains articles about Spring REST with the HAL browser + ### Relevant Articles: - [Spring REST and HAL Browser](http://www.baeldung.com/spring-rest-hal) diff --git a/spring-rest-query-language/README.md b/spring-rest-query-language/README.md index 7677f96379..383cecec36 100644 --- a/spring-rest-query-language/README.md +++ b/spring-rest-query-language/README.md @@ -1,8 +1,9 @@ -========= +## Spring REST Query Language -## REST Example Project Query Language +This module contains articles about the REST query language with Spring ### Courses + The "REST With Spring" Classes: http://bit.ly/restwithspring The "Learn Spring Security" Classes: http://github.learnspringsecurity.com @@ -16,15 +17,11 @@ The "Learn Spring Security" Classes: http://github.learnspringsecurity.com - [REST Query Language with RSQL](http://www.baeldung.com/rest-api-search-language-rsql-fiql) - [REST Query Language – Implementing OR Operation](http://www.baeldung.com/rest-api-query-search-or-operation) - - - ### Build the Project ``` mvn clean install ``` - ### Set up MySQL ``` mysql -u root -p diff --git a/spring-rest-query-language/src/test/java/com/baeldung/SpringContextTest.java b/spring-rest-query-language/src/test/java/com/baeldung/SpringContextTest.java index 57886a232a..de83fb663a 100644 --- a/spring-rest-query-language/src/test/java/com/baeldung/SpringContextTest.java +++ b/spring-rest-query-language/src/test/java/com/baeldung/SpringContextTest.java @@ -7,6 +7,10 @@ import org.springframework.test.context.junit4.SpringRunner; import com.baeldung.spring.Application; +/** + * Note: In the IDE, remember to generate query type classes before running the Integration Test (e.g. in Eclipse right-click on the project > Run As > Maven generate sources) + * + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) public class SpringContextTest { diff --git a/spring-rest-shell/README.md b/spring-rest-shell/README.md index b250f06a4b..0b126e6b1c 100644 --- a/spring-rest-shell/README.md +++ b/spring-rest-shell/README.md @@ -1,4 +1,6 @@ -## Spring REST Shell Project +## Spring REST Shell + +This module contains articles about Spring REST Shell ### Relevant Articles diff --git a/spring-rest-simple/README.md b/spring-rest-simple/README.md index c01f27bd98..d60f57b227 100644 --- a/spring-rest-simple/README.md +++ b/spring-rest-simple/README.md @@ -1,3 +1,7 @@ +## Spring REST Simple + +This module contains articles about REST APIs in Spring + ## Relevant articles: - [Guide to UriComponentsBuilder in Spring](http://www.baeldung.com/spring-uricomponentsbuilder) diff --git a/spring-rest-simple/src/main/java/com/baeldung/Application.java b/spring-rest-simple/src/main/java/com/baeldung/Application.java index dc6bfcb970..f4147568ce 100644 --- a/spring-rest-simple/src/main/java/com/baeldung/Application.java +++ b/spring-rest-simple/src/main/java/com/baeldung/Application.java @@ -4,11 +4,9 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; -import org.springframework.context.annotation.ComponentScan; @EnableAutoConfiguration @SpringBootApplication -@ComponentScan("com.baeldung.cors") public class Application extends SpringBootServletInitializer { public static void main(final String[] args) { diff --git a/spring-rest-simple/src/main/java/com/baeldung/config/MvcConfig.java b/spring-rest-simple/src/main/java/com/baeldung/config/MvcConfig.java index 48b627a344..246049b722 100644 --- a/spring-rest-simple/src/main/java/com/baeldung/config/MvcConfig.java +++ b/spring-rest-simple/src/main/java/com/baeldung/config/MvcConfig.java @@ -2,6 +2,7 @@ package com.baeldung.config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import org.springframework.format.FormatterRegistry; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter; @@ -17,6 +18,7 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import com.baeldung.config.converter.KryoHttpMessageConverter; +import com.baeldung.config.converter.StringToEnumConverter; import java.text.SimpleDateFormat; import java.util.List; @@ -71,4 +73,9 @@ public class MvcConfig implements WebMvcConfigurer { public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**"); } + + @Override + public void addFormatters(FormatterRegistry registry) { + registry.addConverter(new StringToEnumConverter()); + } } diff --git a/spring-rest-simple/src/main/java/com/baeldung/config/converter/StringToEnumConverter.java b/spring-rest-simple/src/main/java/com/baeldung/config/converter/StringToEnumConverter.java new file mode 100644 index 0000000000..349ee5a796 --- /dev/null +++ b/spring-rest-simple/src/main/java/com/baeldung/config/converter/StringToEnumConverter.java @@ -0,0 +1,20 @@ +package com.baeldung.config.converter; + +import org.springframework.core.convert.converter.Converter; +import org.springframework.stereotype.Component; + +import com.baeldung.model.Modes; + +@Component +public class StringToEnumConverter implements Converter { + @Override + public Modes convert(String source) { + // Remove the try-catch block if we want to handle the exception globally in GlobalControllerExceptionHandler + try { + return Modes.valueOf(source.toUpperCase()); + } catch (IllegalArgumentException e) { + return null; + } + + } +} diff --git a/spring-rest-simple/src/main/java/com/baeldung/cors/EnumController.java b/spring-rest-simple/src/main/java/com/baeldung/cors/EnumController.java new file mode 100644 index 0000000000..34ce4d3927 --- /dev/null +++ b/spring-rest-simple/src/main/java/com/baeldung/cors/EnumController.java @@ -0,0 +1,26 @@ +package com.baeldung.cors; + +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.model.Modes; + +@CrossOrigin(maxAge = 3600) +@RestController +@RequestMapping("/enums") +public class EnumController { + + @GetMapping("/mode2str") + public String getStringToMode(@RequestParam("mode") Modes mode) { + return "good"; + } + + @GetMapping("/findbymode/{mode}") + public String findByEnum(@PathVariable Modes mode) { + return "good"; + } +} \ No newline at end of file diff --git a/spring-rest-simple/src/main/java/com/baeldung/exceptions/GlobalControllerExceptionHandler.java b/spring-rest-simple/src/main/java/com/baeldung/exceptions/GlobalControllerExceptionHandler.java new file mode 100644 index 0000000000..78fbcf97dd --- /dev/null +++ b/spring-rest-simple/src/main/java/com/baeldung/exceptions/GlobalControllerExceptionHandler.java @@ -0,0 +1,16 @@ +package com.baeldung.exceptions; + +import org.springframework.core.convert.ConversionFailedException; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; + +@ControllerAdvice +public class GlobalControllerExceptionHandler { + @ExceptionHandler(ConversionFailedException.class) + public ResponseEntity handleConflict(RuntimeException ex) { + // Remove the try-catch block in the StringToEnumConverter if we want to handle the exception here + return new ResponseEntity<>(ex.getMessage(), HttpStatus.BAD_REQUEST); + } +} diff --git a/spring-rest-simple/src/main/java/com/baeldung/model/Modes.java b/spring-rest-simple/src/main/java/com/baeldung/model/Modes.java new file mode 100644 index 0000000000..d3a1ab4a61 --- /dev/null +++ b/spring-rest-simple/src/main/java/com/baeldung/model/Modes.java @@ -0,0 +1,5 @@ +package com.baeldung.model; + +public enum Modes { + ALPHA, BETA; +} diff --git a/spring-rest-simple/src/main/java/com/baeldung/requestmapping/FooMappingExamplesController.java b/spring-rest-simple/src/main/java/com/baeldung/requestmapping/FooMappingExamplesController.java index 2c11e36141..90012ed054 100644 --- a/spring-rest-simple/src/main/java/com/baeldung/requestmapping/FooMappingExamplesController.java +++ b/spring-rest-simple/src/main/java/com/baeldung/requestmapping/FooMappingExamplesController.java @@ -1,6 +1,8 @@ package com.baeldung.requestmapping; +import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -97,5 +99,29 @@ public class FooMappingExamplesController { public String putAndPostFoos() { return "Advanced - PUT and POST within single method"; } + + // --- Ambiguous Mapping + + @GetMapping(value = "foos/duplicate" ) + public String duplicate() { + return "Duplicate"; + } + + // uncomment for exception of type java.lang.IllegalStateException: Ambiguous mapping -} + // @GetMapping(value = "foos/duplicate" ) + // public String duplicateEx() { + // return "Duplicate"; + // } + + @GetMapping(value = "foos/duplicate/xml", produces = MediaType.APPLICATION_XML_VALUE) + public String duplicateXml() { + return "Duplicate Xml"; + } + + @GetMapping(value = "foos/duplicate/json", produces = MediaType.APPLICATION_JSON_VALUE) + public String duplicateJson() { + return "Duplicate Json"; + } + +} \ No newline at end of file diff --git a/spring-rest/README.md b/spring-rest/README.md index 54b47604d4..1d713c05c0 100644 --- a/spring-rest/README.md +++ b/spring-rest/README.md @@ -1,4 +1,6 @@ -## Spring REST Example Project +## Spring REST + +This module contains articles about REST APIs with Spring ### The Course The "REST With Spring" Classes: http://bit.ly/restwithspring diff --git a/spring-rest/pom.xml b/spring-rest/pom.xml index 670bac9805..555eafe40a 100644 --- a/spring-rest/pom.xml +++ b/spring-rest/pom.xml @@ -139,7 +139,7 @@ commons-io commons-io - 2.4 + ${commons-io.version} au.com.dius diff --git a/spring-rest/src/main/java/com/baeldung/custom/CustomApplication.java b/spring-rest/src/main/java/com/baeldung/changeport/CustomApplication.java similarity index 93% rename from spring-rest/src/main/java/com/baeldung/custom/CustomApplication.java rename to spring-rest/src/main/java/com/baeldung/changeport/CustomApplication.java index 75f4d714e2..3fce0f1289 100644 --- a/spring-rest/src/main/java/com/baeldung/custom/CustomApplication.java +++ b/spring-rest/src/main/java/com/baeldung/changeport/CustomApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.custom; +package com.baeldung.changeport; import java.util.Collections; diff --git a/spring-rest/src/main/java/com/baeldung/custom/ServerPortCustomizer.java b/spring-rest/src/main/java/com/baeldung/changeport/ServerPortCustomizer.java similarity index 92% rename from spring-rest/src/main/java/com/baeldung/custom/ServerPortCustomizer.java rename to spring-rest/src/main/java/com/baeldung/changeport/ServerPortCustomizer.java index 978e7c8a82..f3610aeac6 100644 --- a/spring-rest/src/main/java/com/baeldung/custom/ServerPortCustomizer.java +++ b/spring-rest/src/main/java/com/baeldung/changeport/ServerPortCustomizer.java @@ -1,4 +1,4 @@ -package com.baeldung.custom; +package com.baeldung.changeport; import org.springframework.boot.web.server.ConfigurableWebServerFactory; import org.springframework.boot.web.server.WebServerFactoryCustomizer; diff --git a/spring-rest/src/test/java/com/baeldung/SpringContextIntegrationTest.java b/spring-rest/src/test/java/com/baeldung/SpringContextIntegrationTest.java index f04106c1e1..3c2cde4268 100644 --- a/spring-rest/src/test/java/com/baeldung/SpringContextIntegrationTest.java +++ b/spring-rest/src/test/java/com/baeldung/SpringContextIntegrationTest.java @@ -5,7 +5,7 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.custom.CustomApplication; +import com.baeldung.changeport.CustomApplication; import com.baeldung.produceimage.ImageApplication; import com.baeldung.propertyeditor.PropertyEditorApplication; import com.baeldung.responseheaders.ResponseHeadersApplication; diff --git a/spring-rest/src/test/java/com/baeldung/SpringContextTest.java b/spring-rest/src/test/java/com/baeldung/SpringContextTest.java index 4b2024e207..0f39fc3983 100644 --- a/spring-rest/src/test/java/com/baeldung/SpringContextTest.java +++ b/spring-rest/src/test/java/com/baeldung/SpringContextTest.java @@ -5,7 +5,7 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.custom.CustomApplication; +import com.baeldung.changeport.CustomApplication; import com.baeldung.produceimage.ImageApplication; import com.baeldung.propertyeditor.PropertyEditorApplication; import com.baeldung.responseheaders.ResponseHeadersApplication; diff --git a/spring-resttemplate/README.md b/spring-resttemplate/README.md index 97a89ff7aa..9b75e1aa81 100644 --- a/spring-resttemplate/README.md +++ b/spring-resttemplate/README.md @@ -1,4 +1,6 @@ -## Spring REST Example Project +## Spring RestTemplate + +This module contains articles about Spring RestTemplate ### The Course The "REST With Spring" Classes: http://bit.ly/restwithspring diff --git a/spring-resttemplate/src/test/java/org/baeldung/resttemplate/PersonAPILiveTest.java b/spring-resttemplate/src/test/java/org/baeldung/resttemplate/postjson/PersonAPILiveTest.java similarity index 96% rename from spring-resttemplate/src/test/java/org/baeldung/resttemplate/PersonAPILiveTest.java rename to spring-resttemplate/src/test/java/org/baeldung/resttemplate/postjson/PersonAPILiveTest.java index de18f6db09..1347cb0c7a 100644 --- a/spring-resttemplate/src/test/java/org/baeldung/resttemplate/PersonAPILiveTest.java +++ b/spring-resttemplate/src/test/java/org/baeldung/resttemplate/postjson/PersonAPILiveTest.java @@ -1,10 +1,11 @@ -package org.baeldung.resttemplate; +package org.baeldung.resttemplate.postjson; import static org.junit.Assert.assertNotNull; import java.io.IOException; import java.net.URI; +import org.baeldung.resttemplate.RestTemplateConfigurationApplication; import org.baeldung.resttemplate.web.dto.Person; import org.json.JSONException; import org.json.JSONObject; diff --git a/spring-roo/README.md b/spring-roo/README.md index b63b6f35d4..5a8ce6e30f 100644 --- a/spring-roo/README.md +++ b/spring-roo/README.md @@ -1,2 +1,6 @@ +## Spring Roo + +This module contains articles about Spring Roo + ### Relevant Articles: [Quick Guide to Spring Roo](http://www.baeldung.com/spring-roo) diff --git a/spring-security-acl/README.md b/spring-security-acl/README.md index fb3e8160ab..2f95793f8d 100644 --- a/spring-security-acl/README.md +++ b/spring-security-acl/README.md @@ -1,4 +1,6 @@ -## Spring Security ACL Project +## Spring Security ACL + +This module contains articles about Spring Security ACL ### Relevant Articles - [Introduction to Spring Security ACL](http://www.baeldung.com/spring-security-acl) diff --git a/spring-security-angular/README.md b/spring-security-angular/README.md index 80312c4bab..2b376a539f 100644 --- a/spring-security-angular/README.md +++ b/spring-security-angular/README.md @@ -1,2 +1,6 @@ +## Spring Security Angular + +This module contains articles about Spring Security with Angular + ### Relevant Articles: - [Spring Security Login Page with Angular](https://www.baeldung.com/spring-security-login-angular) diff --git a/spring-security-cache-control/README.md b/spring-security-cache-control/README.md index 4b0bab72cb..fc5bdda1f6 100644 --- a/spring-security-cache-control/README.md +++ b/spring-security-cache-control/README.md @@ -1,6 +1,6 @@ -========= - ## Spring Security Cache Control +This module contains articles about cache control with Spring Security + ### Relevant Articles: - [Spring Security – Cache Control Headers](http://www.baeldung.com/spring-security-cache-control-headers) diff --git a/spring-security-core/README.md b/spring-security-core/README.md index bc9a8afed7..3dfcb276d7 100644 --- a/spring-security-core/README.md +++ b/spring-security-core/README.md @@ -1,13 +1,17 @@ -## @PreFilter and @PostFilter annotations +## Spring Security Core -### Build the Project ### - -``` -mvn clean install -``` +This module contains articles about core Spring Security ### Relevant Articles: - [Spring Security – @PreFilter and @PostFilter](http://www.baeldung.com/spring-security-prefilter-postfilter) - [Spring Boot Authentication Auditing Support](http://www.baeldung.com/spring-boot-authentication-audit) - [Introduction to Spring Method Security](http://www.baeldung.com/spring-security-method-security) -- [Overview and Need for DelegatingFilterProxy in Spring](https://www.baeldung.com/spring-delegating-filter-proxy) \ No newline at end of file +- [Overview and Need for DelegatingFilterProxy in Spring](https://www.baeldung.com/spring-delegating-filter-proxy) + +### @PreFilter and @PostFilter annotations + +#### Build the Project + +`mvn clean install` + + diff --git a/spring-security-kerberos/README.md b/spring-security-kerberos/README.md index 1b77c380db..a868fb86b7 100644 --- a/spring-security-kerberos/README.md +++ b/spring-security-kerberos/README.md @@ -1,10 +1,13 @@ -## @PreFilter and @PostFilter annotations +## Spring Security Kerberos + +This module contains articles about Spring Security Kerberos + +### Relevant Articles: + +- [Introduction to SPNEGO/Kerberos Authentication in Spring](https://www.baeldung.com/spring-security-kerberos) + +### @PreFilter and @PostFilter annotations ### Build the Project ### -``` -mvn clean install -``` - -### Relevant Articles: -- [Introduction to SPNEGO/Kerberos Authentication in Spring](https://www.baeldung.com/spring-security-kerberos) +`mvn clean install` \ No newline at end of file diff --git a/spring-security-kerberos/pom.xml b/spring-security-kerberos/pom.xml index d98d0ff508..437e8566bb 100644 --- a/spring-security-kerberos/pom.xml +++ b/spring-security-kerberos/pom.xml @@ -28,17 +28,17 @@ org.springframework.security.kerberos spring-security-kerberos-core - 1.0.1.RELEASE + ${spring-security-kerberos.version} org.springframework.security.kerberos spring-security-kerberos-web - 1.0.1.RELEASE + ${spring-security-kerberos.version} org.springframework.security.kerberos spring-security-kerberos-client - 1.0.1.RELEASE + ${spring-security-kerberos.version} @@ -61,4 +61,8 @@ + + + 1.0.1.RELEASE + diff --git a/spring-security-mvc-boot/README.MD b/spring-security-mvc-boot/README.md similarity index 91% rename from spring-security-mvc-boot/README.MD rename to spring-security-mvc-boot/README.md index 20036283a3..150ea3eee9 100644 --- a/spring-security-mvc-boot/README.MD +++ b/spring-security-mvc-boot/README.md @@ -1,3 +1,7 @@ +## Spring Boot Security MVC + +This module contains articles about Spring Security with Spring MVC in Boot applications + ### The Course The "REST With Spring" Classes: http://github.learnspringsecurity.com diff --git a/spring-security-mvc-custom/README.md b/spring-security-mvc-custom/README.md index ca0731a0c3..84bdec3c10 100644 --- a/spring-security-mvc-custom/README.md +++ b/spring-security-mvc-custom/README.md @@ -1,6 +1,6 @@ -========= +## Spring Security MVC Custom -## Spring Security Login Example Project +This module contains articles about Spring Security with custom MVC applications ###The Course The "REST With Spring" Classes: http://github.learnspringsecurity.com diff --git a/spring-security-mvc-digest-auth/README.md b/spring-security-mvc-digest-auth/README.md index be0bf0a675..da612e273b 100644 --- a/spring-security-mvc-digest-auth/README.md +++ b/spring-security-mvc-digest-auth/README.md @@ -1,6 +1,6 @@ -========= +## Spring Security with Digest Authentication -## Spring Security with Digest Authentication Example Project +This module contains articles about digest authentication with Spring Security ###The Course The "Learn Spring Security" Classes: http://github.learnspringsecurity.com diff --git a/spring-security-mvc-jsonview/README.md b/spring-security-mvc-jsonview/README.md index 35c806e856..0e28d4c292 100644 --- a/spring-security-mvc-jsonview/README.md +++ b/spring-security-mvc-jsonview/README.md @@ -1,3 +1,7 @@ +## Spring Security MVC Json View + +This module contains articles about Spring Security with JSON + ### Relevant Articles: - [Filtering Jackson JSON Output Based on Spring Security Role](https://www.baeldung.com/spring-security-role-filter-json) diff --git a/spring-security-mvc-ldap/README.md b/spring-security-mvc-ldap/README.md index 6f03143183..fe04cd23fa 100644 --- a/spring-security-mvc-ldap/README.md +++ b/spring-security-mvc-ldap/README.md @@ -1,5 +1,6 @@ +## Spring Security LDAP -## Spring Security with LDAP Example Project +This module contains articles about Spring Security LDAP ###The Course The "Learn Spring Security" Classes: http://github.learnspringsecurity.com diff --git a/spring-security-mvc-login/README.md b/spring-security-mvc-login/README.md index 983d949cb8..a20a04edec 100644 --- a/spring-security-mvc-login/README.md +++ b/spring-security-mvc-login/README.md @@ -1,8 +1,8 @@ -========= +## Spring Security Login -## Spring Security Login Example Project +This module contains articles about login mechanisms with Spring Security -###The Course +### The Course The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Articles: diff --git a/spring-security-mvc-persisted-remember-me/README.md b/spring-security-mvc-persisted-remember-me/README.md index db2ae890f9..260e55198a 100644 --- a/spring-security-mvc-persisted-remember-me/README.md +++ b/spring-security-mvc-persisted-remember-me/README.md @@ -1,6 +1,6 @@ -========= +## Spring Security Persisted Remember Me -## Spring Security Persisted Remember Me Example Project +This module contains articles about 'remember me' with Spring Security ###The Course The "Learn Spring Security" Classes: http://github.learnspringsecurity.com diff --git a/spring-security-mvc-socket/README.md b/spring-security-mvc-socket/README.md index d3f28af387..187bbe82b0 100644 --- a/spring-security-mvc-socket/README.md +++ b/spring-security-mvc-socket/README.md @@ -1,3 +1,15 @@ +## Spring Security MVC Socket + +This module contains articles about WebSockets with Spring Security + +### Relevant Articles: + +- [Intro to Security and WebSockets](http://www.baeldung.com/spring-security-websockets) +- [Spring WebSockets: Build an User Chat](https://www.baeldung.com/spring-websockets-send-message-to-user) +- [REST vs WebSockets](https://www.baeldung.com/rest-vs-websockets) + +### Running This Project: + To build the project, run the command: mvn clean install. This will build a war file in the target folder that you can deploye on a server like Tomcat. Alternatively, run the project from an IDE. @@ -5,7 +17,3 @@ Alternatively, run the project from an IDE. To login, use credentials from the data.sql file in src/main/resource, eg: user/password. -### Relevant Articles: -- [Intro to Security and WebSockets](http://www.baeldung.com/spring-security-websockets) -- [Spring WebSockets: Build an User Chat](https://www.baeldung.com/spring-websockets-send-message-to-user) -- [REST vs WebSockets](https://www.baeldung.com/rest-vs-websockets) diff --git a/spring-security-mvc/README.md b/spring-security-mvc/README.md index ce40ed5f5f..ad55e903c5 100644 --- a/spring-security-mvc/README.md +++ b/spring-security-mvc/README.md @@ -1,6 +1,6 @@ -========= +## Spring Security MVC -## Spring Security Login Example Project +This module contains articles about Spring Security in MVC applications ###The Course The "Learn Spring Security" Classes: http://github.learnspringsecurity.com diff --git a/spring-security-mvc/src/main/java/com/baeldung/SpringSessionApplication.java b/spring-security-mvc/src/main/java/com/baeldung/session/SpringSessionApplication.java similarity index 91% rename from spring-security-mvc/src/main/java/com/baeldung/SpringSessionApplication.java rename to spring-security-mvc/src/main/java/com/baeldung/session/SpringSessionApplication.java index c2a4b35df0..ec1ba8dcd9 100644 --- a/spring-security-mvc/src/main/java/com/baeldung/SpringSessionApplication.java +++ b/spring-security-mvc/src/main/java/com/baeldung/session/SpringSessionApplication.java @@ -1,4 +1,4 @@ -package com.baeldung; +package com.baeldung.session; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-security-mvc/src/main/java/com/baeldung/security/SessionFilter.java b/spring-security-mvc/src/main/java/com/baeldung/session/filter/SessionFilter.java similarity index 97% rename from spring-security-mvc/src/main/java/com/baeldung/security/SessionFilter.java rename to spring-security-mvc/src/main/java/com/baeldung/session/filter/SessionFilter.java index f4f876af9c..c30bfa5506 100644 --- a/spring-security-mvc/src/main/java/com/baeldung/security/SessionFilter.java +++ b/spring-security-mvc/src/main/java/com/baeldung/session/filter/SessionFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.security; +package com.baeldung.session.filter; import java.io.IOException; import java.util.Arrays; diff --git a/spring-security-mvc/src/main/java/com/baeldung/spring/SecSecurityConfig.java b/spring-security-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java similarity index 98% rename from spring-security-mvc/src/main/java/com/baeldung/spring/SecSecurityConfig.java rename to spring-security-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java index a922ba6f7f..35b53a0e7f 100644 --- a/spring-security-mvc/src/main/java/com/baeldung/spring/SecSecurityConfig.java +++ b/spring-security-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java @@ -1,4 +1,4 @@ -package com.baeldung.spring; +package com.baeldung.session.security.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-security-mvc/src/main/java/com/baeldung/web/SessionRestController.java b/spring-security-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java similarity index 93% rename from spring-security-mvc/src/main/java/com/baeldung/web/SessionRestController.java rename to spring-security-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java index 1353ee25d0..82199a9e4e 100644 --- a/spring-security-mvc/src/main/java/com/baeldung/web/SessionRestController.java +++ b/spring-security-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java @@ -1,4 +1,4 @@ -package com.baeldung.web; +package com.baeldung.session.web; import javax.servlet.http.HttpSession; diff --git a/spring-security-mvc/src/main/java/com/baeldung/spring/MvcConfig.java b/spring-security-mvc/src/main/java/com/baeldung/session/web/config/MvcConfig.java similarity index 96% rename from spring-security-mvc/src/main/java/com/baeldung/spring/MvcConfig.java rename to spring-security-mvc/src/main/java/com/baeldung/session/web/config/MvcConfig.java index 38a4f3f81b..4db6d07872 100644 --- a/spring-security-mvc/src/main/java/com/baeldung/spring/MvcConfig.java +++ b/spring-security-mvc/src/main/java/com/baeldung/session/web/config/MvcConfig.java @@ -1,4 +1,4 @@ -package com.baeldung.spring; +package com.baeldung.session.web.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; diff --git a/spring-security-mvc/src/test/java/com/baeldung/SpringContextIntegrationTest.java b/spring-security-mvc/src/test/java/com/baeldung/SpringContextIntegrationTest.java index 8e53a6371a..ac9da5ca60 100644 --- a/spring-security-mvc/src/test/java/com/baeldung/SpringContextIntegrationTest.java +++ b/spring-security-mvc/src/test/java/com/baeldung/SpringContextIntegrationTest.java @@ -5,8 +5,10 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +import com.baeldung.session.SpringSessionApplication; + @RunWith(SpringRunner.class) -@SpringBootTest +@SpringBootTest(classes = SpringSessionApplication.class) public class SpringContextIntegrationTest { @Test diff --git a/spring-rest-query-language/src/test/java/com/baeldung/SpringContextIntegrationTest.java b/spring-security-mvc/src/test/java/com/baeldung/SpringContextTest.java similarity index 68% rename from spring-rest-query-language/src/test/java/com/baeldung/SpringContextIntegrationTest.java rename to spring-security-mvc/src/test/java/com/baeldung/SpringContextTest.java index 18fabce5ca..f1c3801c8a 100644 --- a/spring-rest-query-language/src/test/java/com/baeldung/SpringContextIntegrationTest.java +++ b/spring-security-mvc/src/test/java/com/baeldung/SpringContextTest.java @@ -5,11 +5,11 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.spring.Application; +import com.baeldung.session.SpringSessionApplication; @RunWith(SpringRunner.class) -@SpringBootTest(classes = Application.class) -public class SpringContextIntegrationTest { +@SpringBootTest(classes = SpringSessionApplication.class) +public class SpringContextTest { @Test public void whenSpringContextIsBootstrapped_thenNoExceptions() { diff --git a/spring-security-openid/README.md b/spring-security-openid/README.md index 8c65c09f2f..1512ffbde5 100644 --- a/spring-security-openid/README.md +++ b/spring-security-openid/README.md @@ -1,16 +1,21 @@ +## Spring Security OpenID + +This module contains articles about OpenID with Spring Security + ### Relevant articles - [Spring Security and OpenID Connect](http://www.baeldung.com/spring-security-openid-connect) - -## OpenID Connect with Spring Security +### OpenID Connect with Spring Security ### Run the Project + ``` mvn spring-boot:run ``` ### Obtain Google App - Client ID, Secret + - You need to get client id and client secret by creating a new project at [Google Developer Console](https://console.developers.google.com/project/_/apiui/credential?pli=1) - Make sure to add OAuth2 credentials by selecting Add credentials > OAuth 2.0 client ID - Make sure you set redirect URI to http://localhost:8081/google-login diff --git a/spring-security-react/README.md b/spring-security-react/README.md index 1a845f0daa..4eb402c699 100644 --- a/spring-security-react/README.md +++ b/spring-security-react/README.md @@ -1,6 +1,6 @@ -========= +## Spring Security React -## Spring Security React Example Project +This module contains articles about Spring Security with ReactJS ### The Course diff --git a/spring-security-rest-basic-auth/README.md b/spring-security-rest-basic-auth/README.md index b905824161..41d463f1e2 100644 --- a/spring-security-rest-basic-auth/README.md +++ b/spring-security-rest-basic-auth/README.md @@ -1,8 +1,9 @@ -========= +## Spring Security REST Basic Authentication -## REST API with Basic Authentication - Example Project +This module contains articles about basic authentication in RESTful APIs with Spring Security ###The Course + The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Articles: diff --git a/spring-security-rest-custom/README.md b/spring-security-rest-custom/README.md index d7cb31e784..846093b554 100644 --- a/spring-security-rest-custom/README.md +++ b/spring-security-rest-custom/README.md @@ -1,6 +1,6 @@ -========= +## Spring Security REST Custom -## Spring Security for REST Example Project +This module contains articles about REST APIs with Spring Security ###The Course The "REST With Spring" Classes: http://github.learnspringsecurity.com diff --git a/spring-security-rest/README.md b/spring-security-rest/README.md index f450a514b2..c7ac45e38f 100644 --- a/spring-security-rest/README.md +++ b/spring-security-rest/README.md @@ -1,6 +1,6 @@ -========= +## Spring Security REST -## Spring Security for REST Example Project +This module contains articles about REST APIs with Spring Security ### Courses The "REST With Spring" Classes: http://bit.ly/restwithspring diff --git a/spring-security-rest/src/main/java/org/baeldung/web/ApiError.java b/spring-security-rest/src/main/java/org/baeldung/errorhandling/ApiError.java similarity index 97% rename from spring-security-rest/src/main/java/org/baeldung/web/ApiError.java rename to spring-security-rest/src/main/java/org/baeldung/errorhandling/ApiError.java index e1c58da64a..8a1ddd8882 100644 --- a/spring-security-rest/src/main/java/org/baeldung/web/ApiError.java +++ b/spring-security-rest/src/main/java/org/baeldung/errorhandling/ApiError.java @@ -1,4 +1,4 @@ -package org.baeldung.web; +package org.baeldung.errorhandling; import java.util.Arrays; import java.util.List; diff --git a/spring-security-rest/src/main/java/org/baeldung/web/CustomRestExceptionHandler.java b/spring-security-rest/src/main/java/org/baeldung/errorhandling/CustomRestExceptionHandler.java similarity index 99% rename from spring-security-rest/src/main/java/org/baeldung/web/CustomRestExceptionHandler.java rename to spring-security-rest/src/main/java/org/baeldung/errorhandling/CustomRestExceptionHandler.java index 71b1a4775e..cd4d58e60c 100644 --- a/spring-security-rest/src/main/java/org/baeldung/web/CustomRestExceptionHandler.java +++ b/spring-security-rest/src/main/java/org/baeldung/errorhandling/CustomRestExceptionHandler.java @@ -1,4 +1,4 @@ -package org.baeldung.web; +package org.baeldung.errorhandling; import java.util.ArrayList; import java.util.List; diff --git a/spring-security-rest/src/test/java/org/baeldung/web/FooLiveTest.java b/spring-security-rest/src/test/java/org/baeldung/errorhandling/FooLiveTest.java similarity index 96% rename from spring-security-rest/src/test/java/org/baeldung/web/FooLiveTest.java rename to spring-security-rest/src/test/java/org/baeldung/errorhandling/FooLiveTest.java index 86beeb46a9..8d1db5736f 100644 --- a/spring-security-rest/src/test/java/org/baeldung/web/FooLiveTest.java +++ b/spring-security-rest/src/test/java/org/baeldung/errorhandling/FooLiveTest.java @@ -1,8 +1,10 @@ -package org.baeldung.web; +package org.baeldung.errorhandling; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import org.baeldung.errorhandling.ApiError; +import org.baeldung.web.TestConfig; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.http.HttpStatus; diff --git a/spring-security-sso/README.md b/spring-security-sso/README.md index 88e3fbb2f7..31694bee45 100644 --- a/spring-security-sso/README.md +++ b/spring-security-sso/README.md @@ -1,3 +1,7 @@ +## Spring Security Single Sign On + +This module contains modules about single-sign-on with Spring Security + ### Relevant Articles: - [Simple Single Sign-On with Spring Security OAuth2](http://www.baeldung.com/sso-spring-security-oauth2) - [Spring Security Kerberos Integration](https://www.baeldung.com/spring-security-kerberos-integration) diff --git a/spring-security-stormpath/README.md b/spring-security-stormpath/README.md index f83882112f..abd65294a3 100644 --- a/spring-security-stormpath/README.md +++ b/spring-security-stormpath/README.md @@ -1,3 +1,7 @@ +## Spring Security Stormpath + +This module contains articles about Spring Security with Stormpath + ### Relevant articles - [Spring Security with Stormpath](http://www.baeldung.com/spring-security-stormpath) diff --git a/spring-security-thymeleaf/README.MD b/spring-security-thymeleaf/README.MD index 36007bce62..67b811fac8 100644 --- a/spring-security-thymeleaf/README.MD +++ b/spring-security-thymeleaf/README.MD @@ -1,5 +1,6 @@ -This module is for Spring Security Thymeleaf tutorial. -Jira BAEL-1556 +## Spring Security Thymeleaf + +This module contains articles about Spring Security with Thymeleaf ### Relevant Articles: diff --git a/spring-security-x509/README.md b/spring-security-x509/README.md index 2a4b84eae6..2c0e25a229 100644 --- a/spring-security-x509/README.md +++ b/spring-security-x509/README.md @@ -1,2 +1,6 @@ -Relevant Articles: +## Spring Security X.509 + +This module contains articles about X.509 authentication with Spring Security + +### Relevant Articles: - [X.509 Authentication in Spring Security](http://www.baeldung.com/x-509-authentication-in-spring-security) diff --git a/spring-session/README.md b/spring-session/README.md index c9875beadf..65040ec734 100644 --- a/spring-session/README.md +++ b/spring-session/README.md @@ -1,6 +1,6 @@ -========= +## Spring Session -## Spring Session Examples +This module contains articles about Spring Session ### Relevant Articles: - [Guide to Spring Session](https://www.baeldung.com/spring-session) diff --git a/spring-session/spring-session-mongodb/pom.xml b/spring-session/spring-session-mongodb/pom.xml index dc055ff32d..b9e06615de 100644 --- a/spring-session/spring-session-mongodb/pom.xml +++ b/spring-session/spring-session-mongodb/pom.xml @@ -40,6 +40,12 @@ spring-boot-starter-test test + + + de.flapdoodle.embed + de.flapdoodle.embed.mongo + test + diff --git a/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextIntegrationTest.java index 16b7404f57..1acc6a5cb1 100644 --- a/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ b/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextIntegrationTest.java @@ -7,7 +7,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) -@SpringBootTest(classes = SpringSessionMongoDBApplication.class) +@SpringBootTest(classes = SpringSessionMongoDBApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class SpringContextIntegrationTest { @Test diff --git a/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextTest.java similarity index 71% rename from spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextLiveTest.java rename to spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextTest.java index b41f2b0338..cc935b8cfb 100644 --- a/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextLiveTest.java +++ b/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextTest.java @@ -7,8 +7,8 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) -@SpringBootTest(classes = SpringSessionMongoDBApplication.class) -public class SpringContextLiveTest { +@SpringBootTest(classes = SpringSessionMongoDBApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class SpringContextTest { @Test public void whenSpringContextIsBootstrapped_thenNoExceptions() { diff --git a/spring-session/spring-session-mongodb/src/test/resources/application.properties b/spring-session/spring-session-mongodb/src/test/resources/application.properties new file mode 100644 index 0000000000..4ee830556a --- /dev/null +++ b/spring-session/spring-session-mongodb/src/test/resources/application.properties @@ -0,0 +1,2 @@ +#To use a randomly allocated free port during tests to avoid port conflict across tests +spring.data.mongodb.port=0 diff --git a/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java deleted file mode 100644 index a62e728826..0000000000 --- a/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import com.baeldung.spring.session.SessionWebApplication; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = SessionWebApplication.class) -public class SpringContextIntegrationTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextLiveTest.java index b23ce7dbbb..3a4f14e9e6 100644 --- a/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextLiveTest.java +++ b/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextLiveTest.java @@ -7,6 +7,10 @@ import org.springframework.test.context.junit4.SpringRunner; import com.baeldung.spring.session.SessionWebApplication; +/** + * This live test requires: + * redis instance running on the environment + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = SessionWebApplication.class) public class SpringContextLiveTest { diff --git a/spring-sleuth/README.md b/spring-sleuth/README.md index 47aa126939..692fbaa8b7 100644 --- a/spring-sleuth/README.md +++ b/spring-sleuth/README.md @@ -1,3 +1,7 @@ -## Relevant articles: +## Spring Sleuth + +This module contains articles about Spring Cloud Sleuth + +### Relevant articles: - [Spring Cloud Sleuth in a Monolith Application](http://www.baeldung.com/spring-cloud-sleuth-single-application) diff --git a/spring-soap/README.md b/spring-soap/README.md index 8d96350e1e..c23f0bc6f0 100644 --- a/spring-soap/README.md +++ b/spring-soap/README.md @@ -1,3 +1,7 @@ -## Relevant articles: +## Spring SOAP + +This module contains articles about SOAP APIs with Spring + +### Relevant articles: - [Creating a SOAP Web Service with Spring](https://www.baeldung.com/spring-boot-soap-web-service) diff --git a/spring-social-login/README.md b/spring-social-login/README.md index f745a90acb..c3ca867a95 100644 --- a/spring-social-login/README.md +++ b/spring-social-login/README.md @@ -1,2 +1,6 @@ +## Spring Social + +This module contains articles about Spring Social + ### Relevant Articles: - [A Secondary Facebook Login with Spring Social](http://www.baeldung.com/facebook-authentication-with-spring-security-and-social) diff --git a/spring-spel/README.md b/spring-spel/README.md index d7e69e114c..f81d304e1a 100644 --- a/spring-spel/README.md +++ b/spring-spel/README.md @@ -1,2 +1,6 @@ +## Spring Expression Language + +This module contains articles about the Spring Expression Language (SpEL) + ### Relevant Articles: - [Spring Expression Language Guide](http://www.baeldung.com/spring-expression-language) diff --git a/spring-state-machine/README.md b/spring-state-machine/README.md index a2668fb650..f80ef34ef8 100644 --- a/spring-state-machine/README.md +++ b/spring-state-machine/README.md @@ -1,3 +1,7 @@ +## Spring State Machine + +This module contains articles about Spring State Machine + ### Relevant articles - [A Guide to the Spring State Machine Project](http://www.baeldung.com/spring-state-machine) diff --git a/spring-static-resources/README.md b/spring-static-resources/README.md index 64f017b5dd..8d77e6fe94 100644 --- a/spring-static-resources/README.md +++ b/spring-static-resources/README.md @@ -1,3 +1,7 @@ +## Spring Static Resources + +This module contains articles about static resources with Spring + ### Relevant Articles: - [Cachable Static Assets with Spring MVC](http://www.baeldung.com/cachable-static-assets-with-spring-mvc) - [Minification of JS and CSS Assets with Maven](http://www.baeldung.com/maven-minification-of-js-and-css-assets) diff --git a/spring-swagger-codegen/README.md b/spring-swagger-codegen/README.md index ee6b240c30..dbcf2b3e8d 100644 --- a/spring-swagger-codegen/README.md +++ b/spring-swagger-codegen/README.md @@ -1,3 +1,7 @@ +## Spring Swagger CodeGen + +This module contains articles about Spring with Swagger CodeGen + ### Relevant articles - [Generate Spring Boot REST Client with Swagger](http://www.baeldung.com/spring-boot-rest-client-swagger-codegen) diff --git a/spring-thymeleaf/README.md b/spring-thymeleaf/README.md index 082a65f55b..88f3e35f8c 100644 --- a/spring-thymeleaf/README.md +++ b/spring-thymeleaf/README.md @@ -1,6 +1,6 @@ -========= +## Spring Thymeleaf -## Spring Thymeleaf Example Project +This module contains articles about Spring with Thymeleaf ### Relevant Articles: - [Introduction to Using Thymeleaf in Spring](http://www.baeldung.com/thymeleaf-in-spring-mvc) @@ -19,13 +19,14 @@ - [Working with Select and Option in Thymeleaf](http://www.baeldung.com/thymeleaf-select-option) - [Working With Custom HTML Attributes in Thymeleaf](https://www.baeldung.com/thymeleaf-custom-html-attributes) - [Spring Request Parameters with Thymeleaf](https://www.baeldung.com/spring-thymeleaf-request-parameters) +- [[next -->]](/spring-thymeleaf-2) ### Build the Project mvn clean install - ### Run the Project + mvn cargo:run - **note**: starts on port '8082' diff --git a/spring-vault/README.md b/spring-vault/README.md index 8db065a3dd..9e1d14ba6b 100644 --- a/spring-vault/README.md +++ b/spring-vault/README.md @@ -1,2 +1,7 @@ +## Spring Vault + +This module contains articles about Spring Vault + ### Relevant Articles: + - [Spring Vault](https://www.baeldung.com/spring-vault) diff --git a/spring-vault/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-vault/src/test/java/org/baeldung/SpringContextIntegrationTest.java deleted file mode 100644 index a2d727ea79..0000000000 --- a/spring-vault/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.baeldung; - -import org.baeldung.springvault.SpringVaultApplication; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = SpringVaultApplication.class) -public class SpringContextIntegrationTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-vault/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-vault/src/test/java/org/baeldung/SpringContextLiveTest.java index 1b3db59ecb..60dc119f13 100644 --- a/spring-vault/src/test/java/org/baeldung/SpringContextLiveTest.java +++ b/spring-vault/src/test/java/org/baeldung/SpringContextLiveTest.java @@ -6,6 +6,15 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +/** + * This live test requires: + * vault server up and running on the environment + * + *
+ * For more info on setting up the vault server: + * https://www.baeldung.com/vault + * + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = SpringVaultApplication.class) public class SpringContextLiveTest { diff --git a/spring-vault/src/test/resources/application.properties b/spring-vault/src/test/resources/application.properties new file mode 100644 index 0000000000..709574239b --- /dev/null +++ b/spring-vault/src/test/resources/application.properties @@ -0,0 +1 @@ +spring.main.allow-bean-definition-overriding=true \ No newline at end of file diff --git a/spring-vertx/README.md b/spring-vertx/README.md index 05d059e1b2..e9557f330b 100644 --- a/spring-vertx/README.md +++ b/spring-vertx/README.md @@ -1,2 +1,6 @@ +## Spring Vert.x + +This module contains articles about Spring with Vert.x + ### Relevant Articles: - [Vert.x Spring Integration](http://www.baeldung.com/spring-vertx) diff --git a/spring-webflux-amqp/README.md b/spring-webflux-amqp/README.md index 5cd3391c3e..b7ac73b53d 100644 --- a/spring-webflux-amqp/README.md +++ b/spring-webflux-amqp/README.md @@ -1,4 +1,7 @@ +## Spring WebFlux AMQP + +This module contains articles about Spring WebFlux with AMQP + ### Relevant Articles: -================================ - [Spring AMQP in Reactive Applications](http://www.baeldung.com/spring-amqp-reactive) diff --git a/spring-webflux-amqp/src/main/resources/application.yml b/spring-webflux-amqp/src/main/resources/application.yml index 3f527ce4c5..702aaba357 100755 --- a/spring-webflux-amqp/src/main/resources/application.yml +++ b/spring-webflux-amqp/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: rabbitmq: - host: 192.168.99.100 + host: localhost port: 5672 username: guest password: guest diff --git a/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextIntegrationTest.java deleted file mode 100644 index 35efff49c2..0000000000 --- a/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.baeldung; - -import org.baeldung.spring.amqp.SpringWebfluxAmqpApplication; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = SpringWebfluxAmqpApplication.class) -public class SpringContextIntegrationTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextLiveTest.java index effe8d2cfa..4d9f658cdc 100644 --- a/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextLiveTest.java +++ b/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextLiveTest.java @@ -6,6 +6,15 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +/** + * This live test requires: + * rabbitmq instance running on the environment + * + *
+ * To run rabbitmq using docker image: + * (e.g. `docker run -d --name rabbitmq -p 5672:5672 rabbitmq:3`) + * + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = SpringWebfluxAmqpApplication.class) public class SpringContextLiveTest { diff --git a/spring-zuul/README.md b/spring-zuul/README.md index 41a77f70c8..a2ea211195 100644 --- a/spring-zuul/README.md +++ b/spring-zuul/README.md @@ -1,7 +1,6 @@ -========= - -## Spring REST with a Zuul +## Spring Zuul +This module contains articles about Spring with Netflix Zuul ### Relevant Articles: - [Spring REST with a Zuul Proxy](http://www.baeldung.com/spring-rest-with-zuul-proxy) diff --git a/static-analysis/README.md b/static-analysis/README.md index e4d4bc7bfc..e3710831cf 100644 --- a/static-analysis/README.md +++ b/static-analysis/README.md @@ -1,3 +1,7 @@ +## Static Analysis + +This module contains articles about static program analysis + ## Relevant articles: - [Introduction to PMD](http://www.baeldung.com/pmd) diff --git a/stripe/README.md b/stripe/README.md index 8a44ff9d33..a7134b9633 100644 --- a/stripe/README.md +++ b/stripe/README.md @@ -1,6 +1,6 @@ -### Stripe API for Java Sample Project +### Stripe -This is Spring Boot project that displays a checkout form and charges a credit card using the Stripe API for Java. +This module contains articles about Stripe ### Relevant articles diff --git a/structurizr/README.md b/structurizr/README.md index e596dfa458..90ce49b482 100644 --- a/structurizr/README.md +++ b/structurizr/README.md @@ -1,2 +1,6 @@ +## Structurizr + +This module contains articles about Structurizr + ### Relevant Articles: - [Intro to Structurizr](http://www.baeldung.com/structurizr) diff --git a/struts-2/README.md b/struts-2/README.md index 8a1425ccb5..6121ab3166 100644 --- a/struts-2/README.md +++ b/struts-2/README.md @@ -1,3 +1,7 @@ +## Struts 2 + +This module contains articles about Struts 2 + ### Relevant articles - [A Quick Struts 2 Intro](http://www.baeldung.com/struts-2-intro) diff --git a/tensorflow-java/README.md b/tensorflow-java/README.md index f826375ac1..b96e4a83db 100644 --- a/tensorflow-java/README.md +++ b/tensorflow-java/README.md @@ -1,3 +1,7 @@ +## Tensorflow + +This module contains articles about Tensorflow + ## Relevant articles: - [Introduction to Tensorflow for Java](https://www.baeldung.com/tensorflow-java) diff --git a/testing-modules/README.md b/testing-modules/README.md index 21fc87a67f..c6098d1210 100644 --- a/testing-modules/README.md +++ b/testing-modules/README.md @@ -1,4 +1,3 @@ - ## Testing Modules -This is a aggregator module containing several modules focused on testing libraries. +This is an aggregator module containing multiple modules focused on testing libraries. diff --git a/testing-modules/easy-random/pom.xml b/testing-modules/easy-random/pom.xml index 93c0027f8f..d80927c3e8 100644 --- a/testing-modules/easy-random/pom.xml +++ b/testing-modules/easy-random/pom.xml @@ -17,8 +17,12 @@ org.jeasy easy-random-core - 4.0.0 + ${easy-random-core.version} + + 4.0.0 + + \ No newline at end of file diff --git a/testing-modules/hamcrest/README.md b/testing-modules/hamcrest/README.md new file mode 100644 index 0000000000..f2ff6b996d --- /dev/null +++ b/testing-modules/hamcrest/README.md @@ -0,0 +1,12 @@ +## Hamcrest + +This module contains articles about Hamcrest + +### Relevant articles +- [Hamcrest Text Matchers](https://www.baeldung.com/hamcrest-text-matchers) +- [Hamcrest File Matchers](https://www.baeldung.com/hamcrest-file-matchers) +- [Hamcrest Object Matchers](https://www.baeldung.com/hamcrest-object-matchers) +- [Hamcrest Bean Matchers](https://www.baeldung.com/hamcrest-bean-matchers) +- [Hamcrest Number Matchers](https://www.baeldung.com/hamcrest-number-matchers) +- [Hamcrest Common Core Matchers](https://www.baeldung.com/hamcrest-core-matchers) +- [Hamcrest Custom Matchers](https://www.baeldung.com/hamcrest-custom-matchers) diff --git a/testing-modules/hamcrest/pom.xml b/testing-modules/hamcrest/pom.xml new file mode 100644 index 0000000000..2136702b3a --- /dev/null +++ b/testing-modules/hamcrest/pom.xml @@ -0,0 +1,29 @@ + + 4.0.0 + com.baeldung + hamcrest + 0.0.1-SNAPSHOT + hamcrest + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + org.hamcrest + java-hamcrest + ${hamcrest.version} + test + + + + + 2.0.0.0 + + diff --git a/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/City.java b/testing-modules/hamcrest/src/main/java/com/baeldung/hamcrest/objectmatchers/City.java similarity index 94% rename from testing-modules/mockito/src/main/java/org/baeldung/hamcrest/City.java rename to testing-modules/hamcrest/src/main/java/com/baeldung/hamcrest/objectmatchers/City.java index d6369189c1..cc4fba8154 100644 --- a/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/City.java +++ b/testing-modules/hamcrest/src/main/java/com/baeldung/hamcrest/objectmatchers/City.java @@ -1,4 +1,4 @@ -package org.baeldung.hamcrest; +package com.baeldung.hamcrest.objectmatchers; public class City extends Location { String name; diff --git a/testing-modules/hamcrest/src/main/java/com/baeldung/hamcrest/objectmatchers/Location.java b/testing-modules/hamcrest/src/main/java/com/baeldung/hamcrest/objectmatchers/Location.java new file mode 100644 index 0000000000..bb9c369c60 --- /dev/null +++ b/testing-modules/hamcrest/src/main/java/com/baeldung/hamcrest/objectmatchers/Location.java @@ -0,0 +1,4 @@ +package com.baeldung.hamcrest.objectmatchers; + +public class Location { +} diff --git a/testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestBeansUnitTest.java b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestBeansUnitTest.java similarity index 86% rename from testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestBeansUnitTest.java rename to testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestBeansUnitTest.java index e7eb9bda1b..7f0c5290ba 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestBeansUnitTest.java +++ b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestBeansUnitTest.java @@ -1,5 +1,6 @@ -package org.baeldung.hamcrest; +package com.baeldung.hamcrest; +import com.baeldung.hamcrest.objectmatchers.City; import org.junit.Test; import java.beans.PropertyDescriptor; @@ -8,13 +9,7 @@ import java.util.List; import static java.util.stream.Collectors.toList; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.hasProperty; -import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.equalToIgnoringCase; -import static org.hamcrest.Matchers.samePropertyValuesAs; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.*; import static org.hamcrest.beans.PropertyUtil.getPropertyDescriptor; import static org.hamcrest.beans.PropertyUtil.propertyDescriptorsFor; diff --git a/testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestCoreMatchersUnitTest.java b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestCoreMatchersUnitTest.java similarity index 99% rename from testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestCoreMatchersUnitTest.java rename to testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestCoreMatchersUnitTest.java index d66ed98e8d..5da6a77144 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestCoreMatchersUnitTest.java +++ b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestCoreMatchersUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.hamcrest; +package com.baeldung.hamcrest; import com.google.common.collect.Lists; @@ -145,7 +145,6 @@ public class HamcrestCoreMatchersUnitTest { @Test public void givenString_WhenContainsStringIgnoringCase_ThenCorrect() { - // GIVEN String testString = "hamcrest core"; @@ -164,7 +163,6 @@ public class HamcrestCoreMatchersUnitTest { assertThat(list, hasItem(isA(String.class))); } - @Test public void givenTestInput_WhenUsingHasItemsInCollection() { @@ -223,7 +221,6 @@ public class HamcrestCoreMatchersUnitTest { assertThat(testString, either(startsWith("Bael")).or(containsString("Core"))); } - @Test public void givenTestInput_WhenUsingEveryItemForMatchInCollection() { diff --git a/testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestFileUnitTest.java b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestFileUnitTest.java similarity index 72% rename from testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestFileUnitTest.java rename to testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestFileUnitTest.java index 9973e325d6..73e2da52b5 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestFileUnitTest.java +++ b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestFileUnitTest.java @@ -1,22 +1,13 @@ -package org.baeldung.hamcrest; +package com.baeldung.hamcrest; -import static org.hamcrest.core.StringContains.containsString; -import static org.hamcrest.io.FileMatchers.aFileNamed; -import static org.hamcrest.io.FileMatchers.aFileWithAbsolutePath; -import static org.hamcrest.io.FileMatchers.aFileWithCanonicalPath; -import static org.hamcrest.io.FileMatchers.aFileWithSize; -import static org.hamcrest.io.FileMatchers.aReadableFile; -import static org.hamcrest.io.FileMatchers.aWritableFile; -import static org.hamcrest.io.FileMatchers.anExistingDirectory; -import static org.hamcrest.io.FileMatchers.anExistingFile; -import static org.hamcrest.io.FileMatchers.anExistingFileOrDirectory; -import static org.hamcrest.number.OrderingComparison.greaterThan; -import static org.hamcrest.text.IsEqualIgnoringCase.equalToIgnoringCase; -import static org.junit.Assert.assertThat; +import org.junit.Test; import java.io.File; -import org.junit.Test; +import static org.hamcrest.io.FileMatchers.*; +import static org.hamcrest.number.OrderingComparison.greaterThan; +import static org.hamcrest.text.IsEqualIgnoringCase.equalToIgnoringCase; +import static org.junit.Assert.assertThat; public class HamcrestFileUnitTest { diff --git a/testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestNumberUnitTest.java b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestNumberUnitTest.java similarity index 90% rename from testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestNumberUnitTest.java rename to testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestNumberUnitTest.java index fbba6b94d2..d2b3392537 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestNumberUnitTest.java +++ b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestNumberUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.hamcrest; +package com.baeldung.hamcrest; import org.junit.Test; @@ -6,15 +6,7 @@ import java.math.BigDecimal; import java.time.LocalDate; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.closeTo; -import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.greaterThan; -import static org.hamcrest.Matchers.greaterThanOrEqualTo; -import static org.hamcrest.Matchers.lessThan; -import static org.hamcrest.Matchers.lessThanOrEqualTo; -import static org.hamcrest.Matchers.comparesEqualTo; -import static org.hamcrest.Matchers.notANumber; +import static org.hamcrest.Matchers.*; public class HamcrestNumberUnitTest { diff --git a/testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestObjectUnitTest.java b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestObjectUnitTest.java similarity index 81% rename from testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestObjectUnitTest.java rename to testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestObjectUnitTest.java index 8d30ff297b..c07fc422f6 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestObjectUnitTest.java +++ b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestObjectUnitTest.java @@ -1,14 +1,11 @@ -package org.baeldung.hamcrest; +package com.baeldung.hamcrest; +import com.baeldung.hamcrest.objectmatchers.City; +import com.baeldung.hamcrest.objectmatchers.Location; import org.junit.Test; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.hasToString; -import static org.hamcrest.Matchers.equalToIgnoringCase; -import static org.hamcrest.Matchers.emptyOrNullString; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.typeCompatibleWith; -import static org.hamcrest.Matchers.not; +import static org.hamcrest.Matchers.*; public class HamcrestObjectUnitTest { diff --git a/testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestTextUnitTest.java b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestTextUnitTest.java similarity index 99% rename from testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestTextUnitTest.java rename to testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestTextUnitTest.java index e336b1bba3..593fdf82b6 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestTextUnitTest.java +++ b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/HamcrestTextUnitTest.java @@ -1,4 +1,6 @@ -package org.baeldung.hamcrest; +package com.baeldung.hamcrest; + +import org.junit.Test; import static org.hamcrest.core.StringContains.containsString; import static org.hamcrest.core.StringContains.containsStringIgnoringCase; @@ -16,8 +18,6 @@ import static org.hamcrest.text.MatchesPattern.matchesPattern; import static org.hamcrest.text.StringContainsInOrder.stringContainsInOrder; import static org.junit.Assert.assertThat; -import org.junit.Test; - public class HamcrestTextUnitTest { @Test diff --git a/testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestCustomUnitTest.java b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/custommatchers/HamcrestCustomUnitTest.java similarity index 82% rename from testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestCustomUnitTest.java rename to testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/custommatchers/HamcrestCustomUnitTest.java index 6cc8692bc7..62c68d4561 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestCustomUnitTest.java +++ b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/custommatchers/HamcrestCustomUnitTest.java @@ -1,10 +1,10 @@ -package org.baeldung.hamcrest; +package com.baeldung.hamcrest.custommatchers; import org.junit.Test; -import static org.baeldung.hamcrest.custommatchers.IsDivisibleBy.divisibleBy; -import static org.baeldung.hamcrest.custommatchers.IsOnlyDigits.onlyDigits; -import static org.baeldung.hamcrest.custommatchers.IsUppercase.uppercase; +import static com.baeldung.hamcrest.custommatchers.IsDivisibleBy.divisibleBy; +import static com.baeldung.hamcrest.custommatchers.IsOnlyDigits.onlyDigits; +import static com.baeldung.hamcrest.custommatchers.IsUppercase.uppercase; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; diff --git a/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsDivisibleBy.java b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/custommatchers/IsDivisibleBy.java similarity index 93% rename from testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsDivisibleBy.java rename to testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/custommatchers/IsDivisibleBy.java index ea12ce0006..f865523be4 100644 --- a/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsDivisibleBy.java +++ b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/custommatchers/IsDivisibleBy.java @@ -1,4 +1,4 @@ -package org.baeldung.hamcrest.custommatchers; +package com.baeldung.hamcrest.custommatchers; import org.hamcrest.Description; import org.hamcrest.Matcher; diff --git a/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsOnlyDigits.java b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/custommatchers/IsOnlyDigits.java similarity index 92% rename from testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsOnlyDigits.java rename to testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/custommatchers/IsOnlyDigits.java index 7515dfbf6d..f113c92983 100644 --- a/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsOnlyDigits.java +++ b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/custommatchers/IsOnlyDigits.java @@ -1,4 +1,4 @@ -package org.baeldung.hamcrest.custommatchers; +package com.baeldung.hamcrest.custommatchers; import org.hamcrest.Description; import org.hamcrest.Matcher; diff --git a/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsUppercase.java b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/custommatchers/IsUppercase.java similarity index 91% rename from testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsUppercase.java rename to testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/custommatchers/IsUppercase.java index 859e7006b7..4ffacd939c 100644 --- a/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsUppercase.java +++ b/testing-modules/hamcrest/src/test/java/com/baeldung/hamcrest/custommatchers/IsUppercase.java @@ -1,4 +1,4 @@ -package org.baeldung.hamcrest.custommatchers; +package com.baeldung.hamcrest.custommatchers; import org.hamcrest.Description; import org.hamcrest.Matcher; diff --git a/testing-modules/mockito/src/test/resources/test1.in b/testing-modules/hamcrest/src/test/resources/test1.in similarity index 100% rename from testing-modules/mockito/src/test/resources/test1.in rename to testing-modules/hamcrest/src/test/resources/test1.in diff --git a/testing-modules/junit-5-basics/src/test/java/com/baeldung/example/EmployeeDAOIntegrationTest.java b/testing-modules/junit-5-basics/src/test/java/com/baeldung/example/EmployeeDAOIntegrationTest.java index d3b6a52726..2595f2b13c 100644 --- a/testing-modules/junit-5-basics/src/test/java/com/baeldung/example/EmployeeDAOIntegrationTest.java +++ b/testing-modules/junit-5-basics/src/test/java/com/baeldung/example/EmployeeDAOIntegrationTest.java @@ -1,18 +1,22 @@ package com.baeldung.example; -import com.baeldung.junit.tags.example.Employee; -import com.baeldung.junit.tags.example.EmployeeDAO; -import com.baeldung.junit.tags.example.SpringJdbcConfig; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; +import com.baeldung.junit.tags.example.Employee; +import com.baeldung.junit.tags.example.EmployeeDAO; +import com.baeldung.junit.tags.example.SpringJdbcConfig; + @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { SpringJdbcConfig.class }, loader = AnnotationConfigContextLoader.class) +@DirtiesContext(classMode = ClassMode.BEFORE_EACH_TEST_METHOD) public class EmployeeDAOIntegrationTest { @Autowired diff --git a/testing-modules/junit-5-basics/src/test/java/com/baeldung/tags/EmployeeDAOIntegrationTest.java b/testing-modules/junit-5-basics/src/test/java/com/baeldung/tags/EmployeeDAOIntegrationTest.java index bcd76cb4c2..7f0720b96d 100644 --- a/testing-modules/junit-5-basics/src/test/java/com/baeldung/tags/EmployeeDAOIntegrationTest.java +++ b/testing-modules/junit-5-basics/src/test/java/com/baeldung/tags/EmployeeDAOIntegrationTest.java @@ -1,8 +1,5 @@ package com.baeldung.tags; -import com.baeldung.junit.tags.example.Employee; -import com.baeldung.junit.tags.example.EmployeeDAO; -import com.baeldung.junit.tags.example.SpringJdbcConfig; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; @@ -13,12 +10,19 @@ import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.context.support.AnnotationConfigContextLoader; +import com.baeldung.junit.tags.example.Employee; +import com.baeldung.junit.tags.example.EmployeeDAO; +import com.baeldung.junit.tags.example.SpringJdbcConfig; + @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = { SpringJdbcConfig.class }, loader = AnnotationConfigContextLoader.class) +@DirtiesContext(classMode = ClassMode.BEFORE_EACH_TEST_METHOD) public class EmployeeDAOIntegrationTest { @Autowired diff --git a/testing-modules/mockito-2/README.md b/testing-modules/mockito-2/README.md index 5c9e8fc81a..1d1bd6af7c 100644 --- a/testing-modules/mockito-2/README.md +++ b/testing-modules/mockito-2/README.md @@ -1,5 +1,7 @@ ### Relevant articles -- [Mockito’s Java 8 Features](http://www.baeldung.com/mockito-2-java-8) -- [Lazy Verification with Mockito 2](http://www.baeldung.com/mockito-2-lazy-verification) +- [Mockito’s Java 8 Features](https://www.baeldung.com/mockito-2-java-8) +- [Lazy Verification with Mockito 2](https://www.baeldung.com/mockito-2-lazy-verification) - [Mockito Strict Stubbing and The UnnecessaryStubbingException](https://www.baeldung.com/mockito-unnecessary-stubbing-exception) +- [Quick Guide to BDDMockito](https://www.baeldung.com/bdd-mockito) +- [Mockito – Using Spies](https://www.baeldung.com/mockito-spy) diff --git a/testing-modules/mockito/src/test/java/org/baeldung/bddmockito/BDDMockitoIntegrationTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/bddmockito/BDDMockitoUnitTest.java similarity index 97% rename from testing-modules/mockito/src/test/java/org/baeldung/bddmockito/BDDMockitoIntegrationTest.java rename to testing-modules/mockito-2/src/test/java/com/baeldung/mockito/bddmockito/BDDMockitoUnitTest.java index e0ca6f0a35..fd7f04870b 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/bddmockito/BDDMockitoIntegrationTest.java +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/bddmockito/BDDMockitoUnitTest.java @@ -1,7 +1,4 @@ -package org.baeldung.bddmockito; - -import static org.junit.Assert.fail; -import static org.mockito.BDDMockito.*; +package com.baeldung.mockito.bddmockito; import org.junit.Assert; import org.junit.Before; @@ -9,8 +6,11 @@ import org.junit.Test; import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; +import static org.junit.Assert.fail; +import static org.mockito.BDDMockito.*; -public class BDDMockitoIntegrationTest { + +public class BDDMockitoUnitTest { PhoneBookService phoneBookService; PhoneBookRepository phoneBookRepository; diff --git a/testing-modules/mockito/src/test/java/org/baeldung/bddmockito/PhoneBookRepository.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/bddmockito/PhoneBookRepository.java similarity index 93% rename from testing-modules/mockito/src/test/java/org/baeldung/bddmockito/PhoneBookRepository.java rename to testing-modules/mockito-2/src/test/java/com/baeldung/mockito/bddmockito/PhoneBookRepository.java index 94d4a90d4b..dd44e5e3cc 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/bddmockito/PhoneBookRepository.java +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/bddmockito/PhoneBookRepository.java @@ -1,4 +1,4 @@ -package org.baeldung.bddmockito; +package com.baeldung.mockito.bddmockito; public interface PhoneBookRepository { diff --git a/testing-modules/mockito/src/test/java/org/baeldung/bddmockito/PhoneBookService.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/bddmockito/PhoneBookService.java similarity index 95% rename from testing-modules/mockito/src/test/java/org/baeldung/bddmockito/PhoneBookService.java rename to testing-modules/mockito-2/src/test/java/com/baeldung/mockito/bddmockito/PhoneBookService.java index 8fc49b026d..b96cf4efb7 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/bddmockito/PhoneBookService.java +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/bddmockito/PhoneBookService.java @@ -1,4 +1,4 @@ -package org.baeldung.bddmockito; +package com.baeldung.mockito.bddmockito; public class PhoneBookService { diff --git a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/LazyVerificationUnitTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/lazyverification/LazyVerificationUnitTest.java similarity index 95% rename from testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/LazyVerificationUnitTest.java rename to testing-modules/mockito-2/src/test/java/com/baeldung/mockito/lazyverification/LazyVerificationUnitTest.java index 0e6921c7a1..c7a9d84191 100644 --- a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/java8/LazyVerificationUnitTest.java +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/lazyverification/LazyVerificationUnitTest.java @@ -1,16 +1,16 @@ -package com.baeldung.mockito.java8; - -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; - -import java.util.List; +package com.baeldung.mockito.lazyverification; import org.junit.Test; import org.mockito.exceptions.base.MockitoAssertionError; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.VerificationCollector; +import java.util.List; + +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + public class LazyVerificationUnitTest { @Test diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/misusing/MockitoMisusingUnitTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/spy/MockitoMisusingUnitTest.java similarity index 96% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/misusing/MockitoMisusingUnitTest.java rename to testing-modules/mockito-2/src/test/java/com/baeldung/mockito/spy/MockitoMisusingUnitTest.java index 306f53297a..ea12061fc6 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/misusing/MockitoMisusingUnitTest.java +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/spy/MockitoMisusingUnitTest.java @@ -1,11 +1,4 @@ -package org.baeldung.mockito.misusing; - -import static org.hamcrest.CoreMatchers.containsString; -import static org.junit.Assert.assertThat; -import static org.junit.jupiter.api.Assertions.fail; - -import java.util.ArrayList; -import java.util.List; +package com.baeldung.mockito.spy; import org.junit.After; import org.junit.Test; @@ -13,6 +6,13 @@ import org.mockito.Mockito; import org.mockito.exceptions.misusing.NotAMockException; import org.mockito.internal.progress.ThreadSafeMockingProgress; +import java.util.ArrayList; +import java.util.List; + +import static org.hamcrest.CoreMatchers.containsString; +import static org.junit.Assert.assertThat; +import static org.junit.jupiter.api.Assertions.fail; + public class MockitoMisusingUnitTest { @After diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoSpyIntegrationTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/spy/MockitoSpyUnitTest.java similarity index 96% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoSpyIntegrationTest.java rename to testing-modules/mockito-2/src/test/java/com/baeldung/mockito/spy/MockitoSpyUnitTest.java index 118d50ea40..d4696e482b 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoSpyIntegrationTest.java +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/spy/MockitoSpyUnitTest.java @@ -1,9 +1,4 @@ -package org.baeldung.mockito; - -import static org.junit.Assert.assertEquals; - -import java.util.ArrayList; -import java.util.List; +package com.baeldung.mockito.spy; import org.junit.Test; import org.junit.runner.RunWith; @@ -11,8 +6,13 @@ import org.mockito.Mockito; import org.mockito.Spy; import org.mockito.junit.MockitoJUnitRunner; +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.assertEquals; + @RunWith(MockitoJUnitRunner.class) -public class MockitoSpyIntegrationTest { +public class MockitoSpyUnitTest { @Spy private List aSpyList = new ArrayList(); diff --git a/testing-modules/mockito/README.md b/testing-modules/mockito/README.md index 8fe57016e3..6b8f53ffee 100644 --- a/testing-modules/mockito/README.md +++ b/testing-modules/mockito/README.md @@ -4,21 +4,13 @@ ### Relevant Articles: -- [Mockito Verify Cookbook](http://www.baeldung.com/mockito-verify) -- [Mockito When/Then Cookbook](http://www.baeldung.com/mockito-behavior) -- [Mockito – Using Spies](http://www.baeldung.com/mockito-spy) -- [Getting Started with Mockito @Mock, @Spy, @Captor and @InjectMocks](http://www.baeldung.com/mockito-annotations) -- [Mockito’s Mock Methods](http://www.baeldung.com/mockito-mock-methods) -- [Introduction to PowerMock](http://www.baeldung.com/intro-to-powermock) -- [Mocking Exception Throwing using Mockito](http://www.baeldung.com/mockito-exceptions) -- [Mocking Void Methods with Mockito](http://www.baeldung.com/mockito-void-methods) -- [Mocking of Private Methods Using PowerMock](http://www.baeldung.com/powermock-private-method) -- [Mock Final Classes and Methods with Mockito](http://www.baeldung.com/mockito-final) -- [Hamcrest Custom Matchers](http://www.baeldung.com/hamcrest-custom-matchers) -- [Hamcrest Common Core Matchers](http://www.baeldung.com/hamcrest-core-matchers) -- [Testing Callbacks with Mockito](http://www.baeldung.com/mockito-callbacks) -- [Using Hamcrest Number Matchers](https://www.baeldung.com/hamcrest-number-matchers) -- [Quick Guide to BDDMockito](http://www.baeldung.com/bdd-mockito) -- [Hamcrest Bean Matchers](http://www.baeldung.com/hamcrest-bean-matchers) -- [Hamcrest Object Matchers](http://www.baeldung.com/hamcrest-object-matchers) -- [Testing Callbacks with Mockito](http://www.baeldung.com/mockito-callbacks) +- [Mockito Verify Cookbook](https://www.baeldung.com/mockito-verify) +- [Mockito When/Then Cookbook](https://www.baeldung.com/mockito-behavior) +- [Getting Started with Mockito @Mock, @Spy, @Captor and @InjectMocks](https://www.baeldung.com/mockito-annotations) +- [Mockito’s Mock Methods](https://www.baeldung.com/mockito-mock-methods) +- [Introduction to PowerMock](https://www.baeldung.com/intro-to-powermock) +- [Mocking of Private Methods Using PowerMock](https://www.baeldung.com/powermock-private-method) +- [Mocking Exception Throwing using Mockito](https://www.baeldung.com/mockito-exceptions) +- [Mocking Void Methods with Mockito](https://www.baeldung.com/mockito-void-methods) +- [Mock Final Classes and Methods with Mockito](https://www.baeldung.com/mockito-final) +- [Testing Callbacks with Mockito](https://www.baeldung.com/mockito-callbacks) diff --git a/testing-modules/mockito/pom.xml b/testing-modules/mockito/pom.xml index 7b6d6e7735..e0f32d88bf 100644 --- a/testing-modules/mockito/pom.xml +++ b/testing-modules/mockito/pom.xml @@ -1,7 +1,7 @@ 4.0.0 - org.baeldung + com.baeldung mockito 0.1-SNAPSHOT mockito @@ -58,12 +58,6 @@ ${powermock.version} test
- - org.hamcrest - java-hamcrest - ${hamcrest.version} - - org.springframework.boot spring-boot-starter @@ -96,7 +90,7 @@ 19.0 - 1.7.0 + 2.0.2 2.0.0.0 2.1.1
diff --git a/testing-modules/mockito/src/main/java/org/baeldung/mockito/service/ActionHandler.java b/testing-modules/mockito/src/main/java/com/baeldung/mockito/callbacks/ActionHandler.java similarity index 93% rename from testing-modules/mockito/src/main/java/org/baeldung/mockito/service/ActionHandler.java rename to testing-modules/mockito/src/main/java/com/baeldung/mockito/callbacks/ActionHandler.java index 289dcff399..d70fc2b690 100644 --- a/testing-modules/mockito/src/main/java/org/baeldung/mockito/service/ActionHandler.java +++ b/testing-modules/mockito/src/main/java/com/baeldung/mockito/callbacks/ActionHandler.java @@ -1,4 +1,4 @@ -package org.baeldung.mockito.service; +package com.baeldung.mockito.callbacks; public class ActionHandler { diff --git a/testing-modules/mockito/src/main/java/org/baeldung/mockito/service/Callback.java b/testing-modules/mockito/src/main/java/com/baeldung/mockito/callbacks/Callback.java similarity index 61% rename from testing-modules/mockito/src/main/java/org/baeldung/mockito/service/Callback.java rename to testing-modules/mockito/src/main/java/com/baeldung/mockito/callbacks/Callback.java index fb8d01ce2e..cc6180c249 100644 --- a/testing-modules/mockito/src/main/java/org/baeldung/mockito/service/Callback.java +++ b/testing-modules/mockito/src/main/java/com/baeldung/mockito/callbacks/Callback.java @@ -1,4 +1,4 @@ -package org.baeldung.mockito.service; +package com.baeldung.mockito.callbacks; public interface Callback { diff --git a/testing-modules/mockito/src/main/java/org/baeldung/mockito/service/Data.java b/testing-modules/mockito/src/main/java/com/baeldung/mockito/callbacks/Data.java similarity index 82% rename from testing-modules/mockito/src/main/java/org/baeldung/mockito/service/Data.java rename to testing-modules/mockito/src/main/java/com/baeldung/mockito/callbacks/Data.java index 665c05382c..9549995469 100644 --- a/testing-modules/mockito/src/main/java/org/baeldung/mockito/service/Data.java +++ b/testing-modules/mockito/src/main/java/com/baeldung/mockito/callbacks/Data.java @@ -1,4 +1,4 @@ -package org.baeldung.mockito.service; +package com.baeldung.mockito.callbacks; public class Data { diff --git a/testing-modules/mockito/src/main/java/org/baeldung/mockito/service/Response.java b/testing-modules/mockito/src/main/java/com/baeldung/mockito/callbacks/Response.java similarity index 90% rename from testing-modules/mockito/src/main/java/org/baeldung/mockito/service/Response.java rename to testing-modules/mockito/src/main/java/com/baeldung/mockito/callbacks/Response.java index 22474a5ba7..03aded3895 100644 --- a/testing-modules/mockito/src/main/java/org/baeldung/mockito/service/Response.java +++ b/testing-modules/mockito/src/main/java/com/baeldung/mockito/callbacks/Response.java @@ -1,4 +1,4 @@ -package org.baeldung.mockito.service; +package com.baeldung.mockito.callbacks; public class Response { diff --git a/testing-modules/mockito/src/main/java/org/baeldung/mockito/service/Service.java b/testing-modules/mockito/src/main/java/com/baeldung/mockito/callbacks/Service.java similarity index 70% rename from testing-modules/mockito/src/main/java/org/baeldung/mockito/service/Service.java rename to testing-modules/mockito/src/main/java/com/baeldung/mockito/callbacks/Service.java index 63434e53fb..d9f1a44422 100644 --- a/testing-modules/mockito/src/main/java/org/baeldung/mockito/service/Service.java +++ b/testing-modules/mockito/src/main/java/com/baeldung/mockito/callbacks/Service.java @@ -1,4 +1,4 @@ -package org.baeldung.mockito.service; +package com.baeldung.mockito.callbacks; public interface Service { diff --git a/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/Location.java b/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/Location.java deleted file mode 100644 index 52561d07dc..0000000000 --- a/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/Location.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.baeldung.hamcrest; - -public class Location { -} diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/FinalList.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/FinalList.java similarity index 56% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/FinalList.java rename to testing-modules/mockito/src/test/java/com/baeldung/mockito/FinalList.java index e01f189f0b..27b7534978 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/FinalList.java +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/FinalList.java @@ -1,6 +1,4 @@ -package org.baeldung.mockito; - -import org.baeldung.mockito.voidmethods.MyList; +package com.baeldung.mockito; public final class FinalList extends MyList { diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockFinals.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockFinals.java similarity index 89% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/MockFinals.java rename to testing-modules/mockito/src/test/java/com/baeldung/mockito/MockFinals.java index caa456c891..6ff791ae06 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockFinals.java +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockFinals.java @@ -1,4 +1,4 @@ -package org.baeldung.mockito; +package com.baeldung.mockito; import org.junit.Test; @@ -6,8 +6,6 @@ import static org.junit.Assert.assertNotEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import org.baeldung.mockito.voidmethods.MyList; - public class MockFinals { @Test diff --git a/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockFinalsUnitTest.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockFinalsUnitTest.java new file mode 100644 index 0000000000..bb03fca06f --- /dev/null +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockFinalsUnitTest.java @@ -0,0 +1,37 @@ +package com.baeldung.mockito; + +import org.junit.Test; + +import static org.junit.Assert.assertNotEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import com.baeldung.mockito.MyList; + +public class MockFinalsUnitTest { + + @Test + public void whenMockFinalClassMockWorks() { + + FinalList finalList = new FinalList(); + + FinalList mock = mock(FinalList.class); + when(mock.size()).thenReturn(2); + + assertNotEquals(mock.size(), finalList.size()); + + } + + @Test + public void whenMockFinalMethodMockWorks() { + + MyList myList = new MyList(); + + MyList mock = mock(MyList.class); + when(mock.finalMethod()).thenReturn(1); + + assertNotEquals(mock.finalMethod(), myList.finalMethod()); + } + + + } diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoAnnotationIntegrationTest.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoAnnotationIntegrationTest.java similarity index 98% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoAnnotationIntegrationTest.java rename to testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoAnnotationIntegrationTest.java index 5e083adbf5..94054d1cbb 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoAnnotationIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoAnnotationIntegrationTest.java @@ -1,4 +1,4 @@ -package org.baeldung.mockito; +package com.baeldung.mockito; import org.junit.Before; import org.junit.Test; diff --git a/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoAnnotationUnitTest.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoAnnotationUnitTest.java new file mode 100644 index 0000000000..731183bae2 --- /dev/null +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoAnnotationUnitTest.java @@ -0,0 +1,114 @@ +package com.baeldung.mockito; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.*; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import static org.junit.Assert.assertEquals; + +//@RunWith(MockitoJUnitRunner.class) +public class MockitoAnnotationUnitTest { + + @Mock + private List mockedList; + + @Spy + private List spiedList = new ArrayList<>(); + + @Before + public void init() { + MockitoAnnotations.initMocks(this); + } + + // tests + + @Test + public void whenNotUseMockAnnotation_thenCorrect() { + final List mockList = Mockito.mock(List.class); + mockList.add("one"); + Mockito.verify(mockList).add("one"); + assertEquals(0, mockList.size()); + + Mockito.when(mockList.size()).thenReturn(100); + assertEquals(100, mockList.size()); + } + + @Test + public void whenUseMockAnnotation_thenMockIsInjected() { + mockedList.add("one"); + Mockito.verify(mockedList).add("one"); + assertEquals(0, mockedList.size()); + + Mockito.when(mockedList.size()).thenReturn(100); + assertEquals(100, mockedList.size()); + } + + @Test + public void whenNotUseSpyAnnotation_thenCorrect() { + final List spyList = Mockito.spy(new ArrayList()); + spyList.add("one"); + spyList.add("two"); + + Mockito.verify(spyList).add("one"); + Mockito.verify(spyList).add("two"); + + assertEquals(2, spyList.size()); + + Mockito.doReturn(100).when(spyList).size(); + assertEquals(100, spyList.size()); + } + + @Test + public void whenUseSpyAnnotation_thenSpyIsInjectedCorrectly() { + spiedList.add("one"); + spiedList.add("two"); + + Mockito.verify(spiedList).add("one"); + Mockito.verify(spiedList).add("two"); + + assertEquals(2, spiedList.size()); + + Mockito.doReturn(100).when(spiedList).size(); + assertEquals(100, spiedList.size()); + } + + @Test + public void whenNotUseCaptorAnnotation_thenCorrect() { + final List mockList = Mockito.mock(List.class); + final ArgumentCaptor arg = ArgumentCaptor.forClass(String.class); + mockList.add("one"); + Mockito.verify(mockList).add(arg.capture()); + + assertEquals("one", arg.getValue()); + } + + @Captor + private + ArgumentCaptor argCaptor; + + @Test + public void whenUseCaptorAnnotation_thenTheSam() { + mockedList.add("one"); + Mockito.verify(mockedList).add(argCaptor.capture()); + + assertEquals("one", argCaptor.getValue()); + } + + @Mock + private Map wordMap; + + @InjectMocks + private MyDictionary dic = new MyDictionary(); + + @Test + public void whenUseInjectMocksAnnotation_thenCorrect() { + Mockito.when(wordMap.get("aWord")).thenReturn("aMeaning"); + + assertEquals("aMeaning", dic.getMeaning("aWord")); + } + +} diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoConfigExamplesIntegrationTest.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoConfigExamplesIntegrationTest.java similarity index 97% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoConfigExamplesIntegrationTest.java rename to testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoConfigExamplesIntegrationTest.java index 096bbe1ed7..5d3c009edc 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoConfigExamplesIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoConfigExamplesIntegrationTest.java @@ -1,4 +1,4 @@ -package org.baeldung.mockito; +package com.baeldung.mockito; import org.junit.Test; import org.mockito.Mockito; @@ -11,8 +11,6 @@ import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.*; -import org.baeldung.mockito.voidmethods.MyList; - public class MockitoConfigExamplesIntegrationTest { // tests diff --git a/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoConfigExamplesUnitTest.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoConfigExamplesUnitTest.java new file mode 100644 index 0000000000..389dc231c1 --- /dev/null +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoConfigExamplesUnitTest.java @@ -0,0 +1,97 @@ +package com.baeldung.mockito; + +import org.junit.Test; +import org.mockito.Mockito; + +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.*; + +import com.baeldung.mockito.MyList; + +public class MockitoConfigExamplesUnitTest { + + // tests + + @Test + public final void whenMockReturnBehaviorIsConfigured_thenBehaviorIsVerified() { + final MyList listMock = Mockito.mock(MyList.class); + when(listMock.add(anyString())).thenReturn(false); + + final boolean added = listMock.add(randomAlphabetic(6)); + assertThat(added, is(false)); + } + + @Test + public final void whenMockReturnBehaviorIsConfigured2_thenBehaviorIsVerified() { + final MyList listMock = Mockito.mock(MyList.class); + doReturn(false).when(listMock).add(anyString()); + + final boolean added = listMock.add(randomAlphabetic(6)); + assertThat(added, is(false)); + } + + @Test(expected = IllegalStateException.class) + public final void givenMethodIsConfiguredToThrowException_whenCallingMethod_thenExceptionIsThrown() { + final MyList listMock = Mockito.mock(MyList.class); + when(listMock.add(anyString())).thenThrow(IllegalStateException.class); + + listMock.add(randomAlphabetic(6)); + } + + @Test(expected = NullPointerException.class) + public final void whenMethodHasNoReturnType_whenConfiguringBehaviorOfMethod_thenPossible() { + final MyList listMock = Mockito.mock(MyList.class); + doThrow(NullPointerException.class).when(listMock).clear(); + + listMock.clear(); + } + + @Test + public final void givenBehaviorIsConfiguredToThrowExceptionOnSecondCall_whenCallingOnlyOnce_thenNoExceptionIsThrown() { + final MyList listMock = Mockito.mock(MyList.class); + when(listMock.add(anyString())).thenReturn(false).thenThrow(IllegalStateException.class); + + listMock.add(randomAlphabetic(6)); + } + + @Test(expected = IllegalStateException.class) + public final void givenBehaviorIsConfiguredToThrowExceptionOnSecondCall_whenCallingTwice_thenExceptionIsThrown() { + final MyList listMock = Mockito.mock(MyList.class); + when(listMock.add(anyString())).thenReturn(false).thenThrow(IllegalStateException.class); + + listMock.add(randomAlphabetic(6)); + listMock.add(randomAlphabetic(6)); + } + + @Test + public final void whenMockMethodCallIsConfiguredToCallTheRealMethod_thenRealMethodIsCalled() { + final MyList listMock = Mockito.mock(MyList.class); + when(listMock.size()).thenCallRealMethod(); + + assertThat(listMock.size(), equalTo(1)); + } + + @Test + public final void whenMockMethodCallIsConfiguredWithCustomAnswer_thenRealMethodIsCalled() { + final MyList listMock = Mockito.mock(MyList.class); + doAnswer(invocation -> "Always the same").when(listMock).get(anyInt()); + + final String element = listMock.get(1); + assertThat(element, is(equalTo("Always the same"))); + } + + @Test(expected = NullPointerException.class) + public final void givenSpy_whenConfiguringBehaviorOfSpy_thenCorrectlyConfigured() { + final MyList instance = new MyList(); + final MyList spy = Mockito.spy(instance); + + doThrow(NullPointerException.class).when(spy).size(); + spy.size(); + } + +} diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoExceptionIntegrationTest.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoExceptionIntegrationTest.java similarity index 92% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoExceptionIntegrationTest.java rename to testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoExceptionIntegrationTest.java index 9a25ccb28c..23fcba60b8 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoExceptionIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoExceptionIntegrationTest.java @@ -1,13 +1,11 @@ -package org.baeldung.mockito; - -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; +package com.baeldung.mockito; import org.junit.Test; import org.mockito.Mockito; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.*; + public class MockitoExceptionIntegrationTest { @Test(expected = NullPointerException.class) diff --git a/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoExceptionUnitTest.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoExceptionUnitTest.java new file mode 100644 index 0000000000..7ed4fbdf37 --- /dev/null +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoExceptionUnitTest.java @@ -0,0 +1,57 @@ +package com.baeldung.mockito; + +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import org.junit.Test; +import org.mockito.Mockito; + +public class MockitoExceptionUnitTest { + + @Test(expected = NullPointerException.class) + public void whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown() { + MyDictionary dictMock = mock(MyDictionary.class); + when(dictMock.getMeaning(anyString())).thenThrow(NullPointerException.class); + + dictMock.getMeaning("word"); + } + + @Test(expected = IllegalStateException.class) + public void whenConfigVoidRetunMethodToThrowEx_thenExIsThrown() { + MyDictionary dictMock = mock(MyDictionary.class); + doThrow(IllegalStateException.class).when(dictMock) + .add(anyString(), anyString()); + + dictMock.add("word", "meaning"); + } + + @Test(expected = NullPointerException.class) + public void whenConfigNonVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown() { + MyDictionary dictMock = mock(MyDictionary.class); + when(dictMock.getMeaning(anyString())).thenThrow(new NullPointerException("Error occurred")); + + dictMock.getMeaning("word"); + } + + @Test(expected = IllegalStateException.class) + public void whenConfigVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown() { + MyDictionary dictMock = mock(MyDictionary.class); + doThrow(new IllegalStateException("Error occurred")).when(dictMock) + .add(anyString(), anyString()); + + dictMock.add("word", "meaning"); + } + + // ===== + + @Test(expected = NullPointerException.class) + public void givenSpy_whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown() { + MyDictionary dict = new MyDictionary(); + MyDictionary spy = Mockito.spy(dict); + + when(spy.getMeaning(anyString())).thenThrow(NullPointerException.class); + spy.getMeaning("word"); + } +} diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoInjectIntoSpyUnitTest.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoInjectIntoSpyUnitTest.java similarity index 90% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoInjectIntoSpyUnitTest.java rename to testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoInjectIntoSpyUnitTest.java index 568492ca10..d6a11bbc7d 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoInjectIntoSpyUnitTest.java +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoInjectIntoSpyUnitTest.java @@ -1,13 +1,12 @@ -package org.baeldung.mockito; +package com.baeldung.mockito; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnitRunner; import org.mockito.*; import org.mockito.junit.MockitoJUnitRunner; -import java.util.ArrayList; -import java.util.List; import java.util.Map; import static org.junit.Assert.assertEquals; diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoMockIntegrationTest.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoMockIntegrationTest.java similarity index 96% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoMockIntegrationTest.java rename to testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoMockIntegrationTest.java index de26642ede..e8cbcc4e8c 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoMockIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoMockIntegrationTest.java @@ -1,22 +1,19 @@ -package org.baeldung.mockito; +package com.baeldung.mockito; -import static org.mockito.Mockito.*; - -import org.baeldung.mockito.voidmethods.MyList; - -import static org.junit.Assert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.containsString; -import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; - -import org.junit.Test; import org.junit.Rule; +import org.junit.Test; import org.junit.rules.ExpectedException; import org.mockito.MockSettings; import org.mockito.exceptions.verification.TooLittleActualInvocations; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.*; + public class MockitoMockIntegrationTest { private static class CustomAnswer implements Answer { diff --git a/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoMockUnitTest.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoMockUnitTest.java new file mode 100644 index 0000000000..e1d99f80a2 --- /dev/null +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoMockUnitTest.java @@ -0,0 +1,72 @@ +package com.baeldung.mockito; + +import static org.mockito.Mockito.*; + +import com.baeldung.mockito.MyList; + +import static org.junit.Assert.assertThat; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.containsString; +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; + +import org.junit.Test; +import org.junit.Rule; +import org.junit.rules.ExpectedException; +import org.mockito.MockSettings; +import org.mockito.exceptions.verification.TooLittleActualInvocations; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; + +public class MockitoMockUnitTest { + + private static class CustomAnswer implements Answer { + @Override + public Boolean answer(InvocationOnMock invocation) throws Throwable { + return false; + } + } + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Test + public void whenUsingSimpleMock_thenCorrect() { + MyList listMock = mock(MyList.class); + when(listMock.add(anyString())).thenReturn(false); + boolean added = listMock.add(randomAlphabetic(6)); + + verify(listMock).add(anyString()); + assertThat(added, is(false)); + } + + @Test + public void whenUsingMockWithName_thenCorrect() { + MyList listMock = mock(MyList.class, "myMock"); + when(listMock.add(anyString())).thenReturn(false); + listMock.add(randomAlphabetic(6)); + + thrown.expect(TooLittleActualInvocations.class); + thrown.expectMessage(containsString("myMock.add")); + + verify(listMock, times(2)).add(anyString()); + } + + @Test + public void whenUsingMockWithAnswer_thenCorrect() { + MyList listMock = mock(MyList.class, new CustomAnswer()); + boolean added = listMock.add(randomAlphabetic(6)); + + verify(listMock).add(anyString()); + assertThat(added, is(false)); + } + + @Test + public void whenUsingMockWithSettings_thenCorrect() { + MockSettings customSettings = withSettings().defaultAnswer(new CustomAnswer()); + MyList listMock = mock(MyList.class, customSettings); + boolean added = listMock.add(randomAlphabetic(6)); + + verify(listMock).add(anyString()); + assertThat(added, is(false)); + } +} \ No newline at end of file diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoVerifyExamplesIntegrationTest.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoVerifyExamplesIntegrationTest.java similarity index 97% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoVerifyExamplesIntegrationTest.java rename to testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoVerifyExamplesIntegrationTest.java index 9c71b1fc4f..b5075d7db2 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoVerifyExamplesIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoVerifyExamplesIntegrationTest.java @@ -1,8 +1,6 @@ -package org.baeldung.mockito; +package com.baeldung.mockito; import com.google.common.collect.Lists; - -import org.baeldung.mockito.voidmethods.MyList; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.InOrder; diff --git a/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoVerifyExamplesUnitTest.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoVerifyExamplesUnitTest.java new file mode 100644 index 0000000000..ca09f77d2d --- /dev/null +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MockitoVerifyExamplesUnitTest.java @@ -0,0 +1,119 @@ +package com.baeldung.mockito; + +import com.google.common.collect.Lists; + +import com.baeldung.mockito.MyList; +import org.junit.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.InOrder; +import org.mockito.Mockito; +import org.mockito.exceptions.verification.NoInteractionsWanted; + +import java.util.List; + +import static org.hamcrest.Matchers.hasItem; +import static org.junit.Assert.assertThat; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.*; + +public class MockitoVerifyExamplesUnitTest { + + // tests + + @Test + public final void givenInteractionWithMockOccurred_whenVerifyingInteraction_thenCorrect() { + final List mockedList = mock(MyList.class); + mockedList.size(); + verify(mockedList).size(); + } + + @Test + public final void givenOneInteractionWithMockOccurred_whenVerifyingNumberOfInteractions_thenCorrect() { + final List mockedList = mock(MyList.class); + mockedList.size(); + verify(mockedList, times(1)).size(); + } + + @Test + public final void givenNoInteractionWithMockOccurred_whenVerifyingInteractions_thenCorrect() { + final List mockedList = mock(MyList.class); + verifyZeroInteractions(mockedList); + } + + @Test + public final void givenNoInteractionWithMethodOfMockOccurred_whenVerifyingInteractions_thenCorrect() { + final List mockedList = mock(MyList.class); + verify(mockedList, times(0)).size(); + } + + @Test(expected = NoInteractionsWanted.class) + public final void givenUnverifiedInteraction_whenVerifyingNoUnexpectedInteractions_thenFail() { + final List mockedList = mock(MyList.class); + mockedList.size(); + mockedList.clear(); + + verify(mockedList).size(); + verifyNoMoreInteractions(mockedList); + } + + @Test + public final void whenVerifyingOrderOfInteractions_thenCorrect() { + final List mockedList = mock(MyList.class); + mockedList.size(); + mockedList.add("a parameter"); + mockedList.clear(); + + final InOrder inOrder = Mockito.inOrder(mockedList); + inOrder.verify(mockedList).size(); + inOrder.verify(mockedList).add("a parameter"); + inOrder.verify(mockedList).clear(); + } + + @Test + public final void whenVerifyingAnInteractionHasNotOccurred_thenCorrect() { + final List mockedList = mock(MyList.class); + mockedList.size(); + + verify(mockedList, never()).clear(); + } + + @Test + public final void whenVerifyingAnInteractionHasOccurredAtLeastOnce_thenCorrect() { + final List mockedList = mock(MyList.class); + mockedList.clear(); + mockedList.clear(); + mockedList.clear(); + + verify(mockedList, atLeast(1)).clear(); + verify(mockedList, atMost(10)).clear(); + } + + // with arguments + + @Test + public final void whenVerifyingAnInteractionWithExactArgument_thenCorrect() { + final List mockedList = mock(MyList.class); + mockedList.add("test"); + + verify(mockedList).add("test"); + } + + @Test + public final void whenVerifyingAnInteractionWithAnyArgument_thenCorrect() { + final List mockedList = mock(MyList.class); + mockedList.add("test"); + + verify(mockedList).add(anyString()); + } + + @Test + public final void whenVerifyingAnInteractionWithArgumentCapture_thenCorrect() { + final List mockedList = mock(MyList.class); + mockedList.addAll(Lists.newArrayList("someElement")); + final ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(List.class); + verify(mockedList).addAll(argumentCaptor.capture()); + final List capturedArgument = argumentCaptor.>getValue(); + assertThat(capturedArgument, hasItem("someElement")); + } + +} diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MyDictionary.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MyDictionary.java similarity index 93% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/MyDictionary.java rename to testing-modules/mockito/src/test/java/com/baeldung/mockito/MyDictionary.java index 9492c90d11..92a4498696 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MyDictionary.java +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MyDictionary.java @@ -1,4 +1,4 @@ -package org.baeldung.mockito; +package com.baeldung.mockito; import java.util.HashMap; import java.util.Map; diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/voidmethods/MyList.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MyList.java similarity index 90% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/voidmethods/MyList.java rename to testing-modules/mockito/src/test/java/com/baeldung/mockito/MyList.java index f28c9b732f..ac3a76e04a 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/voidmethods/MyList.java +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/MyList.java @@ -1,4 +1,4 @@ -package org.baeldung.mockito.voidmethods; +package com.baeldung.mockito; import java.util.AbstractList; diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/service/ActionHandlerUnitTest.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/callbacks/ActionHandlerUnitTest.java similarity index 98% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/service/ActionHandlerUnitTest.java rename to testing-modules/mockito/src/test/java/com/baeldung/mockito/callbacks/ActionHandlerUnitTest.java index c34a9a4a09..5ffe4ab28d 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/service/ActionHandlerUnitTest.java +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/callbacks/ActionHandlerUnitTest.java @@ -1,11 +1,4 @@ -package org.baeldung.mockito.service; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.verify; +package com.baeldung.mockito.callbacks; import org.junit.Before; import org.junit.Test; @@ -15,6 +8,13 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.stubbing.Answer; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.verify; + public class ActionHandlerUnitTest { @Mock diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/voidmethods/MockitoVoidMethodsUnitTest.java b/testing-modules/mockito/src/test/java/com/baeldung/mockito/voidmethods/MockitoVoidMethodsUnitTest.java similarity index 79% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/voidmethods/MockitoVoidMethodsUnitTest.java rename to testing-modules/mockito/src/test/java/com/baeldung/mockito/voidmethods/MockitoVoidMethodsUnitTest.java index 0393490f9a..dd41d98b57 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/voidmethods/MockitoVoidMethodsUnitTest.java +++ b/testing-modules/mockito/src/test/java/com/baeldung/mockito/voidmethods/MockitoVoidMethodsUnitTest.java @@ -1,23 +1,16 @@ -package org.baeldung.mockito.voidmethods; - -import static org.junit.Assert.assertEquals; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.isA; -import static org.mockito.ArgumentMatchers.isNull; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.doCallRealMethod; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; +package com.baeldung.mockito.voidmethods; +import com.baeldung.mockito.MyList; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.junit.MockitoJUnitRunner; import org.mockito.stubbing.Answer; +import static org.junit.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + @RunWith(MockitoJUnitRunner.class) public class MockitoVoidMethodsUnitTest { diff --git a/testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/LuckyNumberGeneratorIntegrationTest.java b/testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/LuckyNumberGeneratorUnitTest.java similarity index 97% rename from testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/LuckyNumberGeneratorIntegrationTest.java rename to testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/LuckyNumberGeneratorUnitTest.java index 5e311c60f2..5b66aa0a9e 100644 --- a/testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/LuckyNumberGeneratorIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/LuckyNumberGeneratorUnitTest.java @@ -14,7 +14,7 @@ import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) @PrepareForTest(fullyQualifiedNames = "com.baeldung.powermockito.introduction.LuckyNumberGenerator") -public class LuckyNumberGeneratorIntegrationTest { +public class LuckyNumberGeneratorUnitTest { @Test public final void givenPrivateMethodWithReturn_whenUsingPowerMockito_thenCorrect() throws Exception { diff --git a/testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/PowerMockitoIntegrationTest.java b/testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/PowerMockitoUnitTest.java similarity index 94% rename from testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/PowerMockitoIntegrationTest.java rename to testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/PowerMockitoUnitTest.java index 1b6431f0c2..4943b0486a 100644 --- a/testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/PowerMockitoIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/com/baeldung/powermockito/introduction/PowerMockitoUnitTest.java @@ -13,7 +13,7 @@ import static org.powermock.api.mockito.PowerMockito.*; @RunWith(PowerMockRunner.class) @PrepareForTest(fullyQualifiedNames = "com.baeldung.powermockito.introduction.*") -public class PowerMockitoIntegrationTest { +public class PowerMockitoUnitTest { @Test public void givenFinalMethods_whenUsingPowerMockito_thenCorrect() throws Exception { @@ -44,10 +44,10 @@ public class PowerMockitoIntegrationTest { assertEquals("Hello Baeldung!", firstWelcome); assertEquals("Hello Baeldung!", secondWelcome); - verifyStatic(times(2)); + verifyStatic(CollaboratorWithStaticMethods.class, times(2)); CollaboratorWithStaticMethods.firstMethod(Mockito.anyString()); - verifyStatic(Mockito.never()); + verifyStatic(CollaboratorWithStaticMethods.class, Mockito.never()); CollaboratorWithStaticMethods.secondMethod(); CollaboratorWithStaticMethods.thirdMethod(); @@ -60,7 +60,6 @@ public class PowerMockitoIntegrationTest { spy(CollaboratorForPartialMocking.class); when(CollaboratorForPartialMocking.staticMethod()).thenReturn("I am a static mock method."); returnValue = CollaboratorForPartialMocking.staticMethod(); - verifyStatic(); CollaboratorForPartialMocking.staticMethod(); assertEquals("I am a static mock method.", returnValue); diff --git a/testing-modules/pom.xml b/testing-modules/pom.xml index c0eb59f15e..6400a2d7e7 100644 --- a/testing-modules/pom.xml +++ b/testing-modules/pom.xml @@ -23,6 +23,7 @@ load-testing-comparison mockito mockito-2 + hamcrest mocks mockserver parallel-tests-junit diff --git a/twilio/README.md b/twilio/README.md index 9d230610c7..b098473fa9 100644 --- a/twilio/README.md +++ b/twilio/README.md @@ -1,4 +1,6 @@ +## Twilio +This module contains articles about Twilio ### Relevant Articles: diff --git a/twitter4j/README.md b/twitter4j/README.md index 3057c1c4b2..0f58240538 100644 --- a/twitter4j/README.md +++ b/twitter4j/README.md @@ -1,3 +1,7 @@ +## Twitter4J + +This module contains articles about Twitter4J + ### Relevant articles - [Introduction to Twitter4J](http://www.baeldung.com/twitter4j) diff --git a/undertow/README.md b/undertow/README.md index 8bfb4832e2..ceec806bd4 100644 --- a/undertow/README.md +++ b/undertow/README.md @@ -1,2 +1,6 @@ +## Undertow + +This module contains articles about JBoss Undertow + ### Relevant Articles: - [Introduction to JBoss Undertow](http://www.baeldung.com/jboss-undertow) diff --git a/vertx-and-rxjava/README.md b/vertx-and-rxjava/README.md index ccd4ce3457..6d217426e0 100644 --- a/vertx-and-rxjava/README.md +++ b/vertx-and-rxjava/README.md @@ -1,2 +1,6 @@ +## Vert.x and RxJava + +This module contains articles about RxJava with Vert.x + ### Relevant articles - [Example of Vertx and RxJava Integration](http://www.baeldung.com/vertx-rx-java) diff --git a/vertx/README.md b/vertx/README.md index e710df362d..fffc0afd62 100644 --- a/vertx/README.md +++ b/vertx/README.md @@ -1,3 +1,7 @@ +## Vert.x + +This module contains articles about Vert.x + ### Relevant articles - [Introduction to Vert.x](http://www.baeldung.com/vertx) diff --git a/vraptor/README.md b/vraptor/README.md index 0dc531ba8d..c5a7128922 100644 --- a/vraptor/README.md +++ b/vraptor/README.md @@ -1,18 +1,32 @@ +## VRaptor + +This module contains articles about VRaptor + +### Relevant Article: + +- [Introduction to VRaptor in Java](http://www.baeldung.com/vraptor) + # VRaptor blank project This is a blank project to help you to use VRaptor. You can easily import in you IDE as Maven project. +### Instructions + +After creating your project, you can run it using Tomcat 7 or higher: + +`mvn tomcat7:run` + +Take care to never run `mvn tomcat:run` since that will use Tomcat 6, which isn't compatible with VRaptor. + +### Em Português + Este é um projeto em branco para ajudar você a usar o VRaptor. Você pode facilmente importá-lo na sua IDE favorita como um projeto Maven. Após criar seu projeto você pode rodá-lo com um tomcat7 ou +: -``` -mvn tomcat7:run -``` +`mvn tomcat7:run` Cuidado para *jamais* executar `mvn tomcat:run` pois ele usará um tomcat6 (incompatível). -### Relevant Article: -- [Introduction to VRaptor in Java](http://www.baeldung.com/vraptor) diff --git a/wicket/README.md b/wicket/README.md index e873ee1ba1..91fab2a364 100644 --- a/wicket/README.md +++ b/wicket/README.md @@ -1,8 +1,13 @@ +## Wicket + +This module contains articles about Wicket + +### Relevant Articles + +- [Introduction to the Wicket Framework](http://www.baeldung.com/intro-to-the-wicket-framework) + +### Execution From the same directory where pom.xml is, execute the following command to run the project: -mvn jetty:run - - -###Relevant Articles: -- [Introduction to the Wicket Framework](http://www.baeldung.com/intro-to-the-wicket-framework) +mvn jetty:run \ No newline at end of file diff --git a/wildfly/pom.xml b/wildfly/pom.xml new file mode 100644 index 0000000000..bd2c93a633 --- /dev/null +++ b/wildfly/pom.xml @@ -0,0 +1,80 @@ + + + 4.0.0 + + org.springframework + gs-spring-boot-wildfly + 0.1.0 + + war + + + org.springframework.boot + spring-boot-starter-parent + 2.1.6.RELEASE + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + org.springframework.boot + spring-boot-starter-test + test + + + javax.servlet + javax.servlet-api + provided + + + + + + 1.8 + + + + + + maven-failsafe-plugin + + + + integration-test + verify + + + + + + + org.apache.maven.plugins + maven-war-plugin + + + + jdk.unsupported + + + + + + + diff --git a/wildfly/src/main/java/hello/Application.java b/wildfly/src/main/java/hello/Application.java new file mode 100644 index 0000000000..07b259e3a9 --- /dev/null +++ b/wildfly/src/main/java/hello/Application.java @@ -0,0 +1,40 @@ +package hello; + +import java.util.Arrays; + +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; + +@SpringBootApplication +public class Application extends SpringBootServletInitializer { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(Application.class); + } + + @Bean + public CommandLineRunner commandLineRunner(ApplicationContext ctx) { + return args -> { + + System.out.println("Let's inspect the beans provided by Spring Boot:"); + + String[] beanNames = ctx.getBeanDefinitionNames(); + Arrays.sort(beanNames); + for (String beanName : beanNames) { + System.out.println(beanName); + } + + }; + } + +} diff --git a/wildfly/src/main/java/hello/HelloController.java b/wildfly/src/main/java/hello/HelloController.java new file mode 100644 index 0000000000..d9c1069cc5 --- /dev/null +++ b/wildfly/src/main/java/hello/HelloController.java @@ -0,0 +1,14 @@ +package hello; + +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.RequestMapping; + +@RestController +public class HelloController { + + @RequestMapping("/") + public String index() { + return "Greetings from Spring Boot!"; + } + +} diff --git a/xml/README.md b/xml/README.md index fb070100db..f125955089 100644 --- a/xml/README.md +++ b/xml/README.md @@ -1,6 +1,11 @@ +## XML + +This module contains articles about eXtensible Markup Language (XML) + ### Relevant Articles: - [Intro to XPath with Java](http://www.baeldung.com/java-xpath) - [Introduction to JiBX](http://www.baeldung.com/jibx) - [XML Libraries Support in Java](http://www.baeldung.com/java-xml-libraries) - [DOM parsing with Xerces](http://www.baeldung.com/java-xerces-dom-parsing) - [Write an org.w3.dom.Document to a File](https://www.baeldung.com/java-write-xml-document-file) +- [Convert XML to HTML in Java](https://www.baeldung.com/java-convert-xml-to-html) diff --git a/xml/pom.xml b/xml/pom.xml index 540b1fc03b..bbd607f9b5 100644 --- a/xml/pom.xml +++ b/xml/pom.xml @@ -1,6 +1,6 @@ + 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 xml 0.1-SNAPSHOT @@ -59,6 +59,16 @@ stax-api ${stax-api.version} + + org.freemarker + freemarker + ${freemarker.version} + + + com.github.spullara.mustache.java + compiler + ${mustache.version} + org.openjdk.jmh @@ -127,25 +137,68 @@ - - xml - - - src/main/resources - true - - - - - maven-compiler-plugin - ${maven-compiler-plugin.version} - - - maven-surefire-plugin - ${maven-surefire-plugin.version} - - - + + xml + + + src/main/resources + true + + + + + + org.jibx + maven-jibx-plugin + + + + + + org.jibx + maven-jibx-plugin + ${maven-jibx-plugin.version} + + src/main/resources + + *-binding.xml + + + template-binding.xml + + src/main/resources + + *-binding.xml + + true + + + + process-classes + process-classes + + bind + + + + process-test-classes + process-test-classes + + test-bind + + + + + + maven-compiler-plugin + ${maven-compiler-plugin.version} + + + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + @@ -324,6 +377,8 @@ 2.6.3 5.5.0 1.21 + 2.3.29 + 0.9.6 3.5 2.4 diff --git a/xml/src/main/java/com/baeldung/sax/SaxParserMain.java b/xml/src/main/java/com/baeldung/sax/SaxParserMain.java new file mode 100644 index 0000000000..4908c10386 --- /dev/null +++ b/xml/src/main/java/com/baeldung/sax/SaxParserMain.java @@ -0,0 +1,109 @@ +package com.baeldung.sax; + +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.DefaultHandler; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class SaxParserMain { + public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { + SAXParserFactory factory = SAXParserFactory.newInstance(); + SAXParser saxParser = factory.newSAXParser(); + + BaeldungHandler baeldungHandler = new BaeldungHandler(); + saxParser.parse("xml/src/main/resources/sax/baeldung.xml", baeldungHandler); + System.out.println(baeldungHandler.getWebsite()); + } + + public static class BaeldungHandler extends DefaultHandler { + private static final String ARTICLES = "articles"; + private static final String ARTICLE = "article"; + private static final String TITLE = "title"; + private static final String CONTENT = "content"; + + private Baeldung website; + private String elementValue; + + @Override + public void characters(char[] ch, int start, int length) throws SAXException { + elementValue = new String(ch, start, length); + } + + @Override + public void startDocument() throws SAXException { + website = new Baeldung(); + } + + @Override + public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { + switch (qName) { + case ARTICLES: + website.setArticleList(new ArrayList<>()); + break; + case ARTICLE: + website.getArticleList().add(new BaeldungArticle()); + } + } + + @Override + public void endElement(String uri, String localName, String qName) throws SAXException { + switch (qName) { + case TITLE: + latestArticle().setTitle(elementValue); + break; + case CONTENT: + latestArticle().setContent(elementValue); + break; + } + } + + private BaeldungArticle latestArticle() { + List articleList = website.getArticleList(); + int latestArticleIndex = articleList.size() - 1; + return articleList.get(latestArticleIndex); + } + + public Baeldung getWebsite() { + return website; + } + } + + public static class Baeldung { + private List articleList; + + public void setArticleList(List articleList) { + this.articleList = articleList; + } + + public List getArticleList() { + return this.articleList; + } + } + + public static class BaeldungArticle { + private String title; + private String content; + + public void setTitle(String title) { + this.title = title; + } + + public String getTitle() { + return this.title; + } + + public void setContent(String content) { + this.content = content; + } + + public String getContent() { + return this.content; + } + } +} diff --git a/xml/src/main/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformer.java b/xml/src/main/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformer.java new file mode 100644 index 0000000000..04e9b2e8cf --- /dev/null +++ b/xml/src/main/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformer.java @@ -0,0 +1,41 @@ +package com.baeldung.xmlhtml.freemarker; + +import com.baeldung.xmlhtml.stax.StaxTransformer; +import freemarker.template.Configuration; +import freemarker.template.Template; +import freemarker.template.TemplateException; +import freemarker.template.TemplateExceptionHandler; + +import javax.xml.stream.XMLStreamException; +import java.io.File; +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; +import java.nio.charset.StandardCharsets; + +public class FreemarkerTransformer { + private StaxTransformer staxTransformer; + private String templateDirectory; + private String templateFile; + + public FreemarkerTransformer(StaxTransformer staxTransformer, String templateDirectory, String templateFile) { + this.staxTransformer = staxTransformer; + this.templateDirectory = templateDirectory; + this.templateFile = templateFile; + } + + public String html() throws IOException, TemplateException { + Configuration cfg = new Configuration(Configuration.VERSION_2_3_29); + cfg.setDirectoryForTemplateLoading(new File(templateDirectory)); + cfg.setDefaultEncoding(StandardCharsets.UTF_8.toString()); + cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); + cfg.setLogTemplateExceptions(false); + cfg.setWrapUncheckedExceptions(true); + cfg.setFallbackOnNullLoopVariable(false); + Template temp = cfg.getTemplate(templateFile); + try (Writer output = new StringWriter()) { + temp.process(staxTransformer.getMap(), output); + return output.toString(); + } + } +} diff --git a/xml/src/main/java/com/baeldung/xmlhtml/helpers/XMLRunner.java b/xml/src/main/java/com/baeldung/xmlhtml/helpers/XMLRunner.java index 02b2577795..2bd6895c52 100644 --- a/xml/src/main/java/com/baeldung/xmlhtml/helpers/XMLRunner.java +++ b/xml/src/main/java/com/baeldung/xmlhtml/helpers/XMLRunner.java @@ -2,15 +2,11 @@ package com.baeldung.xmlhtml.helpers; import com.baeldung.xmlhtml.helpers.jaxb.JAXBHelper; -import com.baeldung.xmlhtml.helpers.jaxp.JAXPHelper; -import com.baeldung.xmlhtml.helpers.stax.STAXHelper; +import com.baeldung.xmlhtml.stax.StaxTransformer; public class XMLRunner { public static void doWork() { JAXBHelper.example(); - JAXPHelper.saxParser(); - JAXPHelper.documentBuilder(); - STAXHelper.write(STAXHelper.read()); } } diff --git a/xml/src/main/java/com/baeldung/xmlhtml/helpers/jaxp/CustomHandler.java b/xml/src/main/java/com/baeldung/xmlhtml/helpers/jaxp/CustomHandler.java deleted file mode 100644 index e6351c9e22..0000000000 --- a/xml/src/main/java/com/baeldung/xmlhtml/helpers/jaxp/CustomHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.baeldung.xmlhtml.helpers.jaxp; - -import org.xml.sax.ContentHandler; -import org.xml.sax.Locator; - -import static com.baeldung.xmlhtml.Constants.*; - -public class CustomHandler implements ContentHandler { - - public void startDocument() {} - - public void startElement(String uri, String localName, String qName, org.xml.sax.Attributes atts) { } - - public void endDocument() { - System.out.println(DOCUMENT_END); - } - - public void endElement(String uri, String localName, String qName) { } - - public void startPrefixMapping(String prefix, String uri) { } - - public void endPrefixMapping(String prefix) { } - - public void setDocumentLocator(Locator locator) { } - - public void characters(char[] ch, int start, int length) { } - - public void ignorableWhitespace(char[] ch, int start, int length) { } - - public void processingInstruction(String target, String data) { } - - public void skippedEntity(String name) { } - -} diff --git a/xml/src/main/java/com/baeldung/xmlhtml/helpers/jaxp/JAXPHelper.java b/xml/src/main/java/com/baeldung/xmlhtml/helpers/jaxp/JAXPHelper.java deleted file mode 100644 index 3196d543da..0000000000 --- a/xml/src/main/java/com/baeldung/xmlhtml/helpers/jaxp/JAXPHelper.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.baeldung.xmlhtml.helpers.jaxp; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.xml.sax.XMLReader; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; -import java.io.File; - -import static com.baeldung.xmlhtml.Constants.*; - -public class JAXPHelper { - - private static void print(Document document) { - NodeList list = document.getChildNodes(); - try { - for (int i = 0; i < list.getLength(); i++) { - Node node = list.item(i); - String message = - node.getNodeType() - + WHITE_SPACE - + node.getNodeName() - + LINE_BREAK; - System.out.println(message); - } - } catch (Exception ex) { - System.out.println(EXCEPTION_ENCOUNTERED + ex); - } - } - - public static void saxParser() { - SAXParserFactory spf = SAXParserFactory.newInstance(); - spf.setNamespaceAware(true); - try { - SAXParser saxParser = spf.newSAXParser(); - XMLReader xmlReader = saxParser.getXMLReader(); - xmlReader.setContentHandler(new CustomHandler()); - xmlReader.parse(XML_FILE_IN); - } catch (Exception ex) { - System.out.println(EXCEPTION_ENCOUNTERED + ex); - } - } - - public static void documentBuilder() { - DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - try { - DocumentBuilder db = dbf.newDocumentBuilder(); - Document parsed = db.parse(new File(XML_FILE_IN)); - Element xml = parsed.getDocumentElement(); - - Document doc = db.newDocument(); - Element html = doc.createElement("html"); - Element head = doc.createElement("head"); - html.appendChild(head); - - Element body = doc.createElement("body"); - Element descendantOne = doc.createElement("p"); - descendantOne.setTextContent("descendantOne: " + - xml.getElementsByTagName("descendantOne") - .item(0).getTextContent()); - Element descendantThree = doc.createElement("p"); - descendantThree.setTextContent("descendantThree: " + - xml.getElementsByTagName("descendantThree") - .item(0).getTextContent()); - Element nested = doc.createElement("div"); - nested.appendChild(descendantThree); - - body.appendChild(descendantOne); - body.appendChild(nested); - html.appendChild(body); - doc.appendChild(html); - - TransformerFactory tFactory = TransformerFactory.newInstance(); - tFactory - .newTransformer() - .transform(new DOMSource(doc), new StreamResult(new File(JAXP_FILE_OUT))); - - } catch (Exception ex) { - System.out.println(EXCEPTION_ENCOUNTERED + ex); - } - } -} diff --git a/xml/src/main/java/com/baeldung/xmlhtml/helpers/stax/STAXHelper.java b/xml/src/main/java/com/baeldung/xmlhtml/helpers/stax/STAXHelper.java deleted file mode 100644 index a9b9217b6a..0000000000 --- a/xml/src/main/java/com/baeldung/xmlhtml/helpers/stax/STAXHelper.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.baeldung.xmlhtml.helpers.stax; - -import com.baeldung.xmlhtml.pojo.stax.Body; -import com.baeldung.xmlhtml.pojo.stax.CustomElement; -import com.baeldung.xmlhtml.pojo.stax.NestedElement; - -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLOutputFactory; -import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.XMLStreamWriter; -import java.io.FileInputStream; -import java.io.FileWriter; - -import static com.baeldung.xmlhtml.Constants.*; - -public class STAXHelper { - - private static XMLStreamReader reader() { - XMLStreamReader xmlStreamReader = null; - try { - xmlStreamReader = XMLInputFactory.newInstance().createXMLStreamReader(new FileInputStream(XML_FILE_IN)); - } catch (Exception ex) { - System.out.println(EXCEPTION_ENCOUNTERED + ex); - } - return xmlStreamReader; - } - - private static XMLStreamWriter writer() { - XMLStreamWriter xmlStreamWriter = null; - try { - xmlStreamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(new FileWriter(STAX_FILE_OUT)); - } catch (Exception ex) { - System.out.println(EXCEPTION_ENCOUNTERED + ex); - } - return xmlStreamWriter; - } - - public static Body read() { - Body body = new Body(); - try { - XMLStreamReader xmlStreamReader = reader(); - - CustomElement customElement = new CustomElement(); - NestedElement nestedElement = new NestedElement(); - CustomElement child = new CustomElement(); - - while (xmlStreamReader.hasNext()) { - xmlStreamReader.next(); - if (xmlStreamReader.isStartElement()) { - System.out.println(xmlStreamReader.getLocalName()); - if (xmlStreamReader.getLocalName().equals("descendantOne")) { - customElement.setValue(xmlStreamReader.getElementText()); - } - if (xmlStreamReader.getLocalName().equals("descendantThree")) { - child.setValue(xmlStreamReader.getElementText()); - } - } - } - - nestedElement.setCustomElement(child); - body.setCustomElement(customElement); - body.setNestedElement(nestedElement); - - xmlStreamReader.close(); - - } catch (Exception ex) { - System.out.println(EXCEPTION_ENCOUNTERED + ex); - } - return body; - } - - public static void write(Body body) { - try { - - XMLStreamWriter xmlStreamWriter = writer(); - xmlStreamWriter.writeStartElement("html"); - xmlStreamWriter.writeCharacters(BREAK + TAB); - xmlStreamWriter.writeStartElement("head"); - xmlStreamWriter.writeCharacters(BREAK + TAB + TAB); - xmlStreamWriter.writeStartElement("meta"); - xmlStreamWriter.writeEndElement(); - xmlStreamWriter.writeCharacters(BREAK + TAB); - xmlStreamWriter.writeEndElement(); - xmlStreamWriter.writeCharacters(BREAK + TAB); - xmlStreamWriter.writeStartElement("body"); - xmlStreamWriter.writeCharacters(BREAK + TAB + TAB); - xmlStreamWriter.writeStartElement("p"); - xmlStreamWriter.writeCharacters("descendantOne: " + body.getCustomElement().getValue()); - xmlStreamWriter.writeEndElement(); - xmlStreamWriter.writeCharacters(BREAK + TAB + TAB); - xmlStreamWriter.writeStartElement("div"); - xmlStreamWriter.writeCharacters(BREAK + TAB + TAB + TAB); - xmlStreamWriter.writeStartElement("p"); - xmlStreamWriter.writeCharacters(BREAK); - xmlStreamWriter.writeCharacters(TAB + TAB + TAB + TAB + "descendantThree: " + body.getNestedElement().getCustomElement().getValue()); - xmlStreamWriter.writeCharacters(BREAK + TAB + TAB + TAB); - xmlStreamWriter.writeEndElement(); - xmlStreamWriter.writeCharacters(BREAK + TAB + TAB); - xmlStreamWriter.writeEndElement(); - xmlStreamWriter.writeCharacters(BREAK + TAB); - xmlStreamWriter.writeEndElement(); - xmlStreamWriter.writeCharacters(BREAK); - xmlStreamWriter.writeEndDocument(); - xmlStreamWriter.flush(); - xmlStreamWriter.close(); - - } catch (Exception ex) { - System.out.println(EXCEPTION_ENCOUNTERED + ex); - } - - } -} diff --git a/xml/src/main/java/com/baeldung/xmlhtml/jaxp/JaxpTransformer.java b/xml/src/main/java/com/baeldung/xmlhtml/jaxp/JaxpTransformer.java new file mode 100644 index 0000000000..3c288122a3 --- /dev/null +++ b/xml/src/main/java/com/baeldung/xmlhtml/jaxp/JaxpTransformer.java @@ -0,0 +1,103 @@ +package com.baeldung.xmlhtml.jaxp; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.xml.sax.SAXException; + +import javax.xml.XMLConstants; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; +import java.util.HashMap; +import java.util.Map; + +public class JaxpTransformer { + + private Document input; + private DocumentBuilderFactory factory; + + public JaxpTransformer(String resourcePath) throws ParserConfigurationException, IOException, SAXException { + // 1- Build the doc from the XML file + factory = DocumentBuilderFactory.newInstance(); + factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); + input = factory + .newDocumentBuilder() + .parse(resourcePath); + } + + public String html() throws ParserConfigurationException, TransformerException, IOException { + Element xml = input.getDocumentElement(); + Document doc = factory + .newDocumentBuilder() + .newDocument(); + //Build Map + Map map = buildMap(xml); + //Head + Element html = doc.createElement("html"); + html.setAttribute("lang", "en"); + Element head = buildHead(map, doc); + html.appendChild(head); + //Body + Element body = buildBody(map, doc); + html.appendChild(body); + doc.appendChild(html); + return String.format("%n%s", applyTransformation(doc)); + } + + private String applyTransformation(Document doc) throws TransformerException, IOException { + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + transformerFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); + transformerFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); + try (Writer output = new StringWriter()) { + Transformer transformer = transformerFactory.newTransformer(); + transformer.transform(new DOMSource(doc), new StreamResult(output)); + return output.toString(); + } + } + + private Map buildMap(Element xml) { + Map map = new HashMap<>(); + map.put("heading", xml + .getElementsByTagName("heading") + .item(0) + .getTextContent()); + map.put("from", String.format("from: %s", xml + .getElementsByTagName("from") + .item(0) + .getTextContent())); + map.put("content", xml + .getElementsByTagName("content") + .item(0) + .getTextContent()); + return map; + } + + private Element buildHead(Map map, Document doc) { + Element head = doc.createElement("head"); + Element title = doc.createElement("title"); + title.setTextContent(map.get("heading")); + head.appendChild(title); + return head; + } + + private Element buildBody(Map map, Document doc) { + Element body = doc.createElement("body"); + Element from = doc.createElement("p"); + from.setTextContent(map.get("from")); + Element success = doc.createElement("p"); + success.setTextContent(map.get("content")); + body.appendChild(from); + body.appendChild(success); + return body; + } + +} diff --git a/xml/src/main/java/com/baeldung/xmlhtml/mustache/MustacheTransformer.java b/xml/src/main/java/com/baeldung/xmlhtml/mustache/MustacheTransformer.java new file mode 100644 index 0000000000..88e93463db --- /dev/null +++ b/xml/src/main/java/com/baeldung/xmlhtml/mustache/MustacheTransformer.java @@ -0,0 +1,31 @@ +package com.baeldung.xmlhtml.mustache; + +import com.baeldung.xmlhtml.stax.StaxTransformer; +import com.github.mustachejava.DefaultMustacheFactory; +import com.github.mustachejava.Mustache; +import com.github.mustachejava.MustacheFactory; + +import javax.xml.stream.XMLStreamException; +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; + +public class MustacheTransformer { + private StaxTransformer staxTransformer; + private String templateFile; + + public MustacheTransformer(StaxTransformer staxTransformer, String templateFile) { + this.staxTransformer = staxTransformer; + this.templateFile = templateFile; + } + + public String html() throws IOException { + MustacheFactory mf = new DefaultMustacheFactory(); + Mustache mustache = mf.compile(templateFile); + try (Writer output = new StringWriter()) { + mustache.execute(output, staxTransformer.getMap()); + output.flush(); + return output.toString(); + } + } +} diff --git a/xml/src/main/java/com/baeldung/xmlhtml/pojo/stax/Body.java b/xml/src/main/java/com/baeldung/xmlhtml/pojo/stax/Body.java deleted file mode 100644 index 630dfe967f..0000000000 --- a/xml/src/main/java/com/baeldung/xmlhtml/pojo/stax/Body.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.baeldung.xmlhtml.pojo.stax; - -public class Body { - - private CustomElement customElement; - - public CustomElement getCustomElement() { - return customElement; - } - public void setCustomElement(CustomElement customElement) { - this.customElement = customElement; - } - - private NestedElement nestedElement; - - public NestedElement getNestedElement() { - return nestedElement; - } - public void setNestedElement(NestedElement nestedElement) { - this.nestedElement = nestedElement; - } - -} \ No newline at end of file diff --git a/xml/src/main/java/com/baeldung/xmlhtml/pojo/stax/CustomElement.java b/xml/src/main/java/com/baeldung/xmlhtml/pojo/stax/CustomElement.java deleted file mode 100644 index 6fc1d7b787..0000000000 --- a/xml/src/main/java/com/baeldung/xmlhtml/pojo/stax/CustomElement.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.baeldung.xmlhtml.pojo.stax; - -public class CustomElement { - - private String value; - - public String getValue() { - return value; - } - public void setValue(String value) { - this.value = value; - } -} diff --git a/xml/src/main/java/com/baeldung/xmlhtml/pojo/stax/NestedElement.java b/xml/src/main/java/com/baeldung/xmlhtml/pojo/stax/NestedElement.java deleted file mode 100644 index 146ee068af..0000000000 --- a/xml/src/main/java/com/baeldung/xmlhtml/pojo/stax/NestedElement.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.baeldung.xmlhtml.pojo.stax; - -public class NestedElement { - - private CustomElement customElement; - - public CustomElement getCustomElement() { - return customElement; - } - public void setCustomElement(CustomElement customElement) { - this.customElement = customElement; - } -} diff --git a/xml/src/main/java/com/baeldung/xmlhtml/stax/StaxTransformer.java b/xml/src/main/java/com/baeldung/xmlhtml/stax/StaxTransformer.java new file mode 100644 index 0000000000..d7762f3c1f --- /dev/null +++ b/xml/src/main/java/com/baeldung/xmlhtml/stax/StaxTransformer.java @@ -0,0 +1,99 @@ +package com.baeldung.xmlhtml.stax; + +import javax.xml.stream.*; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; +import java.util.HashMap; +import java.util.Map; + +public class StaxTransformer { + + private Map map; + + public StaxTransformer(String resourcePath) throws IOException, XMLStreamException { + XMLInputFactory factory = XMLInputFactory.newInstance(); + factory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, Boolean.FALSE); + factory.setProperty(XMLInputFactory.SUPPORT_DTD, Boolean.FALSE); + XMLStreamReader input = null; + try (FileInputStream file = new FileInputStream(resourcePath)) { + input = factory.createXMLStreamReader(file); + map = buildMap(input); + } finally { + if (input != null) { + input.close(); + } + } + } + + public String html() throws XMLStreamException, IOException { + try (Writer output = new StringWriter()) { + XMLStreamWriter writer = XMLOutputFactory + .newInstance() + .createXMLStreamWriter(output); + //Head + writer.writeDTD(""); + writer.writeCharacters(String.format("%n")); + writer.writeStartElement("html"); + writer.writeAttribute("lang", "en"); + writer.writeCharacters(String.format("%n")); + writer.writeStartElement("head"); + writer.writeCharacters(String.format("%n")); + writer.writeDTD(""); + writer.writeCharacters(String.format("%n")); + writer.writeStartElement("title"); + writer.writeCharacters(map.get("heading")); + writer.writeEndElement(); + writer.writeCharacters(String.format("%n")); + writer.writeEndElement(); + writer.writeCharacters(String.format("%n")); + //Body + writer.writeStartElement("body"); + writer.writeCharacters(String.format("%n")); + writer.writeStartElement("p"); + writer.writeCharacters(map.get("from")); + writer.writeEndElement(); + writer.writeCharacters(String.format("%n")); + writer.writeStartElement("p"); + writer.writeCharacters(map.get("content")); + writer.writeEndElement(); + writer.writeCharacters(String.format("%n")); + writer.writeEndElement(); + writer.writeCharacters(String.format("%n")); + writer.writeEndDocument(); + writer.writeCharacters(String.format("%n")); + writer.flush(); + return output.toString(); + } + } + + private Map buildMap(XMLStreamReader input) throws XMLStreamException { + Map tempMap = new HashMap<>(); + while (input.hasNext()) { + input.next(); + if (input.isStartElement()) { + if (input + .getLocalName() + .equals("heading")) { + tempMap.put("heading", input.getElementText()); + } + if (input + .getLocalName() + .equals("from")) { + tempMap.put("from", String.format("from: %s", input.getElementText())); + } + if (input + .getLocalName() + .equals("content")) { + tempMap.put("content", input.getElementText()); + } + } + } + return tempMap; + } + + public Map getMap() { + return map; + } +} diff --git a/xml/src/main/resources/sax/baeldung.xml b/xml/src/main/resources/sax/baeldung.xml new file mode 100644 index 0000000000..6736d5bdca --- /dev/null +++ b/xml/src/main/resources/sax/baeldung.xml @@ -0,0 +1,16 @@ + + +
+ Parsing an XML File Using SAX Parser + SAX Parser's Lorem ipsum... +
+
+ Parsing an XML File Using DOM Parser + DOM Parser's Lorem ipsum... +
+
+ Parsing an XML File Using StAX Parser + StAX Parser's Lorem ipsum... +
+
+
\ No newline at end of file diff --git a/xml/src/test/java/com/baeldung/sax/SaxParserMainUnitTest.java b/xml/src/test/java/com/baeldung/sax/SaxParserMainUnitTest.java new file mode 100644 index 0000000000..333c5619c8 --- /dev/null +++ b/xml/src/test/java/com/baeldung/sax/SaxParserMainUnitTest.java @@ -0,0 +1,44 @@ +package com.baeldung.sax; + +import org.junit.Test; +import org.xml.sax.SAXException; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; +import java.io.IOException; +import java.util.List; + +import static org.junit.Assert.*; + +public class SaxParserMainUnitTest { + + @Test + public void givenAProperXMLFile_whenItIsParsed_ThenAnObjectContainsAllItsElements() throws IOException, SAXException, ParserConfigurationException { + SAXParserFactory factory = SAXParserFactory.newInstance(); + SAXParser saxParser = factory.newSAXParser(); + + SaxParserMain.BaeldungHandler baeldungHandler = new SaxParserMain.BaeldungHandler(); + saxParser.parse("src/test/resources/sax/baeldung.xml", baeldungHandler); + + SaxParserMain.Baeldung result = baeldungHandler.getWebsite(); + + assertNotNull(result); + List articles = result.getArticleList(); + + assertNotNull(articles); + assertEquals(3, articles.size()); + + SaxParserMain.BaeldungArticle articleOne = articles.get(0); + assertEquals("Parsing an XML File Using SAX Parser", articleOne.getTitle()); + assertEquals("SAX Parser's Lorem ipsum...", articleOne.getContent()); + + SaxParserMain.BaeldungArticle articleTwo = articles.get(1); + assertEquals("Parsing an XML File Using DOM Parser", articleTwo.getTitle()); + assertEquals("DOM Parser's Lorem ipsum...", articleTwo.getContent()); + + SaxParserMain.BaeldungArticle articleThree = articles.get(2); + assertEquals("Parsing an XML File Using StAX Parser", articleThree.getTitle()); + assertEquals("StAX Parser's Lorem ipsum...", articleThree.getContent()); + } +} diff --git a/xml/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java b/xml/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java index 351b8bc437..6c4aa02700 100644 --- a/xml/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java +++ b/xml/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java @@ -47,7 +47,9 @@ public class Dom4jProcessorUnitTest { String expectedXml = new String(Files.readAllBytes((Paths.get(getClass().getResource("/xml/attribute_expected.xml") .toURI())))); - String result = transformer.modifyAttribute(attribute, oldValue, newValue); + String result = transformer + .modifyAttribute(attribute, oldValue, newValue) + .replaceAll("(?m)^[ \t]*\r?\n", "");//Delete extra spaces added by Java 11 assertThat(result).and(expectedXml) .areSimilar(); diff --git a/xml/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java b/xml/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java index 40d0c671e7..0fdfcfeb52 100644 --- a/xml/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java +++ b/xml/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java @@ -47,7 +47,9 @@ public class JooxProcessorUnitTest { String expectedXml = new String(Files.readAllBytes((Paths.get(getClass().getResource("/xml/attribute_expected.xml") .toURI())))); - String result = transformer.modifyAttribute(attribute, oldValue, newValue); + String result = transformer + .modifyAttribute(attribute, oldValue, newValue) + .replaceAll("(?m)^[ \t]*\r?\n", "");//Delete extra spaces added by Java 11 assertThat(result).and(expectedXml) .areSimilar(); diff --git a/xml/src/test/java/com/baeldung/xml/jibx/CustomerIntegrationTest.java b/xml/src/test/java/com/baeldung/xml/jibx/CustomerUnitTest.java similarity index 94% rename from xml/src/test/java/com/baeldung/xml/jibx/CustomerIntegrationTest.java rename to xml/src/test/java/com/baeldung/xml/jibx/CustomerUnitTest.java index be28dfe00a..9a4b5bc14b 100644 --- a/xml/src/test/java/com/baeldung/xml/jibx/CustomerIntegrationTest.java +++ b/xml/src/test/java/com/baeldung/xml/jibx/CustomerUnitTest.java @@ -11,7 +11,7 @@ import java.io.InputStream; import static junit.framework.Assert.assertEquals; -public class CustomerIntegrationTest { +public class CustomerUnitTest { @Test public void whenUnmarshalXML_ThenFieldsAreMapped() throws JiBXException, FileNotFoundException { @@ -21,7 +21,7 @@ public class CustomerIntegrationTest { InputStream inputStream = classLoader.getResourceAsStream("Customer1.xml"); Customer customer = (Customer) uctx.unmarshalDocument(inputStream, null); - assertEquals("Stefan Jaegar", customer.getPerson().getName()); + assertEquals("Stefan Jaeger", customer.getPerson().getName()); assertEquals("Davos Dorf", customer.getCity()); } diff --git a/xml/src/test/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java b/xml/src/test/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java new file mode 100644 index 0000000000..c110f88e99 --- /dev/null +++ b/xml/src/test/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java @@ -0,0 +1,32 @@ +package com.baeldung.xmlhtml.freemarker; + +import com.baeldung.xmlhtml.stax.StaxTransformer; +import freemarker.template.TemplateException; +import org.junit.jupiter.api.Test; + +import javax.xml.stream.XMLStreamException; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Paths; + +import static org.assertj.core.api.Assertions.assertThat; + +public class FreemarkerTransformerUnitTest { + + @Test + public void givenXml_whenTransform_thenGetHtml() throws IOException, URISyntaxException, XMLStreamException, TemplateException { + String expectedHtml = new String(Files.readAllBytes((Paths.get(getClass() + .getResource("/xmlhtml/notification.html") + .toURI())))); + StaxTransformer staxTransformer = new StaxTransformer("src/test/resources/xmlhtml/notification.xml"); + String templateFile = "freemarker.html"; + String templateDirectory = "src/test/resources/templates"; + FreemarkerTransformer transformer = new FreemarkerTransformer(staxTransformer, templateDirectory, templateFile); + + String result = transformer.html(); + + assertThat(result).isEqualTo(expectedHtml); + } + +} diff --git a/xml/src/test/java/com/baeldung/xmlhtml/jaxp/JaxpTransformerUnitTest.java b/xml/src/test/java/com/baeldung/xmlhtml/jaxp/JaxpTransformerUnitTest.java new file mode 100644 index 0000000000..02fc422ee9 --- /dev/null +++ b/xml/src/test/java/com/baeldung/xmlhtml/jaxp/JaxpTransformerUnitTest.java @@ -0,0 +1,33 @@ +package com.baeldung.xmlhtml.jaxp; + +import org.junit.jupiter.api.Test; +import org.xml.sax.SAXException; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.TransformerException; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Paths; + +import static org.assertj.core.api.Assertions.assertThat; + +public class JaxpTransformerUnitTest { + + @Test + public void givenXml_whenTransform_thenGetHtml() throws IOException, SAXException, ParserConfigurationException, TransformerException, URISyntaxException { + String path = getClass() + .getResource("/xmlhtml/notification.xml") + .toString(); + String expectedHtml = new String(Files.readAllBytes((Paths.get(getClass() + .getResource("/xmlhtml/notification.html") + .toURI())))); + JaxpTransformer transformer = new JaxpTransformer(path); + + String result = transformer + .html() + .replaceAll("(?m)^\\s+", "");//Delete extra spaces added by Java 11 + + assertThat(result).isEqualTo(expectedHtml); + } +} diff --git a/xml/src/test/java/com/baeldung/xmlhtml/mustache/MustacheTransformerUnitTest.java b/xml/src/test/java/com/baeldung/xmlhtml/mustache/MustacheTransformerUnitTest.java new file mode 100644 index 0000000000..b53a23d4fb --- /dev/null +++ b/xml/src/test/java/com/baeldung/xmlhtml/mustache/MustacheTransformerUnitTest.java @@ -0,0 +1,30 @@ +package com.baeldung.xmlhtml.mustache; + +import com.baeldung.xmlhtml.stax.StaxTransformer; +import org.junit.jupiter.api.Test; + +import javax.xml.stream.XMLStreamException; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Paths; + +import static org.assertj.core.api.Assertions.assertThat; + +public class MustacheTransformerUnitTest { + + @Test + public void givenXml_whenTransform_thenGetHtml() throws IOException, URISyntaxException, XMLStreamException { + String expectedHtml = new String(Files.readAllBytes((Paths.get(getClass() + .getResource("/xmlhtml/notification.html") + .toURI())))); + StaxTransformer staxTransformer = new StaxTransformer("src/test/resources/xmlhtml/notification.xml"); + String templateFile = "src/test/resources/templates/template.mustache"; + MustacheTransformer transformer = new MustacheTransformer(staxTransformer, templateFile); + + String result = transformer.html(); + + assertThat(result).isEqualTo(expectedHtml); + } + +} diff --git a/xml/src/test/java/com/baeldung/xmlhtml/stax/StaxTransformerUnitTest.java b/xml/src/test/java/com/baeldung/xmlhtml/stax/StaxTransformerUnitTest.java new file mode 100644 index 0000000000..0c7329e899 --- /dev/null +++ b/xml/src/test/java/com/baeldung/xmlhtml/stax/StaxTransformerUnitTest.java @@ -0,0 +1,28 @@ +package com.baeldung.xmlhtml.stax; + +import org.junit.jupiter.api.Test; + +import javax.xml.stream.XMLStreamException; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Paths; + +import static org.assertj.core.api.Assertions.assertThat; + +public class StaxTransformerUnitTest { + + @Test + public void givenXml_whenTransform_thenGetHtml() throws IOException, URISyntaxException, XMLStreamException { + String path = "src/test/resources/xmlhtml/notification.xml"; + String expectedHtml = new String(Files.readAllBytes((Paths.get(getClass() + .getResource("/xmlhtml/notification.html") + .toURI())))); + StaxTransformer transformer = new StaxTransformer(path); + + String result = transformer.html(); + + assertThat(result).isEqualTo(expectedHtml); + } + +} diff --git a/xml/src/test/resources/sax/baeldung.xml b/xml/src/test/resources/sax/baeldung.xml new file mode 100644 index 0000000000..6736d5bdca --- /dev/null +++ b/xml/src/test/resources/sax/baeldung.xml @@ -0,0 +1,16 @@ + + +
+ Parsing an XML File Using SAX Parser + SAX Parser's Lorem ipsum... +
+
+ Parsing an XML File Using DOM Parser + DOM Parser's Lorem ipsum... +
+
+ Parsing an XML File Using StAX Parser + StAX Parser's Lorem ipsum... +
+
+
\ No newline at end of file diff --git a/xml/src/test/resources/templates/freemarker.html b/xml/src/test/resources/templates/freemarker.html new file mode 100644 index 0000000000..15ec7f9fff --- /dev/null +++ b/xml/src/test/resources/templates/freemarker.html @@ -0,0 +1,11 @@ + + + + +${heading} + + +

${from}

+

${content}

+ + diff --git a/xml/src/test/resources/templates/template.mustache b/xml/src/test/resources/templates/template.mustache new file mode 100644 index 0000000000..8c209843e1 --- /dev/null +++ b/xml/src/test/resources/templates/template.mustache @@ -0,0 +1,11 @@ + + + + +{{heading}} + + +

{{from}}

+

{{content}}

+ + diff --git a/xml/src/test/resources/xmlhtml/notification.html b/xml/src/test/resources/xmlhtml/notification.html new file mode 100644 index 0000000000..4a0ef09c5d --- /dev/null +++ b/xml/src/test/resources/xmlhtml/notification.html @@ -0,0 +1,11 @@ + + + + +Build #7 passed + + +

from: builds@baeldung.com

+

Success: The Jenkins CI build passed

+ + diff --git a/xml/src/test/resources/xmlhtml/notification.xml b/xml/src/test/resources/xmlhtml/notification.xml new file mode 100644 index 0000000000..c3550d6f04 --- /dev/null +++ b/xml/src/test/resources/xmlhtml/notification.xml @@ -0,0 +1,6 @@ + + + builds@baeldung.com + Build #7 passed + Success: The Jenkins CI build passed + \ No newline at end of file diff --git a/xstream/README.md b/xstream/README.md index bf917e81fb..62996132c8 100644 --- a/xstream/README.md +++ b/xstream/README.md @@ -1,3 +1,7 @@ +## XStream + +This module contains articles about XStream + ## Relevant Articles: - [XStream User Guide: JSON](http://www.baeldung.com/xstream-json-processing)