diff --git a/.gitignore b/.gitignore index be3bc420c5..248cbeae5d 100644 --- a/.gitignore +++ b/.gitignore @@ -83,4 +83,5 @@ jta/transaction-logs/ software-security/sql-injection-samples/derby.log spring-soap/src/main/java/com/baeldung/springsoap/gen/ /report-*.json -transaction.log \ No newline at end of file +transaction.log +*-shell.log \ No newline at end of file diff --git a/akka-streams/README.md b/akka-streams/README.md index 7f2751422b..5f71991def 100644 --- a/akka-streams/README.md +++ b/akka-streams/README.md @@ -1,3 +1,3 @@ ### Relevant articles -- [Guide to Akka Streams](http://www.baeldung.com/akka-streams) +- [Guide to Akka Streams](https://www.baeldung.com/akka-streams) diff --git a/algorithms-genetic/README.md b/algorithms-genetic/README.md index 39f8d59eee..124e9c09e5 100644 --- a/algorithms-genetic/README.md +++ b/algorithms-genetic/README.md @@ -1,6 +1,6 @@ ## Relevant articles: -- [Introduction to Jenetics Library](http://www.baeldung.com/jenetics) -- [Ant Colony Optimization](http://www.baeldung.com/java-ant-colony-optimization) +- [Introduction to Jenetics Library](https://www.baeldung.com/jenetics) +- [Ant Colony Optimization](https://www.baeldung.com/java-ant-colony-optimization) - [Design a Genetic Algorithm in Java](https://www.baeldung.com/java-genetic-algorithm) - [The Traveling Salesman Problem in Java](https://www.baeldung.com/java-simulated-annealing-for-traveling-salesman) diff --git a/algorithms-miscellaneous-2/README.md b/algorithms-miscellaneous-2/README.md index 745b106963..76727a1d4f 100644 --- a/algorithms-miscellaneous-2/README.md +++ b/algorithms-miscellaneous-2/README.md @@ -1,10 +1,10 @@ ## Relevant articles: -- [Dijkstra Algorithm in Java](https://www.baeldung.com/java-dijkstra) +- [Dijkstra Shortest Path 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 +- [A Collaborative Filtering Recommendation System in Java](https://www.baeldung.com/java-collaborative-filtering-recommendations) diff --git a/algorithms-miscellaneous-3/README.md b/algorithms-miscellaneous-3/README.md index 843407f047..9748595a34 100644 --- a/algorithms-miscellaneous-3/README.md +++ b/algorithms-miscellaneous-3/README.md @@ -1,11 +1,17 @@ +## Algorithms - Miscellaneous + +This module contains articles about algorithms. Some classes of algorithms, e.g., [sorting](/algorithms-sorting) and +[genetic algorithms](/algorithms-genetic), have their own dedicated modules. + ## Relevant Articles: - [Java Two Pointer Technique](https://www.baeldung.com/java-two-pointer-technique) - [Implementing Simple State Machines with Java Enums](https://www.baeldung.com/java-enum-simple-state-machine) -- [Converting Between Roman and Arabic Numerals in Java](http://www.baeldung.com/java-convert-roman-arabic) -- [Practical Java Examples of the Big O Notation](http://www.baeldung.com/java-algorithm-complexity) +- [Converting Between Roman and Arabic Numerals in Java](https://www.baeldung.com/java-convert-roman-arabic) +- [Practical Java Examples of the Big O Notation](https://www.baeldung.com/java-algorithm-complexity) - [Checking If a List Is Sorted in Java](https://www.baeldung.com/java-check-if-list-sorted) - [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 +- [Efficient Word Frequency Calculator in Java](https://www.baeldung.com/java-word-frequency) +- More articles: [[<-- prev]](/algorithms-miscellaneous-2) [[next -->]](/algorithms-miscellaneous-4) \ No newline at end of file diff --git a/algorithms-sorting/README.md b/algorithms-sorting/README.md index 968d51aecf..f19705f113 100644 --- a/algorithms-sorting/README.md +++ b/algorithms-sorting/README.md @@ -1,9 +1,14 @@ -## Relevant articles: +## Algorithms - Sorting -- [Bubble Sort in Java](http://www.baeldung.com/java-bubble-sort) +This module contains articles about sorting algorithms. + +### Relevant articles: + +- [Bubble Sort in Java](https://www.baeldung.com/java-bubble-sort) - [Merge Sort in Java](https://www.baeldung.com/java-merge-sort) - [Quicksort Algorithm Implementation in Java](https://www.baeldung.com/java-quicksort) - [Insertion Sort in Java](https://www.baeldung.com/java-insertion-sort) - [Heap Sort in Java](https://www.baeldung.com/java-heap-sort) - [Shell Sort in Java](https://www.baeldung.com/java-shell-sort) - [Counting Sort in Java](https://www.baeldung.com/java-counting-sort) +- [Sorting Strings by Contained Numbers in Java](https://www.baeldung.com/java-sort-strings-contained-numbers) diff --git a/animal-sniffer-mvn-plugin/README.md b/animal-sniffer-mvn-plugin/README.md index 4c7c381da4..52e319b399 100644 --- a/animal-sniffer-mvn-plugin/README.md +++ b/animal-sniffer-mvn-plugin/README.md @@ -1,3 +1,7 @@ -## Relevant articles: +## Animal Sniffer Maven Plugin -[Introduction to Animal Sniffer Maven Plugin](http://www.baeldung.com/maven-animal-sniffer) +This module contains articles about the Animal Sniffer Maven Plugin + +### Relevant articles: + +[Introduction to Animal Sniffer Maven Plugin](https://www.baeldung.com/maven-animal-sniffer) diff --git a/annotations/README.md b/annotations/README.md new file mode 100644 index 0000000000..ec4005fc5e --- /dev/null +++ b/annotations/README.md @@ -0,0 +1,7 @@ +## Annotations + +This module contains articles about Java annotations + +### Relevant Articles: + +- [Java Annotation Processing and Creating a Builder](https://www.baeldung.com/java-annotation-processing-builder) diff --git a/annotations/readme.md b/annotations/readme.md deleted file mode 100644 index 2b052803e6..0000000000 --- a/annotations/readme.md +++ /dev/null @@ -1,2 +0,0 @@ -### Relevant Articles: -- [Java Annotation Processing and Creating a Builder](http://www.baeldung.com/java-annotation-processing-builder) diff --git a/antlr/README.md b/antlr/README.md index 419d9ddfbb..1f394125c6 100644 --- a/antlr/README.md +++ b/antlr/README.md @@ -1,3 +1,7 @@ +## ANTLR + +This module contains articles about ANTLR + ### Relevant Articles: -- [Java with ANTLR](http://www.baeldung.com/java-antlr) +- [Java with ANTLR](https://www.baeldung.com/java-antlr) diff --git a/apache-avro/README.md b/apache-avro/README.md index 32d84ecc76..b338e8e565 100644 --- a/apache-avro/README.md +++ b/apache-avro/README.md @@ -1,2 +1,6 @@ +## Apache Avro + +This module contains articles about Apache Avro + ### Relevant Articles: -- [Guide to Apache Avro](http://www.baeldung.com/java-apache-avro) +- [Guide to Apache Avro](https://www.baeldung.com/java-apache-avro) diff --git a/apache-bval/README.md b/apache-bval/README.md index 80ea149993..e856810378 100644 --- a/apache-bval/README.md +++ b/apache-bval/README.md @@ -1,2 +1,7 @@ +## Apache BVal + +This module contains articles about Apache BVal + ### Relevant Articles: -- [Intro to Apache BVal](http://www.baeldung.com/apache-bval) + +- [Intro to Apache BVal](https://www.baeldung.com/apache-bval) diff --git a/apache-curator/README.md b/apache-curator/README.md index 9bda573292..4fef6a138e 100644 --- a/apache-curator/README.md +++ b/apache-curator/README.md @@ -1,3 +1,7 @@ +## Apache Curator + +This module contains articles about Apache Curator + ### Relevant Articles: -- [Introduction to Apache Curator](http://www.baeldung.com/apache-curator) +- [Introduction to Apache Curator](https://www.baeldung.com/apache-curator) diff --git a/apache-cxf/README.md b/apache-cxf/README.md index d03999dce3..f825b85bb3 100644 --- a/apache-cxf/README.md +++ b/apache-cxf/README.md @@ -1,6 +1,10 @@ +## Apache CXF + +This module contains articles about Apache CXF + ## Relevant Articles: -- [Introduction to Apache CXF Aegis Data Binding](http://www.baeldung.com/aegis-data-binding-in-apache-cxf) -- [Apache CXF Support for RESTful Web Services](http://www.baeldung.com/apache-cxf-rest-api) -- [A Guide to Apache CXF with Spring](http://www.baeldung.com/apache-cxf-with-spring) -- [Introduction to Apache CXF](http://www.baeldung.com/introduction-to-apache-cxf) +- [Introduction to Apache CXF Aegis Data Binding](https://www.baeldung.com/aegis-data-binding-in-apache-cxf) +- [Apache CXF Support for RESTful Web Services](https://www.baeldung.com/apache-cxf-rest-api) +- [A Guide to Apache CXF with Spring](https://www.baeldung.com/apache-cxf-with-spring) +- [Introduction to Apache CXF](https://www.baeldung.com/introduction-to-apache-cxf) - [Server-Sent Events (SSE) In JAX-RS](https://www.baeldung.com/java-ee-jax-rs-sse) diff --git a/apache-fop/README.md b/apache-fop/README.md index 1e734a5f36..2adc593026 100644 --- a/apache-fop/README.md +++ b/apache-fop/README.md @@ -1,5 +1,5 @@ -========= +## Apache FOP -## Core Java Cookbooks and Examples +This module contains articles about Apache FOP ### Relevant Articles: diff --git a/apache-geode/README.md b/apache-geode/README.md index 2f04418825..86629f7a82 100644 --- a/apache-geode/README.md +++ b/apache-geode/README.md @@ -1,3 +1,7 @@ +## Apache Geode + +This module contains articles about Apache Geode + ### Relevant Articles: - [A Quick Guide to Apache Geode](https://www.baeldung.com/apache-geode) diff --git a/apache-meecrowave/README.md b/apache-meecrowave/README.md index 42b93a383e..d360af13af 100644 --- a/apache-meecrowave/README.md +++ b/apache-meecrowave/README.md @@ -1,3 +1,7 @@ +## Apache Meecrowave + +This module contains articles about Apache Meecrowave + ### Relevant Articles: -================================ -- [Building a Microservice with Apache Meecrowave](http://www.baeldung.com/apache-meecrowave) + +- [Building a Microservice with Apache Meecrowave](https://www.baeldung.com/apache-meecrowave) \ No newline at end of file diff --git a/apache-olingo/README.md b/apache-olingo/README.md index bfbdc97700..2f4e86d5a2 100644 --- a/apache-olingo/README.md +++ b/apache-olingo/README.md @@ -1,3 +1,8 @@ -## Relevant articles: +## Apache Olingo + +This module contains articles about Apache Olingo + +### Relevant articles: - [OData Protocol Guide](https://www.baeldung.com/odata) +- [Intro to OData with Olingo](https://www.baeldung.com/olingo) diff --git a/apache-opennlp/README.md b/apache-opennlp/README.md index 2e9fa0e384..4b1fa36540 100644 --- a/apache-opennlp/README.md +++ b/apache-opennlp/README.md @@ -1,3 +1,7 @@ +## Apache OpenNLP + +This module contains articles about Apache OpenNLP + ### Relevant Articles -- [Intro to Apache OpenNLP](http://www.baeldung.com/apache-open-nlp) +- [Intro to Apache OpenNLP](https://www.baeldung.com/apache-open-nlp) diff --git a/apache-poi/README.md b/apache-poi/README.md index 862981991d..b7b8bf5f6a 100644 --- a/apache-poi/README.md +++ b/apache-poi/README.md @@ -1,4 +1,8 @@ +## Apache POI + +This module contains articles about Apache POI + ### Relevant Articles: -- [Microsoft Word Processing in Java with Apache POI](http://www.baeldung.com/java-microsoft-word-with-apache-poi) -- [Working with Microsoft Excel in Java](http://www.baeldung.com/java-microsoft-excel) -- [Creating a MS PowerPoint Presentation in Java](http://www.baeldung.com/apache-poi-slideshow) +- [Microsoft Word Processing in Java with Apache POI](https://www.baeldung.com/java-microsoft-word-with-apache-poi) +- [Working with Microsoft Excel in Java](https://www.baeldung.com/java-microsoft-excel) +- [Creating a MS PowerPoint Presentation in Java](https://www.baeldung.com/apache-poi-slideshow) diff --git a/apache-pulsar/README.md b/apache-pulsar/README.md index 2970bc3d88..c44849a490 100644 --- a/apache-pulsar/README.md +++ b/apache-pulsar/README.md @@ -1,3 +1,7 @@ +## Apache Pulsar + +This module contains articles about Apache Pulsar + ### Relevant Articles: - [Introduction to Apache Pulsar](https://www.baeldung.com/apache-pulsar) diff --git a/apache-shiro/README.md b/apache-shiro/README.md index bc3480b266..553eeecc69 100644 --- a/apache-shiro/README.md +++ b/apache-shiro/README.md @@ -1,2 +1,7 @@ -### Relevant articles -- [Introduction to Apache Shiro](http://www.baeldung.com/apache-shiro) +## Apache Shiro + +This module contains articles about Apache Shiro + +### Relevant articles: + +- [Introduction to Apache Shiro](https://www.baeldung.com/apache-shiro) \ No newline at end of file diff --git a/apache-solrj/README.md b/apache-solrj/README.md index 7a32becb64..803db393e9 100644 --- a/apache-solrj/README.md +++ b/apache-solrj/README.md @@ -1,4 +1,7 @@ -## Apache Solrj Tutorials Project +## Apache Solrj -### Relevant Articles -- [Guide to Solr in Java with Apache Solrj](http://www.baeldung.com/apache-solrj) +This module contains articles about Apache Solrj + +### Relevant Articles: + +- [Guide to Solr in Java with Apache Solrj](https://www.baeldung.com/apache-solrj) \ No newline at end of file diff --git a/apache-spark/README.md b/apache-spark/README.md index a4dce212b4..360a18f095 100644 --- a/apache-spark/README.md +++ b/apache-spark/README.md @@ -1,4 +1,8 @@ -### Relevant articles +## Apache Spark -- [Introduction to Apache Spark](http://www.baeldung.com/apache-spark) +This module contains articles about Apache Spark + +### Relevant articles: + +- [Introduction to Apache Spark](https://www.baeldung.com/apache-spark) - [Building a Data Pipeline with Kafka, Spark Streaming and Cassandra](https://www.baeldung.com/kafka-spark-data-pipeline) diff --git a/apache-thrift/README.md b/apache-thrift/README.md index d8b9195dcc..4508939de6 100644 --- a/apache-thrift/README.md +++ b/apache-thrift/README.md @@ -1,3 +1,7 @@ -## Relevant articles: +## Apache Thrift -- [Working with Apache Thrift](http://www.baeldung.com/apache-thrift) +This module contains articles about Apache Thrift + +### Relevant articles: + +- [Working with Apache Thrift](https://www.baeldung.com/apache-thrift) diff --git a/apache-tika/README.md b/apache-tika/README.md index b92a7bebf1..690e55edc3 100644 --- a/apache-tika/README.md +++ b/apache-tika/README.md @@ -1,3 +1,7 @@ -## Relevant articles: +## Apache Tika -- [Content Analysis with Apache Tika](http://www.baeldung.com/apache-tika) +This module contains articles about Apache Tika + +### Relevant articles: + +- [Content Analysis with Apache Tika](https://www.baeldung.com/apache-tika) diff --git a/apache-velocity/README.md b/apache-velocity/README.md index 53c67f847e..d539d79efc 100644 --- a/apache-velocity/README.md +++ b/apache-velocity/README.md @@ -1,3 +1,7 @@ -## Relevant articles: +## Apache Velocity -- [Introduction to Apache Velocity](http://www.baeldung.com/apache-velocity) +This module contains articles about Apache Velocity + +### Relevant articles: + +- [Introduction to Apache Velocity](https://www.baeldung.com/apache-velocity) diff --git a/apache-zookeeper/README.md b/apache-zookeeper/README.md index 6bddcfd5a8..cda1cd6d73 100644 --- a/apache-zookeeper/README.md +++ b/apache-zookeeper/README.md @@ -1,3 +1,7 @@ -## Relevant articles: +## Apache Zookeeper -- [Getting Started with Java and Zookeeper](http://www.baeldung.com/java-zookeeper) +This module contains articles about Apache Zookeeper + +### Relevant articles: + +- [Getting Started with Java and Zookeeper](https://www.baeldung.com/java-zookeeper) diff --git a/asciidoctor/README.md b/asciidoctor/README.md index 2124907e87..87b1ec833c 100644 --- a/asciidoctor/README.md +++ b/asciidoctor/README.md @@ -1,4 +1,8 @@ -### Relevant articles +## Asciidoctor -- [Generating a Book with Asciidoctor](http://www.baeldung.com/asciidoctor-book) -- [Introduction to Asciidoctor in Java](http://www.baeldung.com/asciidoctor) +This module contains articles about Asciidoctor + +### Relevant articles: + +- [Generating a Book with Asciidoctor](https://www.baeldung.com/asciidoctor-book) +- [Introduction to Asciidoctor in Java](https://www.baeldung.com/asciidoctor) diff --git a/asm/README.md b/asm/README.md index 50d9c34324..e10cdc45bd 100644 --- a/asm/README.md +++ b/asm/README.md @@ -1,3 +1,7 @@ +## ASM + +This module contains articles about ASM + ### Relevant Articles: -- [A Guide to Java Bytecode Manipulation with ASM](http://www.baeldung.com/java-asm) +- [A Guide to Java Bytecode Manipulation with ASM](https://www.baeldung.com/java-asm) diff --git a/atomix/README.md b/atomix/README.md index fb22eec8dc..217fced82a 100644 --- a/atomix/README.md +++ b/atomix/README.md @@ -1,3 +1,7 @@ -## Relevant articles: +## Atomix -- [Introduction to Atomix](http://www.baeldung.com/atomix) +This module contains articles about Atomix + +### Relevant articles: + +- [Introduction to Atomix](https://www.baeldung.com/atomix) diff --git a/autovalue/README.md b/autovalue/README.md deleted file mode 100644 index f33ff6899f..0000000000 --- a/autovalue/README.md +++ /dev/null @@ -1,4 +0,0 @@ -### Relevant Articles: -- [Introduction to AutoValue](http://www.baeldung.com/introduction-to-autovalue) -- [Introduction to AutoFactory](http://www.baeldung.com/autofactory) -- [Google AutoService](https://www.baeldung.com/google-autoservice) diff --git a/aws-lambda/README.md b/aws-lambda/README.md index 921b699bdd..2fbdaace10 100644 --- a/aws-lambda/README.md +++ b/aws-lambda/README.md @@ -1,3 +1,7 @@ +## AWS Lambda + +This module contains articles about AWS Lambda + ### Relevant Articles: -- [Using AWS Lambda with API Gateway](http://www.baeldung.com/aws-lambda-api-gateway) -- [Introduction to AWS Serverless Application Model](http://www.baeldung.com/aws-serverless) +- [Using AWS Lambda with API Gateway](https://www.baeldung.com/aws-lambda-api-gateway) +- [Introduction to AWS Serverless Application Model](https://www.baeldung.com/aws-serverless) diff --git a/aws/README.md b/aws/README.md index d14ea8a75e..9e4ca8b699 100644 --- a/aws/README.md +++ b/aws/README.md @@ -1,11 +1,15 @@ +## AWS + +This module contains articles about AWS + ### Relevant articles -- [AWS Lambda Using DynamoDB With Java](http://www.baeldung.com/aws-lambda-dynamodb-java) -- [AWS S3 with Java](http://www.baeldung.com/aws-s3-java) -- [AWS Lambda With Java](http://www.baeldung.com/java-aws-lambda) -- [Managing EC2 Instances in Java](http://www.baeldung.com/ec2-java) -- [Multipart Uploads in Amazon S3 with Java](http://www.baeldung.com/aws-s3-multipart-upload) -- [Integration Testing with a Local DynamoDB Instance](http://www.baeldung.com/dynamodb-local-integration-tests) -- [Using the JetS3t Java Client With Amazon S3](http://www.baeldung.com/jets3t-amazon-s3) -- [Managing Amazon SQS Queues in Java](http://www.baeldung.com/aws-queues-java) +- [AWS Lambda Using DynamoDB With Java](https://www.baeldung.com/aws-lambda-dynamodb-java) +- [AWS S3 with Java](https://www.baeldung.com/aws-s3-java) +- [AWS Lambda With Java](https://www.baeldung.com/java-aws-lambda) +- [Managing EC2 Instances in Java](https://www.baeldung.com/ec2-java) +- [Multipart Uploads in Amazon S3 with Java](https://www.baeldung.com/aws-s3-multipart-upload) +- [Integration Testing with a Local DynamoDB Instance](https://www.baeldung.com/dynamodb-local-integration-tests) +- [Using the JetS3t Java Client With Amazon S3](https://www.baeldung.com/jets3t-amazon-s3) +- [Managing Amazon SQS Queues in Java](https://www.baeldung.com/aws-queues-java) - [Guide to AWS Aurora RDS with Java](https://www.baeldung.com/aws-aurora-rds-java) diff --git a/axon/README.md b/axon/README.md index f1ae5d00d8..069102fc3a 100644 --- a/axon/README.md +++ b/axon/README.md @@ -1,3 +1,7 @@ +## Axon + +This module contains articles about Axon + ### Relevant articles -- [A Guide to the Axon Framework](http://www.baeldung.com/axon-cqrs-event-sourcing) +- [A Guide to the Axon Framework](https://www.baeldung.com/axon-cqrs-event-sourcing) diff --git a/azure/README.md b/azure/README.md index ae8c443660..4da8481502 100644 --- a/azure/README.md +++ b/azure/README.md @@ -1,4 +1,8 @@ +## Azure + +This module contains articles about Azure + ### Relevant Articles: -- [Deploy a Spring Boot App to Azure](http://www.baeldung.com/spring-boot-azure) +- [Deploy a Spring Boot App to Azure](https://www.baeldung.com/spring-boot-azure) diff --git a/bazel/README.md b/bazel/README.md index d1f8f1af5b..af4f901f49 100644 --- a/bazel/README.md +++ b/bazel/README.md @@ -1,3 +1,7 @@ -## Relevant Articles: +## Bazel + +This module contains articles about Bazel + +### Relevant Articles: - [Building Java Applications with Bazel](https://www.baeldung.com/bazel-build-tool) diff --git a/blade/README.md b/blade/README.md index 1f2a00ed3f..202494330f 100644 --- a/blade/README.md +++ b/blade/README.md @@ -1,5 +1,5 @@ ### Relevant Articles: -- [Blade – A Complete Guidebook](http://www.baeldung.com/blade) +- [Blade – A Complete Guidebook](https://www.baeldung.com/blade) Run Integration Tests with `mvn integration-test` diff --git a/bootique/README.md b/bootique/README.md index 2ef898fcf7..0d4076201e 100644 --- a/bootique/README.md +++ b/bootique/README.md @@ -1,2 +1,6 @@ +## Bootique + +This module contains articles about Bootique + ### Relevant Articles: -- [Introduction to Bootique](http://www.baeldung.com/bootique) +- [Introduction to Bootique](https://www.baeldung.com/bootique) diff --git a/cas/README.md b/cas/README.md new file mode 100644 index 0000000000..16775a8a02 --- /dev/null +++ b/cas/README.md @@ -0,0 +1,7 @@ +## CAS + +This module contains articles about the Central Authentication Service (CAS) + +### Relevant Articles: + +- [CAS SSO With Spring Security](baeldung.com/spring-security-cas-sso) \ No newline at end of file diff --git a/cdi/README.md b/cdi/README.md index bfb635be9e..13169698a2 100644 --- a/cdi/README.md +++ b/cdi/README.md @@ -1,5 +1,9 @@ +## CDI + +This module contains articles about Contexts and Dependency Injection (CDI) + ### Relevant Articles: -- [CDI Interceptor vs Spring AspectJ](http://www.baeldung.com/cdi-interceptor-vs-spring-aspectj) -- [An Introduction to CDI (Contexts and Dependency Injection) in Java](http://www.baeldung.com/java-ee-cdi) +- [CDI Interceptor vs Spring AspectJ](https://www.baeldung.com/cdi-interceptor-vs-spring-aspectj) +- [An Introduction to CDI (Contexts and Dependency Injection) in Java](https://www.baeldung.com/java-ee-cdi) - [Introduction to the Event Notification Model in CDI 2.0](https://www.baeldung.com/cdi-event-notification) diff --git a/cdi/src/main/java/com/baeldung/cdi2observers/application/BootstrappingApplication.java b/cdi/src/main/java/com/baeldung/cdi2observers/application/BootstrappingApplication.java index 4896408502..dc0bdeb951 100644 --- a/cdi/src/main/java/com/baeldung/cdi2observers/application/BootstrappingApplication.java +++ b/cdi/src/main/java/com/baeldung/cdi2observers/application/BootstrappingApplication.java @@ -1,15 +1,16 @@ -package com.baeldung.cdi.cdi2observers.application; - -import com.baeldung.cdi.cdi2observers.events.ExampleEvent; -import javax.enterprise.inject.se.SeContainer; -import javax.enterprise.inject.se.SeContainerInitializer; - -public class BootstrappingApplication { - - public static void main(String... args) { - SeContainerInitializer containerInitializer = SeContainerInitializer.newInstance(); - try (SeContainer container = containerInitializer.initialize()) { - container.getBeanManager().fireEvent(new ExampleEvent("Welcome to Baeldung!")); - } - } -} +package com.baeldung.cdi2observers.application; + +import com.baeldung.cdi2observers.events.ExampleEvent; + +import javax.enterprise.inject.se.SeContainer; +import javax.enterprise.inject.se.SeContainerInitializer; + +public class BootstrappingApplication { + + public static void main(String... args) { + SeContainerInitializer containerInitializer = SeContainerInitializer.newInstance(); + try (SeContainer container = containerInitializer.initialize()) { + container.getBeanManager().fireEvent(new ExampleEvent("Welcome to Baeldung!")); + } + } +} diff --git a/cdi/src/main/java/com/baeldung/cdi2observers/events/ExampleEvent.java b/cdi/src/main/java/com/baeldung/cdi2observers/events/ExampleEvent.java index a2329d2ef1..9adfad4d39 100644 --- a/cdi/src/main/java/com/baeldung/cdi2observers/events/ExampleEvent.java +++ b/cdi/src/main/java/com/baeldung/cdi2observers/events/ExampleEvent.java @@ -1,14 +1,14 @@ -package com.baeldung.cdi.cdi2observers.events; - -public class ExampleEvent { - - private final String eventMessage; - - public ExampleEvent(String eventMessage) { - this.eventMessage = eventMessage; - } - - public String getEventMessage() { - return eventMessage; - } -} +package com.baeldung.cdi2observers.events; + +public class ExampleEvent { + + private final String eventMessage; + + public ExampleEvent(String eventMessage) { + this.eventMessage = eventMessage; + } + + public String getEventMessage() { + return eventMessage; + } +} diff --git a/cdi/src/main/java/com/baeldung/cdi2observers/events/ExampleEventSource.java b/cdi/src/main/java/com/baeldung/cdi2observers/events/ExampleEventSource.java index f37030778a..5a0aa0b5e3 100644 --- a/cdi/src/main/java/com/baeldung/cdi2observers/events/ExampleEventSource.java +++ b/cdi/src/main/java/com/baeldung/cdi2observers/events/ExampleEventSource.java @@ -1,14 +1,14 @@ -package com.baeldung.cdi.cdi2observers.events; - -import javax.enterprise.event.Event; -import javax.inject.Inject; - -public class ExampleEventSource { - - @Inject - Event exampleEvent; - - public void fireEvent() { - exampleEvent.fireAsync(new ExampleEvent("Welcome to Baeldung!")); - } -} +package com.baeldung.cdi2observers.events; + +import javax.enterprise.event.Event; +import javax.inject.Inject; + +public class ExampleEventSource { + + @Inject + Event exampleEvent; + + public void fireEvent() { + exampleEvent.fireAsync(new ExampleEvent("Welcome to Baeldung!")); + } +} diff --git a/cdi/src/main/java/com/baeldung/cdi2observers/observers/AnotherExampleEventObserver.java b/cdi/src/main/java/com/baeldung/cdi2observers/observers/AnotherExampleEventObserver.java index 34520c2b3d..3af48af13f 100644 --- a/cdi/src/main/java/com/baeldung/cdi2observers/observers/AnotherExampleEventObserver.java +++ b/cdi/src/main/java/com/baeldung/cdi2observers/observers/AnotherExampleEventObserver.java @@ -1,12 +1,13 @@ -package com.baeldung.cdi.cdi2observers.observers; - -import com.baeldung.cdi.cdi2observers.events.ExampleEvent; -import javax.annotation.Priority; -import javax.enterprise.event.Observes; - -public class AnotherExampleEventObserver { - - public String onEvent(@Observes @Priority(2) ExampleEvent event) { - return event.getEventMessage(); - } -} +package com.baeldung.cdi2observers.observers; + +import com.baeldung.cdi2observers.events.ExampleEvent; + +import javax.annotation.Priority; +import javax.enterprise.event.Observes; + +public class AnotherExampleEventObserver { + + public String onEvent(@Observes @Priority(2) ExampleEvent event) { + return event.getEventMessage(); + } +} diff --git a/cdi/src/main/java/com/baeldung/cdi2observers/observers/ExampleEventObserver.java b/cdi/src/main/java/com/baeldung/cdi2observers/observers/ExampleEventObserver.java index b3522b2ad0..33fdc43bbb 100644 --- a/cdi/src/main/java/com/baeldung/cdi2observers/observers/ExampleEventObserver.java +++ b/cdi/src/main/java/com/baeldung/cdi2observers/observers/ExampleEventObserver.java @@ -1,13 +1,13 @@ -package com.baeldung.cdi.cdi2observers.observers; - -import com.baeldung.cdi.cdi2observers.events.ExampleEvent; -import com.baeldung.cdi.cdi2observers.services.TextService; -import javax.annotation.Priority; -import javax.enterprise.event.Observes; - -public class ExampleEventObserver { - - public String onEvent(@Observes @Priority(1) ExampleEvent event, TextService textService) { - return textService.parseText(event.getEventMessage()); - } -} +package com.baeldung.cdi2observers.observers; + +import com.baeldung.cdi2observers.events.ExampleEvent; +import com.baeldung.cdi2observers.services.TextService; +import javax.annotation.Priority; +import javax.enterprise.event.Observes; + +public class ExampleEventObserver { + + public String onEvent(@Observes @Priority(1) ExampleEvent event, TextService textService) { + return textService.parseText(event.getEventMessage()); + } +} diff --git a/cdi/src/main/java/com/baeldung/cdi2observers/services/TextService.java b/cdi/src/main/java/com/baeldung/cdi2observers/services/TextService.java index 47788a0657..eabe031223 100644 --- a/cdi/src/main/java/com/baeldung/cdi2observers/services/TextService.java +++ b/cdi/src/main/java/com/baeldung/cdi2observers/services/TextService.java @@ -1,8 +1,8 @@ -package com.baeldung.cdi.cdi2observers.services; - -public class TextService { - - public String parseText(String text) { - return text.toUpperCase(); - } -} +package com.baeldung.cdi2observers.services; + +public class TextService { + + public String parseText(String text) { + return text.toUpperCase(); + } +} diff --git a/cdi/src/main/resources/META-INF/beans.xml b/cdi/src/main/resources/META-INF/beans.xml index d41b35e7d9..144e9e567f 100644 --- a/cdi/src/main/resources/META-INF/beans.xml +++ b/cdi/src/main/resources/META-INF/beans.xml @@ -1,7 +1,8 @@ - + + xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" + bean-discovery-mode="all"> com.baeldung.interceptor.AuditedInterceptor diff --git a/cdi/src/test/java/com/baeldung/test/cdi2observers/tests/TextServiceUnitTest.java b/cdi/src/test/java/com/baeldung/test/cdi2observers/tests/TextServiceUnitTest.java index deecf13f9a..1b976144aa 100644 --- a/cdi/src/test/java/com/baeldung/test/cdi2observers/tests/TextServiceUnitTest.java +++ b/cdi/src/test/java/com/baeldung/test/cdi2observers/tests/TextServiceUnitTest.java @@ -1,14 +1,15 @@ -package com.baeldung.cdi.cdi2observers.tests; - -import com.baeldung.cdi.cdi2observers.services.TextService; -import static org.assertj.core.api.Assertions.assertThat; -import org.junit.Test; - -public class TextServiceUnitTest { - - @Test - public void givenTextServiceInstance_whenCalledparseText_thenCorrect() { - TextService textService = new TextService(); - assertThat(textService.parseText("Baeldung")).isEqualTo("BAELDUNG"); - } -} +package com.baeldung.test.cdi2observers.tests; + +import com.baeldung.cdi2observers.services.TextService; +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class TextServiceUnitTest { + + @Test + public void givenTextServiceInstance_whenCalledparseText_thenCorrect() { + TextService textService = new TextService(); + assertThat(textService.parseText("Baeldung")).isEqualTo("BAELDUNG"); + } +} diff --git a/cdi/src/test/java/com/baeldung/test/dependencyinjection/TimeLoggerFactoryUnitTest.java b/cdi/src/test/java/com/baeldung/test/dependencyinjection/TimeLoggerFactoryUnitTest.java index caf2ed32b5..b22f189373 100644 --- a/cdi/src/test/java/com/baeldung/test/dependencyinjection/TimeLoggerFactoryUnitTest.java +++ b/cdi/src/test/java/com/baeldung/test/dependencyinjection/TimeLoggerFactoryUnitTest.java @@ -6,7 +6,6 @@ import static org.assertj.core.api.Assertions.assertThat; import org.junit.Test; public class TimeLoggerFactoryUnitTest { - @Test public void givenTimeLoggerFactory_whenCalledgetTimeLogger_thenOneAssertion() { TimeLoggerFactory timeLoggerFactory = new TimeLoggerFactory(); diff --git a/checker-plugin/README.md b/checker-plugin/README.md index f4534b09e8..59dc2878a2 100644 --- a/checker-plugin/README.md +++ b/checker-plugin/README.md @@ -1,3 +1,7 @@ +## Checker Plugin + +This module contains articles about the Checker Plugin + ### Relevant articles -- [The Checker Framework – Pluggable Type Systems for Java](http://www.baeldung.com/checker-framework) +- [The Checker Framework – Pluggable Type Systems for Java](https://www.baeldung.com/checker-framework) diff --git a/cloud-foundry-uaa/README.md b/cloud-foundry-uaa/README.md index b2f382cad1..f7707a04e2 100644 --- a/cloud-foundry-uaa/README.md +++ b/cloud-foundry-uaa/README.md @@ -1,3 +1,7 @@ -### Revelant Articles +## Cloud Foundry UAA + +This module contains articles about Cloud Foundry UAA + +### Relevant Articles: - [A Quick Guide To Using Cloud Foundry UAA](https://www.baeldung.com/cloud-foundry-uaa) diff --git a/code-generation/README.md b/code-generation/README.md new file mode 100644 index 0000000000..289a336f99 --- /dev/null +++ b/code-generation/README.md @@ -0,0 +1,9 @@ +## Code Generation + +This module contains articles about automatic code generation + +### Relevant Articles: + +- [Introduction to AutoValue](https://www.baeldung.com/introduction-to-autovalue) +- [Introduction to AutoFactory](https://www.baeldung.com/autofactory) +- [Google AutoService](https://www.baeldung.com/google-autoservice) diff --git a/autovalue/pom.xml b/code-generation/pom.xml similarity index 95% rename from autovalue/pom.xml rename to code-generation/pom.xml index a10e8ef055..7aefc1b5b3 100644 --- a/autovalue/pom.xml +++ b/code-generation/pom.xml @@ -2,9 +2,9 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 com.baeldung - autovalue + code-generation 1.0 - autovalue + code-generation com.baeldung diff --git a/autovalue/src/main/java/com/baeldung/autofactory/App.java b/code-generation/src/main/java/com/baeldung/autofactory/App.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autofactory/App.java rename to code-generation/src/main/java/com/baeldung/autofactory/App.java diff --git a/autovalue/src/main/java/com/baeldung/autofactory/CustomStorage.java b/code-generation/src/main/java/com/baeldung/autofactory/CustomStorage.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autofactory/CustomStorage.java rename to code-generation/src/main/java/com/baeldung/autofactory/CustomStorage.java diff --git a/autovalue/src/main/java/com/baeldung/autofactory/custom/AbstractFactory.java b/code-generation/src/main/java/com/baeldung/autofactory/custom/AbstractFactory.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autofactory/custom/AbstractFactory.java rename to code-generation/src/main/java/com/baeldung/autofactory/custom/AbstractFactory.java diff --git a/autovalue/src/main/java/com/baeldung/autofactory/custom/CustomPhone.java b/code-generation/src/main/java/com/baeldung/autofactory/custom/CustomPhone.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autofactory/custom/CustomPhone.java rename to code-generation/src/main/java/com/baeldung/autofactory/custom/CustomPhone.java diff --git a/autovalue/src/main/java/com/baeldung/autofactory/custom/SmartPhone.java b/code-generation/src/main/java/com/baeldung/autofactory/custom/SmartPhone.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autofactory/custom/SmartPhone.java rename to code-generation/src/main/java/com/baeldung/autofactory/custom/SmartPhone.java diff --git a/autovalue/src/main/java/com/baeldung/autofactory/model/Camera.java b/code-generation/src/main/java/com/baeldung/autofactory/model/Camera.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autofactory/model/Camera.java rename to code-generation/src/main/java/com/baeldung/autofactory/model/Camera.java diff --git a/autovalue/src/main/java/com/baeldung/autofactory/model/ClassicPhone.java b/code-generation/src/main/java/com/baeldung/autofactory/model/ClassicPhone.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autofactory/model/ClassicPhone.java rename to code-generation/src/main/java/com/baeldung/autofactory/model/ClassicPhone.java diff --git a/autovalue/src/main/java/com/baeldung/autofactory/model/Phone.java b/code-generation/src/main/java/com/baeldung/autofactory/model/Phone.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autofactory/model/Phone.java rename to code-generation/src/main/java/com/baeldung/autofactory/model/Phone.java diff --git a/autovalue/src/main/java/com/baeldung/autofactory/modules/SonyCameraModule.java b/code-generation/src/main/java/com/baeldung/autofactory/modules/SonyCameraModule.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autofactory/modules/SonyCameraModule.java rename to code-generation/src/main/java/com/baeldung/autofactory/modules/SonyCameraModule.java diff --git a/autovalue/src/main/java/com/baeldung/autofactory/provided/IntermediateAssembler.java b/code-generation/src/main/java/com/baeldung/autofactory/provided/IntermediateAssembler.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autofactory/provided/IntermediateAssembler.java rename to code-generation/src/main/java/com/baeldung/autofactory/provided/IntermediateAssembler.java diff --git a/autovalue/src/main/java/com/baeldung/autofactory/provider/SonyCameraProvider.java b/code-generation/src/main/java/com/baeldung/autofactory/provider/SonyCameraProvider.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autofactory/provider/SonyCameraProvider.java rename to code-generation/src/main/java/com/baeldung/autofactory/provider/SonyCameraProvider.java diff --git a/autovalue/src/main/java/com/baeldung/autoservice/BingTranslationServiceProvider.java b/code-generation/src/main/java/com/baeldung/autoservice/BingTranslationServiceProvider.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autoservice/BingTranslationServiceProvider.java rename to code-generation/src/main/java/com/baeldung/autoservice/BingTranslationServiceProvider.java diff --git a/autovalue/src/main/java/com/baeldung/autoservice/GoogleTranslationServiceProvider.java b/code-generation/src/main/java/com/baeldung/autoservice/GoogleTranslationServiceProvider.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autoservice/GoogleTranslationServiceProvider.java rename to code-generation/src/main/java/com/baeldung/autoservice/GoogleTranslationServiceProvider.java diff --git a/autovalue/src/main/java/com/baeldung/autoservice/TranslationService.java b/code-generation/src/main/java/com/baeldung/autoservice/TranslationService.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autoservice/TranslationService.java rename to code-generation/src/main/java/com/baeldung/autoservice/TranslationService.java diff --git a/autovalue/src/main/java/com/baeldung/autovalue/AutoValueMoney.java b/code-generation/src/main/java/com/baeldung/autovalue/AutoValueMoney.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autovalue/AutoValueMoney.java rename to code-generation/src/main/java/com/baeldung/autovalue/AutoValueMoney.java diff --git a/autovalue/src/main/java/com/baeldung/autovalue/AutoValueMoneyWithBuilder.java b/code-generation/src/main/java/com/baeldung/autovalue/AutoValueMoneyWithBuilder.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autovalue/AutoValueMoneyWithBuilder.java rename to code-generation/src/main/java/com/baeldung/autovalue/AutoValueMoneyWithBuilder.java diff --git a/autovalue/src/main/java/com/baeldung/autovalue/Foo.java b/code-generation/src/main/java/com/baeldung/autovalue/Foo.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autovalue/Foo.java rename to code-generation/src/main/java/com/baeldung/autovalue/Foo.java diff --git a/autovalue/src/main/java/com/baeldung/autovalue/ImmutableMoney.java b/code-generation/src/main/java/com/baeldung/autovalue/ImmutableMoney.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autovalue/ImmutableMoney.java rename to code-generation/src/main/java/com/baeldung/autovalue/ImmutableMoney.java diff --git a/autovalue/src/main/java/com/baeldung/autovalue/MutableMoney.java b/code-generation/src/main/java/com/baeldung/autovalue/MutableMoney.java similarity index 100% rename from autovalue/src/main/java/com/baeldung/autovalue/MutableMoney.java rename to code-generation/src/main/java/com/baeldung/autovalue/MutableMoney.java diff --git a/autovalue/src/main/resources/logback.xml b/code-generation/src/main/resources/logback.xml similarity index 100% rename from autovalue/src/main/resources/logback.xml rename to code-generation/src/main/resources/logback.xml diff --git a/autovalue/src/test/java/com/baeldung/autoservice/TranslationServiceUnitTest.java b/code-generation/src/test/java/com/baeldung/autoservice/TranslationServiceUnitTest.java similarity index 100% rename from autovalue/src/test/java/com/baeldung/autoservice/TranslationServiceUnitTest.java rename to code-generation/src/test/java/com/baeldung/autoservice/TranslationServiceUnitTest.java diff --git a/autovalue/src/test/java/com/baeldung/autovalue/MoneyUnitTest.java b/code-generation/src/test/java/com/baeldung/autovalue/MoneyUnitTest.java similarity index 100% rename from autovalue/src/test/java/com/baeldung/autovalue/MoneyUnitTest.java rename to code-generation/src/test/java/com/baeldung/autovalue/MoneyUnitTest.java diff --git a/core-groovy-2/README.md b/core-groovy-2/README.md index 1211dae76d..6359592da6 100644 --- a/core-groovy-2/README.md +++ b/core-groovy-2/README.md @@ -1,11 +1,14 @@ -# Groovy +# Core Groovy 2 + +This module contains articles about core Groovy concepts ## Relevant articles: -- [String Matching in Groovy](http://www.baeldung.com/) - [Template Engines in Groovy](https://www.baeldung.com/groovy-template-engines) - [Groovy def Keyword](https://www.baeldung.com/groovy-def-keyword) - [Pattern Matching in Strings in Groovy](https://www.baeldung.com/groovy-pattern-matching) - [Working with XML in Groovy](https://www.baeldung.com/groovy-xml) - [Integrating Groovy into Java Applications](https://www.baeldung.com/groovy-java-applications) - [Concatenate Strings with Groovy](https://www.baeldung.com/groovy-concatenate-strings) +- [Metaprogramming in Groovy](https://www.baeldung.com/groovy-metaprogramming) +- [[<-- Prev]](/core-groovy) \ No newline at end of file diff --git a/core-groovy-collections/README.md b/core-groovy-collections/README.md index aeba8933be..4afd214e7d 100644 --- a/core-groovy-collections/README.md +++ b/core-groovy-collections/README.md @@ -1,4 +1,6 @@ -# Groovy +## Core Groovy Collections + +This module contains articles about Groovy core collections ## Relevant articles: diff --git a/core-groovy/README.md b/core-groovy/README.md index 321c37be8d..0f45eed879 100644 --- a/core-groovy/README.md +++ b/core-groovy/README.md @@ -1,9 +1,11 @@ -# Groovy +# Core Groovy + +This module contains articles about core Groovy concepts ## Relevant articles: -- [JDBC with Groovy](http://www.baeldung.com/jdbc-groovy) -- [Working with JSON in Groovy](http://www.baeldung.com/groovy-json) +- [JDBC with Groovy](https://www.baeldung.com/jdbc-groovy) +- [Working with JSON in Groovy](https://www.baeldung.com/groovy-json) - [Reading a File in Groovy](https://www.baeldung.com/groovy-file-read) - [Types of Strings in Groovy](https://www.baeldung.com/groovy-strings) - [A Quick Guide to Iterating a Map in Groovy](https://www.baeldung.com/groovy-map-iterating) @@ -12,4 +14,5 @@ - [Finding Elements in Collections in Groovy](https://www.baeldung.com/groovy-collections-find-elements) - [Lists in Groovy](https://www.baeldung.com/groovy-lists) - [Converting a String to a Date in Groovy](https://www.baeldung.com/groovy-string-to-date) -- [Guide to I/O in Groovy](https://www.baeldung.com/groovy-io) \ No newline at end of file +- [Guide to I/O in Groovy](https://www.baeldung.com/groovy-io) +- [[More -->]](/core-groovy-2) \ No newline at end of file diff --git a/core-java-modules/README.md b/core-java-modules/README.md index 9ce6057f32..55dacca916 100644 --- a/core-java-modules/README.md +++ b/core-java-modules/README.md @@ -1,3 +1,7 @@ +## Core Java Modules + +This module contains modules about core Java + ## Relevant articles: - [Multi-Module Maven Application with Java Modules](https://www.baeldung.com/maven-multi-module-project-java-jpms) diff --git a/core-java-modules/core-java-10/README.md b/core-java-modules/core-java-10/README.md index 8fb4f8a7dd..2b57ec9064 100644 --- a/core-java-modules/core-java-10/README.md +++ b/core-java-modules/core-java-10/README.md @@ -1,3 +1,6 @@ +## Core Java 10 + +This module contains articles about Java 10 core features ### Relevant Articles: diff --git a/core-java-modules/core-java-11/README.md b/core-java-modules/core-java-11/README.md index 11c7d9d388..514f24a4ae 100644 --- a/core-java-modules/core-java-11/README.md +++ b/core-java-modules/core-java-11/README.md @@ -1,3 +1,7 @@ +## Core Java 11 + +This module contains articles about Java 11 core features + ### Relevant articles - [Java 11 Single File Source Code](https://www.baeldung.com/java-single-file-source-code) diff --git a/core-java-modules/core-java-8-2/README.md b/core-java-modules/core-java-8-2/README.md index d11510b2aa..9201add1d7 100644 --- a/core-java-modules/core-java-8-2/README.md +++ b/core-java-modules/core-java-8-2/README.md @@ -1,10 +1,11 @@ -========= +## Core Java 8 (part 2) -## Core Java 8 Cookbooks and Examples (part 2) +This module contains articles about Java 8 core features ### Relevant Articles: - [Anonymous Classes in Java](http://www.baeldung.com/) - [How to Delay Code Execution in Java](https://www.baeldung.com/java-delay-code-execution) -- [Run JAR Application With Command Line Arguments](https://www.baeldung.com/java-run-jar-with-arguments) +- [Run a Java Application from the Command Line](https://www.baeldung.com/java-run-jar-with-arguments) - [Java 8 Stream skip() vs limit()](https://www.baeldung.com/java-stream-skip-vs-limit) - [Guide to Java BiFunction Interface](https://www.baeldung.com/java-bifunction-interface) +- [[<-- Prev]](/core-java-modules/core-java-8) \ No newline at end of file diff --git a/core-java-modules/core-java-8/README.md b/core-java-modules/core-java-8/README.md index 6d69d30d00..72bdafe5fa 100644 --- a/core-java-modules/core-java-8/README.md +++ b/core-java-modules/core-java-8/README.md @@ -1,6 +1,6 @@ -========= +## Core Java 8 -## Core Java 8 Cookbooks and Examples +This module contains articles about Java 8 core features ### Relevant Articles: - [New Features in Java 8](https://www.baeldung.com/java-8-new-features) @@ -12,3 +12,4 @@ - [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) +- [[More -->]](/core-java-modules/core-java-8-2) diff --git a/core-java-modules/core-java-9/README.md b/core-java-modules/core-java-9/README.md index 8b52ce79b4..f4939ae1e1 100644 --- a/core-java-modules/core-java-9/README.md +++ b/core-java-modules/core-java-9/README.md @@ -1,8 +1,6 @@ -========= +## Core Java 9 -## Core Java 9 Examples - -[Java 9 New Features](http://www.baeldung.com/new-java-9) +This module contains articles about Java 9 core features ### Relevant Articles: diff --git a/core-java-modules/core-java-arrays-2/README.MD b/core-java-modules/core-java-arrays-2/README.md similarity index 85% rename from core-java-modules/core-java-arrays-2/README.MD rename to core-java-modules/core-java-arrays-2/README.md index 952770a2da..5fa2f2bf4c 100644 --- a/core-java-modules/core-java-arrays-2/README.MD +++ b/core-java-modules/core-java-arrays-2/README.md @@ -1,3 +1,7 @@ +## Core Java Arrays (Part 2) + +This module contains articles about Java arrays + ## Relevant Articles - [Extending an Array’s Length](https://www.baeldung.com/java-array-add-element-at-the-end) @@ -8,3 +12,4 @@ - [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) +- [[<-- Prev]](/core-java-modules/core-java-arrays) diff --git a/core-java-modules/core-java-arrays/README.md b/core-java-modules/core-java-arrays/README.md index 088e927910..42fe3f83a1 100644 --- a/core-java-modules/core-java-arrays/README.md +++ b/core-java-modules/core-java-arrays/README.md @@ -1,6 +1,6 @@ -========= +## Core Java Arrays -## Core Java Arrays Cookbooks and Examples +This module contains articles about Java arrays ### Relevant Articles: - [How to Copy an Array in Java](https://www.baeldung.com/java-array-copy) @@ -10,6 +10,8 @@ - [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](https://www.baeldung.com/java-invert-array) +- [Read and Write User Input in Java](https://www.baeldung.com/java-console-input-output) +- [How to Reverse an Array in Java](http://www.baeldung.com/java-invert-array) - [Sorting Arrays in Java](https://www.baeldung.com/java-sorting-arrays) - [Checking If an Array Is Sorted in Java](https://www.baeldung.com/java-check-sorted-array) +- [[More -->]](/core-java-modules/core-java-arrays-2) diff --git a/core-java-modules/core-java-collections-array-list/README.md b/core-java-modules/core-java-collections-array-list/README.md index 3d1cdd5085..4423a77c78 100644 --- a/core-java-modules/core-java-collections-array-list/README.md +++ b/core-java-modules/core-java-collections-array-list/README.md @@ -1,6 +1,6 @@ -========= +## Core Java Collections ArrayList -## Core Java Collections Array List Cookbooks and Examples +This module contains articles about the Java ArrayList collection ### Relevant Articles: - [Immutable ArrayList in Java](http://www.baeldung.com/java-immutable-list) diff --git a/core-java-modules/core-java-collections-list-2/README.md b/core-java-modules/core-java-collections-list-2/README.md index 6192442edd..fada9d96ac 100644 --- a/core-java-modules/core-java-collections-list-2/README.md +++ b/core-java-modules/core-java-collections-list-2/README.md @@ -1,6 +1,6 @@ -========= +## Core Java Collections List (Part 2) -## Core Java Collections List Cookbooks and Examples +This module contains articles about the Java List collection ### Relevant Articles: - [Check If Two Lists are Equal in Java](http://www.baeldung.com/java-test-a-list-for-ordinality-and-equality) @@ -10,4 +10,5 @@ - [Java List Initialization in One Line](https://www.baeldung.com/java-init-list-one-line) - [Ways to Iterate Over a List in Java](https://www.baeldung.com/java-iterate-list) - [Flattening Nested Collections in Java](http://www.baeldung.com/java-flatten-nested-collections) -- [Intersection of Two Lists in Java](https://www.baeldung.com/java-lists-intersection) \ No newline at end of file +- [Intersection of Two Lists in Java](https://www.baeldung.com/java-lists-intersection) +- [[<-- Prev]](/core-java-modules/core-java-collections-list)[[Next -->]](/core-java-modules/core-java-collections-list-3) \ No newline at end of file diff --git a/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java new file mode 100644 index 0000000000..67c62fe009 --- /dev/null +++ b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java @@ -0,0 +1,72 @@ +package com.baeldung.findastring; + +import com.google.common.base.Predicates; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.IterableUtils; +import org.apache.commons.collections4.IteratorUtils; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +public class FindAStringInGivenList { + + + public List findUsingLoopWithRegex(String search, List list) { + + List matches = new ArrayList(); + + String pattern = ".*"+search+".*"; + Pattern p = Pattern.compile(pattern); + + for(String str: list) { + if (p.matcher(str).matches()) { + matches.add(str); + } + } + + return matches; + } + + + public List findUsingLoop(String search, List list) { + + List matches = new ArrayList(); + + for(String str: list) { + if (str.contains(search)) { + matches.add(str); + } + } + + return matches; + } + + public List findUsingStream(String search, List list) { + + List matchingElements = + list.stream() + .filter(str -> str.trim().contains(search)) + .collect(Collectors.toList()); + + return matchingElements; + } + + public List findUsingGuava(String search, List list) { + Iterable result = Iterables.filter(list, Predicates.containsPattern(search)); + + return Lists.newArrayList(result.iterator()); + } + + public List findUsingCommonsCollection(String search, List list) { + Iterable result = IterableUtils.filteredIterable(list, new org.apache.commons.collections4.Predicate() { + public boolean evaluate(String listElement) { + return listElement.contains(search); + } + }); + + return IteratorUtils.toList(result.iterator()); + } + +} \ No newline at end of file diff --git a/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/findastring/FindAStringInListUnitTest.java b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/findastring/FindAStringInListUnitTest.java new file mode 100644 index 0000000000..ff5ca21505 --- /dev/null +++ b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/findastring/FindAStringInListUnitTest.java @@ -0,0 +1,62 @@ +package com.baeldung.findastring; + +import java.util.ArrayList; +import java.util.List; +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.Test; +public class FindAStringInListUnitTest { + + private static List list = new ArrayList<>(); + + static { + list.add("Jack and Jill"); + list.add("James and Sarah"); + list.add("Sam and Louise"); + list.add("Jack"); + list.add(""); + } + + private static FindAStringInGivenList findAStringInGivenList = new FindAStringInGivenList(); + + @Test + public void givenAString_whenFoundUsingLoopWithRegex_thenReturnList() { + List matchingElements = findAStringInGivenList.findUsingLoopWithRegex("Jack", list); + assertEquals(2, matchingElements.size()); + assertEquals("Jack and Jill", matchingElements.get(0)); + assertEquals("Jack", matchingElements.get(1)); + } + + @Test + public void givenAString_whenFoundUsingLoop_thenReturnList() { + List matchingElements = findAStringInGivenList.findUsingLoop("Jack", list); + assertEquals(2, matchingElements.size()); + assertEquals("Jack and Jill", matchingElements.get(0)); + assertEquals("Jack", matchingElements.get(1)); + } + + + @Test + public void givenAString_whenFoundUsingStream_thenReturnList(){ + List matchingElements = findAStringInGivenList.findUsingStream("Jack", list); + assertEquals(2, matchingElements.size()); + assertEquals("Jack and Jill", matchingElements.get(0)); + assertEquals("Jack", matchingElements.get(1)); + } + + @Test + public void givenAString_whenFoundUsingCommonsCollection_thenReturnList(){ + List matchingElements = findAStringInGivenList.findUsingCommonsCollection("Jack", list); + assertEquals(2, matchingElements.size()); + assertEquals("Jack and Jill", matchingElements.get(0)); + assertEquals("Jack", matchingElements.get(1)); + } + + @Test + public void givenAString_whenFoundUsingGuava_thenReturnList(){ + List matchingElements = findAStringInGivenList.findUsingGuava("Jack", list); + assertEquals(2, matchingElements.size()); + assertEquals("Jack and Jill", matchingElements.get(0)); + assertEquals("Jack", matchingElements.get(1)); + } + +} diff --git a/core-java-modules/core-java-collections-list-3/README.md b/core-java-modules/core-java-collections-list-3/README.md index 267996044c..3d4004de6f 100644 --- a/core-java-modules/core-java-collections-list-3/README.md +++ b/core-java-modules/core-java-collections-list-3/README.md @@ -1,6 +1,6 @@ -========= +## Core Java Collections List (Part 3) -## Core Java Collections List Cookbooks and Examples +This module contains articles about the Java List collection ### Relevant Articles: - [Collections.emptyList() vs. New List Instance](https://www.baeldung.com/java-collections-emptylist-new-list) @@ -9,3 +9,4 @@ - [List of Primitive Integer Values in Java](https://www.baeldung.com/java-list-primitive-int) - [Performance Comparison of Primitive Lists in Java](https://www.baeldung.com/java-list-primitive-performance) - [Filtering a Java Collection by a List](https://www.baeldung.com/java-filter-collection-by-list) +- [[<-- Prev]](/core-java-modules/core-java-collections-list-2) diff --git a/core-java-modules/core-java-collections-list/README.md b/core-java-modules/core-java-collections-list/README.md index 367f62780d..ff7a9876a2 100644 --- a/core-java-modules/core-java-collections-list/README.md +++ b/core-java-modules/core-java-collections-list/README.md @@ -1,6 +1,6 @@ -========= +## Core Java Collections List -## Core Java Collections List Cookbooks and Examples +This module contains articles about the Java List collection ### Relevant Articles: - [Java – Get Random Item/Element From a List](http://www.baeldung.com/java-random-list-element) @@ -12,3 +12,4 @@ - [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) +- [[Next -->]](/core-java-modules/core-java-collections-list-2) diff --git a/core-java-modules/core-java-collections-set/README.md b/core-java-modules/core-java-collections-set/README.md index 618b4e932c..2b34ef3449 100644 --- a/core-java-modules/core-java-collections-set/README.md +++ b/core-java-modules/core-java-collections-set/README.md @@ -1,6 +1,6 @@ -========= +## Core Java Collections Set -## Core Java Sets Cookbooks and Examples +This module contains articles about the Java Set collection ### Relevant Articles: - [Set Operations in Java](http://www.baeldung.com/set-operations-in-java) diff --git a/core-java-modules/core-java-collections/README.md b/core-java-modules/core-java-collections/README.md index 7be7d02b3f..340c2b286e 100644 --- a/core-java-modules/core-java-collections/README.md +++ b/core-java-modules/core-java-collections/README.md @@ -1,6 +1,6 @@ -========= +## Core Java Collections -## Core Java Collections Cookbooks and Examples +This module contains articles about Java collections ### Relevant Articles: - [Collect a Java Stream to an Immutable Collection](https://www.baeldung.com/java-stream-immutable-collection) @@ -13,3 +13,4 @@ - [Defining a Char Stack in Java](https://www.baeldung.com/java-char-stack) - [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) +- [[More -->]](/core-java-modules/core-java-collections-2) \ No newline at end of file diff --git a/core-java-modules/core-java-concurrency-advanced/README.md b/core-java-modules/core-java-concurrency-advanced/README.md index bc970c823e..0da59c88fb 100644 --- a/core-java-modules/core-java-concurrency-advanced/README.md +++ b/core-java-modules/core-java-concurrency-advanced/README.md @@ -1,5 +1,3 @@ -========= - ## Core Java Concurrency Advanced Examples This module contains articles about advanced topics about multithreading with core Java. @@ -15,5 +13,4 @@ This module contains articles about advanced topics about multithreading with co - [An Introduction to Atomic Variables in Java](https://www.baeldung.com/java-atomic-variables) - [CyclicBarrier in Java](https://www.baeldung.com/java-cyclic-barrier) - [Guide to the Volatile Keyword in Java](https://www.baeldung.com/java-volatile) - -[[next -->]](/core-java-modules/core-java-concurrency-advanced-2) +- More Articles: [[next -->]](/core-java-modules/core-java-concurrency-advanced-2) diff --git a/core-java-modules/core-java-concurrency-basic/README.md b/core-java-modules/core-java-concurrency-basic/README.md index 2f9d014103..846687b8dd 100644 --- a/core-java-modules/core-java-concurrency-basic/README.md +++ b/core-java-modules/core-java-concurrency-basic/README.md @@ -1,6 +1,6 @@ -========= +## Core Java Concurrency Basic -## Core Java Concurrency Basic Examples +This module contains articles about basic Java concurrency ### Relevant Articles: - [Guide To CompletableFuture](https://www.baeldung.com/java-completablefuture) @@ -13,3 +13,4 @@ - [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) +- [[Next -->]](/core-java-modules/core-java-concurrency-basic-2) diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/semaphore/SemaPhoreDemo.java b/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/semaphore/SemaPhoreDemo.java index 3a1d8555d3..43261e5ee4 100644 --- a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/semaphore/SemaPhoreDemo.java +++ b/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/semaphore/SemaPhoreDemo.java @@ -12,9 +12,11 @@ public class SemaPhoreDemo { System.out.println("Number of threads waiting to acquire: " + semaphore.getQueueLength()); if (semaphore.tryAcquire()) { - semaphore.acquire(); + try { // perform some critical operations - semaphore.release(); + } finally { + semaphore.release(); + } } } diff --git a/core-java-modules/core-java-concurrency-collections/README.md b/core-java-modules/core-java-concurrency-collections/README.md index b982a91861..80a21ee533 100644 --- a/core-java-modules/core-java-concurrency-collections/README.md +++ b/core-java-modules/core-java-concurrency-collections/README.md @@ -1,6 +1,6 @@ -========= +## Core Java Concurrency Collections -## Core Java Concurrency Collections Examples +This module contains articles about concurrent Java collections ### Relevant Articles: - [Guide to java.util.concurrent.BlockingQueue](http://www.baeldung.com/java-blocking-queue) diff --git a/core-java-modules/core-java-exceptions/README.md b/core-java-modules/core-java-exceptions/README.md index 78599c6b7b..0120b970c3 100644 --- a/core-java-modules/core-java-exceptions/README.md +++ b/core-java-modules/core-java-exceptions/README.md @@ -1,8 +1,13 @@ -## Relevant Articles: +## Core Java Exceptions -- [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) +This module contains articles about core java exceptions + +### Relevant articles: +- [Chained Exceptions in Java](https://www.baeldung.com/java-chained-exceptions) +- [ClassNotFoundException vs NoClassDefFoundError](https://www.baeldung.com/java-classnotfoundexception-and-noclassdeffounderror) +- [Create a Custom Exception in Java](https://www.baeldung.com/java-new-custom-exception) +- [Exception Handling in Java](https://www.baeldung.com/java-exceptions) +- [Differences Between Final, Finally and Finalize in Java](https://www.baeldung.com/java-final-finally-finalize) +- [Difference Between Throw and Throws in Java](https://www.baeldung.com/java-throw-throws) +- [“Sneaky Throws” in Java](https://www.baeldung.com/java-sneaky-throws) +- [The StackOverflowError in Java](https://www.baeldung.com/java-stack-overflow-error) diff --git a/core-java-modules/core-java-exceptions/pom.xml b/core-java-modules/core-java-exceptions/pom.xml index 43c4e31033..da5ec76622 100644 --- a/core-java-modules/core-java-exceptions/pom.xml +++ b/core-java-modules/core-java-exceptions/pom.xml @@ -1,55 +1,46 @@ + - 4.0.0 - com.baeldung.exception.numberformat - core-java-exceptions - 0.0.1-SNAPSHOT - core-java-exceptions + 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"> + com.baeldung.exceptions + 4.0.0 + core-java-exceptions + 0.1.0-SNAPSHOT + core-java-exceptions + jar - - com.baeldung - parent-java - 0.0.1-SNAPSHOT - ../../parent-java - + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + - - - junit - junit - ${junit.version} - test - - - org.apache.commons - 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 - - + + + javax.mail + mail + ${javax.mail.version} + + + org.projectlombok + lombok + ${lombok.version} + provided + + + + org.assertj + assertj-core + ${assertj-core.version} + test + + - - 3.9 - 1.19 - 3.10.0 - 1.19 - + + 1.5.0-b01 + + 3.10.0 + - + \ No newline at end of file diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/Arithmetic.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/Arithmetic.java deleted file mode 100644 index 138916ec60..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/Arithmetic.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.baeldung.exceptions; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class Arithmetic { - - private static Logger LOGGER = LoggerFactory.getLogger(Arithmetic.class); - - public static void main(String[] args) { - - try { - int result = 30 / 0; // Trying to divide by zero - } catch (ArithmeticException e) { - LOGGER.error("ArithmeticException caught!"); - } - - } - -} diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ArrayIndexOutOfBounds.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ArrayIndexOutOfBounds.java deleted file mode 100644 index 93b53f284c..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ArrayIndexOutOfBounds.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.baeldung.exceptions; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ArrayIndexOutOfBounds { - - private static Logger LOGGER = LoggerFactory.getLogger(ArrayIndexOutOfBounds.class); - - public static void main(String[] args) { - - int[] nums = new int[] { 1, 2, 3 }; - - try { - int numFromNegativeIndex = nums[-1]; // Trying to access at negative index - int numFromGreaterIndex = nums[4]; // Trying to access at greater index - int numFromLengthIndex = nums[3]; // Trying to access at index equal to size of the array - } catch (ArrayIndexOutOfBoundsException e) { - LOGGER.error("ArrayIndexOutOfBoundsException caught"); - } - - } - -} diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/CheckedUncheckedExceptions.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/CheckedUncheckedExceptions.java deleted file mode 100644 index 780189b654..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/CheckedUncheckedExceptions.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.baeldung.exceptions; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; - -public class CheckedUncheckedExceptions { - public static void checkedExceptionWithThrows() throws FileNotFoundException { - File file = new File("not_existing_file.txt"); - FileInputStream stream = new FileInputStream(file); - } - - public static void checkedExceptionWithTryCatch() { - File file = new File("not_existing_file.txt"); - try { - FileInputStream stream = new FileInputStream(file); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - } - - public static int divideByZero() { - int numerator = 1; - int denominator = 0; - return numerator / denominator; - } - - public static void checkFile(String fileName) throws IncorrectFileNameException { - if (fileName == null || fileName.isEmpty()) { - throw new NullOrEmptyException("The filename is null."); - } - if (!isCorrectFileName(fileName)) { - throw new IncorrectFileNameException("Incorrect filename : " + fileName); - } - } - - private static boolean isCorrectFileName(String fileName) { - if (fileName.equals("wrongFileName.txt")) - return false; - else - return true; - } -} diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ClassCast.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ClassCast.java deleted file mode 100644 index 183f8f54a3..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ClassCast.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.baeldung.exceptions; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -class Animal { - -} - -class Dog extends Animal { - -} - -class Lion extends Animal { - -} - -public class ClassCast { - - private static Logger LOGGER = LoggerFactory.getLogger(ClassCast.class); - - public static void main(String[] args) { - - try { - Animal animalOne = new Dog(); // At runtime the instance is dog - Dog bruno = (Dog) animalOne; // Downcasting - - Animal animalTwo = new Lion(); // At runtime the instance is animal - Dog tommy = (Dog) animalTwo; // Downcasting - } catch (ClassCastException e) { - LOGGER.error("ClassCastException caught!"); - } - - } - -} diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/FileNotFound.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/FileNotFound.java deleted file mode 100644 index bb9e0bf4ac..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/FileNotFound.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.exceptions; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class FileNotFound { - - private static Logger LOGGER = LoggerFactory.getLogger(FileNotFound.class); - - public static void main(String[] args) { - - BufferedReader reader = null; - try { - reader = new BufferedReader(new FileReader(new File("/invalid/file/location"))); - } catch (FileNotFoundException e) { - LOGGER.error("FileNotFoundException caught!"); - } - } - -} diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/GlobalExceptionHandler.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/GlobalExceptionHandler.java deleted file mode 100644 index ab46c83da4..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/GlobalExceptionHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.baeldung.exceptions; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class GlobalExceptionHandler { - - public static void main(String[] args) { - - Handler globalExceptionHandler = new Handler(); - Thread.setDefaultUncaughtExceptionHandler(globalExceptionHandler); - new GlobalExceptionHandler().performArithmeticOperation(10, 0); - } - - public int performArithmeticOperation(int num1, int num2) { - return num1/num2; - } - -} - -class Handler implements Thread.UncaughtExceptionHandler { - - private static Logger LOGGER = LoggerFactory.getLogger(Handler.class); - - public void uncaughtException(Thread t, Throwable e) { - LOGGER.info("Unhandled exception caught!"); - } -} diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IllegalArgument.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IllegalArgument.java deleted file mode 100644 index 801536cb2d..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IllegalArgument.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.baeldung.exceptions; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class IllegalArgument { - - private static Logger LOGGER = LoggerFactory.getLogger(IllegalArgument.class); - - public static void main(String[] args) { - try { - Thread.sleep(-1000); - } catch (InterruptedException e) { - LOGGER.error("IllegalArgumentException caught!"); - } - } - -} diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IllegalState.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IllegalState.java deleted file mode 100644 index e8ddcea3c2..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IllegalState.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.exceptions; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class IllegalState { - - private static Logger LOGGER = LoggerFactory.getLogger(IllegalState.class); - - public static void main(String[] args) { - - List intList = new ArrayList<>(); - - for (int i = 0; i < 10; i++) { - intList.add(i); - } - - Iterator intListIterator = intList.iterator(); // Initialized with index at -1 - - try { - intListIterator.remove(); // IllegalStateException - } catch (IllegalStateException e) { - LOGGER.error("IllegalStateException caught!"); - } - - } - -} diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IncorrectFileNameException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IncorrectFileNameException.java deleted file mode 100644 index 9877fe25ca..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/IncorrectFileNameException.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.baeldung.exceptions; - -public class IncorrectFileNameException extends Exception { - private static final long serialVersionUID = 1L; - - public IncorrectFileNameException(String errorMessage) { - super(errorMessage); - } - - public IncorrectFileNameException(String errorMessage, Throwable thr) { - super(errorMessage, thr); - } -} \ No newline at end of file diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/InterruptedExceptionExample.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/InterruptedExceptionExample.java deleted file mode 100644 index 319fd33591..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/InterruptedExceptionExample.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.baeldung.exceptions; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -class ChildThread extends Thread { - - private static Logger LOGGER = LoggerFactory.getLogger(ChildThread.class); - - public void run() { - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - LOGGER.error("InterruptedException caught!"); - } - } - -} - -public class InterruptedExceptionExample { - - public static void main(String[] args) throws InterruptedException { - ChildThread childThread = new ChildThread(); - childThread.start(); - childThread.interrupt(); - } - -} diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/MalformedURL.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/MalformedURL.java deleted file mode 100644 index 57fcddf76b..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/MalformedURL.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.exceptions; - -import java.net.MalformedURLException; -import java.net.URL; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class MalformedURL { - - private static Logger LOGGER = LoggerFactory.getLogger(MalformedURL.class); - - public static void main(String[] args) { - - URL baeldungURL = null; - - try { - baeldungURL = new URL("malformedurl"); - } catch (MalformedURLException e) { - LOGGER.error("MalformedURLException caught!"); - } - - } - -} diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NullOrEmptyException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NullOrEmptyException.java deleted file mode 100644 index d4ee9c0d6f..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NullOrEmptyException.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung.exceptions; - -public class NullOrEmptyException extends RuntimeException { - - private static final long serialVersionUID = 1L; - - public NullOrEmptyException(String errorMessage) { - super(errorMessage); - } - - public NullOrEmptyException(String errorMessage, Throwable thr) { - super(errorMessage, thr); - } -} \ No newline at end of file diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NullPointer.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NullPointer.java deleted file mode 100644 index 2402a786a9..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NullPointer.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.baeldung.exceptions; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class NullPointer { - - private static Logger LOGGER = LoggerFactory.getLogger(NullPointer.class); - - public static void main(String[] args) { - - Person personObj = null; - - try { - String name = personObj.personName; // Accessing the field of a null object - personObj.personName = "Jon Doe"; // Modifying the field of a null object - } catch (NullPointerException e) { - LOGGER.error("NullPointerException caught!"); - } - - } -} - -class Person { - - public String personName; - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - -} diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NumberFormat.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NumberFormat.java deleted file mode 100644 index 7050e70aee..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/NumberFormat.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.baeldung.exceptions; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class NumberFormat { - - private static Logger LOGGER = LoggerFactory.getLogger(NumberFormat.class); - - public static void main(String[] args) { - - String str1 = "100ABCD"; - - try { - int x = Integer.parseInt(str1); // Converting string with inappropriate format - int y = Integer.valueOf(str1); - } catch (NumberFormatException e) { - LOGGER.error("NumberFormatException caught!"); - } - - } - -} diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ParseExceptionExample.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ParseExceptionExample.java deleted file mode 100644 index f7fb4c91e4..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/ParseExceptionExample.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.exceptions; - -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ParseExceptionExample { - - private static Logger LOGGER = LoggerFactory.getLogger(ParseExceptionExample.class); - - public static void main(String[] args) { - - DateFormat format = new SimpleDateFormat("MM, dd, yyyy"); - - try { - format.parse("01, , 2010"); - } catch (ParseException e) { - LOGGER.error("ParseException caught!"); - } - } - -} diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/RootCauseFinder.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/RootCauseFinder.java deleted file mode 100644 index cf449110e6..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/RootCauseFinder.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.baeldung.exceptions; - -import java.time.LocalDate; -import java.time.Period; -import java.time.format.DateTimeParseException; -import java.util.Objects; - -/** - * Utility class to find root cause exceptions. - */ -public class RootCauseFinder { - - private RootCauseFinder() { - } - - public static Throwable findCauseUsingPlainJava(Throwable throwable) { - Objects.requireNonNull(throwable); - Throwable rootCause = throwable; - while (rootCause.getCause() != null && rootCause.getCause() != rootCause) { - rootCause = rootCause.getCause(); - } - return rootCause; - } - - /** - * Calculates the age of a person from a given date. - */ - static class AgeCalculator { - - private AgeCalculator() { - } - - public static int calculateAge(String birthDate) { - if (birthDate == null || birthDate.isEmpty()) { - throw new IllegalArgumentException(); - } - - try { - return Period - .between(parseDate(birthDate), LocalDate.now()) - .getYears(); - } catch (DateParseException ex) { - throw new CalculationException(ex); - } - } - - private static LocalDate parseDate(String birthDateAsString) { - - LocalDate birthDate; - try { - birthDate = LocalDate.parse(birthDateAsString); - } catch (DateTimeParseException ex) { - throw new InvalidFormatException(birthDateAsString, ex); - } - - if (birthDate.isAfter(LocalDate.now())) { - throw new DateOutOfRangeException(birthDateAsString); - } - - return birthDate; - } - - } - - static class CalculationException extends RuntimeException { - - CalculationException(DateParseException ex) { - super(ex); - } - } - - static class DateParseException extends RuntimeException { - - DateParseException(String input) { - super(input); - } - - DateParseException(String input, Throwable thr) { - super(input, thr); - } - } - - static class InvalidFormatException extends DateParseException { - - InvalidFormatException(String input, Throwable thr) { - super("Invalid date format: " + input, thr); - } - } - - static class DateOutOfRangeException extends DateParseException { - - DateOutOfRangeException(String date) { - super("Date out of range: " + date); - } - - } - -} diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/StackTraceToString.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/StackTraceToString.java deleted file mode 100644 index c6bf915996..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/StackTraceToString.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.exceptions; - -import org.apache.commons.lang3.exception.ExceptionUtils; - -import java.io.PrintWriter; -import java.io.StringWriter; - -public class StackTraceToString { - - public static void main(String[] args) { - // Convert a StackTrace to String using core java - try { - throw new NullPointerException(); - } catch (Exception e) { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - e.printStackTrace(pw); - - System.out.println(sw.toString()); - } - - // Convert a StackTrace to String using Apache Commons - try { - throw new IndexOutOfBoundsException(); - } catch (Exception e) { - System.out.println(ExceptionUtils.getStackTrace(e)); - } - } - -} diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/StringIndexOutOfBounds.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/StringIndexOutOfBounds.java deleted file mode 100644 index bc297be498..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/StringIndexOutOfBounds.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.baeldung.exceptions; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class StringIndexOutOfBounds { - - private static Logger LOGGER = LoggerFactory.getLogger(StringIndexOutOfBounds.class); - - public static void main(String[] args) { - - String str = "Hello World"; - - try { - char charAtNegativeIndex = str.charAt(-1); // Trying to access at negative index - char charAtLengthIndex = str.charAt(11); // Trying to access at index equal to size of the string - } catch (StringIndexOutOfBoundsException e) { - LOGGER.error("StringIndexOutOfBoundsException caught"); - } - - } - -} diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/LogWithChain.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/LogWithChain.java similarity index 73% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/LogWithChain.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/LogWithChain.java index 3d66c2b535..a2eae50108 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/LogWithChain.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/LogWithChain.java @@ -1,9 +1,9 @@ -package com.baeldung.chainedexception; +package com.baeldung.exceptions.chainedexception; -import com.baeldung.chainedexception.exceptions.GirlFriendOfManagerUpsetException; -import com.baeldung.chainedexception.exceptions.ManagerUpsetException; -import com.baeldung.chainedexception.exceptions.NoLeaveGrantedException; -import com.baeldung.chainedexception.exceptions.TeamLeadUpsetException; +import com.baeldung.exceptions.chainedexception.exceptions.GirlFriendOfManagerUpsetException; +import com.baeldung.exceptions.chainedexception.exceptions.ManagerUpsetException; +import com.baeldung.exceptions.chainedexception.exceptions.NoLeaveGrantedException; +import com.baeldung.exceptions.chainedexception.exceptions.TeamLeadUpsetException; public class LogWithChain { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/LogWithoutChain.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/LogWithoutChain.java similarity index 75% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/LogWithoutChain.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/LogWithoutChain.java index 7556e30663..8c37db0307 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/LogWithoutChain.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/LogWithoutChain.java @@ -1,9 +1,9 @@ -package com.baeldung.chainedexception; +package com.baeldung.exceptions.chainedexception; -import com.baeldung.chainedexception.exceptions.GirlFriendOfManagerUpsetException; -import com.baeldung.chainedexception.exceptions.ManagerUpsetException; -import com.baeldung.chainedexception.exceptions.NoLeaveGrantedException; -import com.baeldung.chainedexception.exceptions.TeamLeadUpsetException; +import com.baeldung.exceptions.chainedexception.exceptions.GirlFriendOfManagerUpsetException; +import com.baeldung.exceptions.chainedexception.exceptions.ManagerUpsetException; +import com.baeldung.exceptions.chainedexception.exceptions.NoLeaveGrantedException; +import com.baeldung.exceptions.chainedexception.exceptions.TeamLeadUpsetException; public class LogWithoutChain { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java similarity index 82% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java index e20c58ea5b..91537b58d4 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/GirlFriendOfManagerUpsetException.java @@ -1,4 +1,4 @@ -package com.baeldung.chainedexception.exceptions; +package com.baeldung.exceptions.chainedexception.exceptions; public class GirlFriendOfManagerUpsetException extends Exception { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/ManagerUpsetException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/ManagerUpsetException.java similarity index 80% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/ManagerUpsetException.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/ManagerUpsetException.java index e95a3921a4..351521a522 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/ManagerUpsetException.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/ManagerUpsetException.java @@ -1,4 +1,4 @@ -package com.baeldung.chainedexception.exceptions; +package com.baeldung.exceptions.chainedexception.exceptions; public class ManagerUpsetException extends Exception { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/NoLeaveGrantedException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/NoLeaveGrantedException.java similarity index 80% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/NoLeaveGrantedException.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/NoLeaveGrantedException.java index b9521858b3..dd84baae74 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/NoLeaveGrantedException.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/NoLeaveGrantedException.java @@ -1,4 +1,4 @@ -package com.baeldung.chainedexception.exceptions; +package com.baeldung.exceptions.chainedexception.exceptions; public class NoLeaveGrantedException extends Exception { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/TeamLeadUpsetException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/TeamLeadUpsetException.java similarity index 80% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/TeamLeadUpsetException.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/TeamLeadUpsetException.java index f874620f00..4ea8c3db7a 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/chainedexception/exceptions/TeamLeadUpsetException.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/chainedexception/exceptions/TeamLeadUpsetException.java @@ -1,4 +1,4 @@ -package com.baeldung.chainedexception.exceptions; +package com.baeldung.exceptions.chainedexception.exceptions; public class TeamLeadUpsetException extends Exception { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/FileManager.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/FileManager.java similarity index 96% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/FileManager.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/FileManager.java index b6f4d960aa..adc1b1613c 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/FileManager.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/FileManager.java @@ -1,4 +1,4 @@ -package com.baeldung.customexception; +package com.baeldung.exceptions.customexception; import java.io.File; import java.io.FileNotFoundException; diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/IncorrectFileExtensionException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/IncorrectFileExtensionException.java similarity index 83% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/IncorrectFileExtensionException.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/IncorrectFileExtensionException.java index c6dc6d6964..4e8fece145 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/IncorrectFileExtensionException.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/IncorrectFileExtensionException.java @@ -1,4 +1,4 @@ -package com.baeldung.customexception; +package com.baeldung.exceptions.customexception; public class IncorrectFileExtensionException extends RuntimeException{ private static final long serialVersionUID = 1L; diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/IncorrectFileNameException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/IncorrectFileNameException.java similarity index 82% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/IncorrectFileNameException.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/IncorrectFileNameException.java index a804cadb84..f7f6a9dd8c 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/customexception/IncorrectFileNameException.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/customexception/IncorrectFileNameException.java @@ -1,4 +1,4 @@ -package com.baeldung.customexception; +package com.baeldung.exceptions.customexception; public class IncorrectFileNameException extends Exception { private static final long serialVersionUID = 1L; diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/Exceptions.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/Exceptions.java similarity index 99% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/Exceptions.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/Exceptions.java index 32d88cfd12..14483b3489 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/Exceptions.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/Exceptions.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptionhandling; +package com.baeldung.exceptions.exceptionhandling; import java.io.File; import java.io.FileNotFoundException; diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/MyException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/MyException.java new file mode 100644 index 0000000000..bc2c6baffb --- /dev/null +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/MyException.java @@ -0,0 +1,5 @@ +package com.baeldung.exceptions.exceptionhandling; + +public class MyException extends Throwable { + +} diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/Player.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/Player.java similarity index 72% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/Player.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/Player.java index e866802fe3..1251cd58e6 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/Player.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/Player.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptionhandling; +package com.baeldung.exceptions.exceptionhandling; public class Player { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/PlayerLoadException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/PlayerLoadException.java similarity index 75% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/PlayerLoadException.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/PlayerLoadException.java index d92edeebbd..432232c23e 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/PlayerLoadException.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/PlayerLoadException.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptionhandling; +package com.baeldung.exceptions.exceptionhandling; import java.io.IOException; diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/PlayerScoreException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/PlayerScoreException.java similarity index 71% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/PlayerScoreException.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/PlayerScoreException.java index 299370ee86..ba2a6d74e4 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/PlayerScoreException.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/PlayerScoreException.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptionhandling; +package com.baeldung.exceptions.exceptionhandling; public class PlayerScoreException extends Exception { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/TimeoutException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/TimeoutException.java similarity index 71% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/TimeoutException.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/TimeoutException.java index 0211284e5d..0f926ccf58 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/TimeoutException.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/exceptionhandling/TimeoutException.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptionhandling; +package com.baeldung.exceptions.exceptionhandling; public class TimeoutException extends Exception { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalize/FinalizeObject.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalize/FinalizeObject.java similarity index 88% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalize/FinalizeObject.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalize/FinalizeObject.java index af0449c0da..9e5e7461ea 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalize/FinalizeObject.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalize/FinalizeObject.java @@ -1,4 +1,4 @@ -package com.baeldung.keywords.finalize; +package com.baeldung.exceptions.keywords.finalize; public class FinalizeObject { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/Child.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/Child.java similarity index 78% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/Child.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/Child.java index 8615c78652..b006850199 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/Child.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/Child.java @@ -1,4 +1,4 @@ -package com.baeldung.keywords.finalkeyword; +package com.baeldung.exceptions.keywords.finalkeyword; public final class Child extends Parent { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/GrandChild.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/GrandChild.java similarity index 56% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/GrandChild.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/GrandChild.java index 1530c5037f..f8adf27914 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/GrandChild.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/GrandChild.java @@ -1,4 +1,4 @@ -package com.baeldung.keywords.finalkeyword; +package com.baeldung.exceptions.keywords.finalkeyword; /*public class GrandChild extends Child { // Compilation error diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/Parent.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/Parent.java similarity index 87% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/Parent.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/Parent.java index 5cd2996e7a..2a5d19a32f 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finalkeyword/Parent.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finalkeyword/Parent.java @@ -1,4 +1,4 @@ -package com.baeldung.keywords.finalkeyword; +package com.baeldung.exceptions.keywords.finalkeyword; public class Parent { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finallykeyword/FinallyExample.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finallykeyword/FinallyExample.java similarity index 92% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finallykeyword/FinallyExample.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finallykeyword/FinallyExample.java index 3c0aee3196..8f9d9a29d2 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/keywords/finallykeyword/FinallyExample.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/keywords/finallykeyword/FinallyExample.java @@ -1,4 +1,4 @@ -package com.baeldung.keywords.finallykeyword; +package com.baeldung.exceptions.keywords.finallykeyword; public class FinallyExample { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/noclassdeffounderror/ClassWithInitErrors.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/noclassdeffounderror/ClassWithInitErrors.java similarity index 55% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/noclassdeffounderror/ClassWithInitErrors.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/noclassdeffounderror/ClassWithInitErrors.java index b5b357a322..a82f430959 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/noclassdeffounderror/ClassWithInitErrors.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/noclassdeffounderror/ClassWithInitErrors.java @@ -1,4 +1,4 @@ -package com.baeldung.noclassdeffounderror; +package com.baeldung.exceptions.noclassdeffounderror; public class ClassWithInitErrors { static int data = 1 / 0; diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorExample.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/noclassdeffounderror/NoClassDefFoundErrorExample.java similarity index 86% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorExample.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/noclassdeffounderror/NoClassDefFoundErrorExample.java index 7bcefbdbd3..0dc74a9d01 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorExample.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/noclassdeffounderror/NoClassDefFoundErrorExample.java @@ -1,4 +1,4 @@ -package com.baeldung.noclassdeffounderror; +package com.baeldung.exceptions.noclassdeffounderror; public class NoClassDefFoundErrorExample { public ClassWithInitErrors getClassWithInitErrors() { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/sneakythrows/SneakyRunnable.java similarity index 90% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/sneakythrows/SneakyRunnable.java index 88a8696053..06b587d0e0 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/sneakythrows/SneakyRunnable.java @@ -1,4 +1,4 @@ -package com.baeldung.sneakythrows; +package com.baeldung.exceptions.sneakythrows; import lombok.SneakyThrows; diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/sneakythrows/SneakyThrows.java similarity index 90% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/sneakythrows/SneakyThrows.java index 847aaa7249..e86ef53733 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/sneakythrows/SneakyThrows.java @@ -1,4 +1,4 @@ -package com.baeldung.sneakythrows; +package com.baeldung.exceptions.sneakythrows; import java.io.IOException; diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/AccountHolder.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/AccountHolder.java similarity index 74% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/AccountHolder.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/AccountHolder.java index 91b8a3bbb0..5beac1cd04 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/AccountHolder.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/AccountHolder.java @@ -1,4 +1,4 @@ -package com.baeldung.stackoverflowerror; +package com.baeldung.exceptions.stackoverflowerror; public class AccountHolder { private String firstName; diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/ClassOne.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/ClassOne.java similarity index 86% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/ClassOne.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/ClassOne.java index 3b95fd1368..e290a1fe38 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/ClassOne.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/ClassOne.java @@ -1,4 +1,4 @@ -package com.baeldung.stackoverflowerror; +package com.baeldung.exceptions.stackoverflowerror; public class ClassOne { private int oneValue; diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/ClassTwo.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/ClassTwo.java similarity index 86% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/ClassTwo.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/ClassTwo.java index 0adf075b43..fc6a89e1fb 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/ClassTwo.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/ClassTwo.java @@ -1,4 +1,4 @@ -package com.baeldung.stackoverflowerror; +package com.baeldung.exceptions.stackoverflowerror; public class ClassTwo { private int twoValue; diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationCondition.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/InfiniteRecursionWithTerminationCondition.java similarity index 78% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationCondition.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/InfiniteRecursionWithTerminationCondition.java index c67eeb30d1..858871cb9d 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationCondition.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/InfiniteRecursionWithTerminationCondition.java @@ -1,4 +1,4 @@ -package com.baeldung.stackoverflowerror; +package com.baeldung.exceptions.stackoverflowerror; public class InfiniteRecursionWithTerminationCondition { public int calculateFactorial(final int number) { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationCondition.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/RecursionWithCorrectTerminationCondition.java similarity index 78% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationCondition.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/RecursionWithCorrectTerminationCondition.java index 8d10c65dcc..69b1c0b5ab 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationCondition.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/RecursionWithCorrectTerminationCondition.java @@ -1,4 +1,4 @@ -package com.baeldung.stackoverflowerror; +package com.baeldung.exceptions.stackoverflowerror; public class RecursionWithCorrectTerminationCondition { public int calculateFactorial(final int number) { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursion.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/UnintendedInfiniteRecursion.java similarity index 75% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursion.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/UnintendedInfiniteRecursion.java index 0b7fb3cf94..c07fdcb01b 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursion.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/stackoverflowerror/UnintendedInfiniteRecursion.java @@ -1,4 +1,4 @@ -package com.baeldung.stackoverflowerror; +package com.baeldung.exceptions.stackoverflowerror; public class UnintendedInfiniteRecursion { public int calculateFactorial(int number) { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/DataAccessException.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/DataAccessException.java similarity index 78% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/DataAccessException.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/DataAccessException.java index 0b371dcedb..448c8e2213 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/DataAccessException.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/DataAccessException.java @@ -1,4 +1,4 @@ -package com.baeldung.throwsexception; +package com.baeldung.exceptions.throwvsthrows; public class DataAccessException extends RuntimeException { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/Main.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/Main.java similarity index 95% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/Main.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/Main.java index 17fbf5a582..dfe8fcbd5a 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/Main.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/Main.java @@ -1,4 +1,4 @@ -package com.baeldung.throwsexception; +package com.baeldung.exceptions.throwvsthrows; import com.sun.mail.iap.ConnectionException; diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/PersonRepository.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/PersonRepository.java similarity index 79% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/PersonRepository.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/PersonRepository.java index 7d8345c3c1..73453f4fc0 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/PersonRepository.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/PersonRepository.java @@ -1,4 +1,4 @@ -package com.baeldung.throwsexception; +package com.baeldung.exceptions.throwvsthrows; import java.sql.SQLException; import java.util.List; diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/SimpleService.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/SimpleService.java similarity index 90% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/SimpleService.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/SimpleService.java index 6bb8b90bf1..605d900633 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/SimpleService.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/SimpleService.java @@ -1,4 +1,4 @@ -package com.baeldung.throwsexception; +package com.baeldung.exceptions.throwvsthrows; import java.sql.SQLException; diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/TryCatch.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/TryCatch.java similarity index 85% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/TryCatch.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/TryCatch.java index 2fd87f124d..f8a603f013 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/throwsexception/TryCatch.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/throwvsthrows/TryCatch.java @@ -1,4 +1,4 @@ -package com.baeldung.throwsexception; +package com.baeldung.exceptions.throwvsthrows; import com.sun.mail.iap.ConnectionException; diff --git a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/optional/PersonRepository.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/optional/PersonRepository.java deleted file mode 100644 index 46018faf80..0000000000 --- a/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/optional/PersonRepository.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.optional; - -public class PersonRepository { - - public String findNameById(String id) { - return id == null ? null : "Name"; - } - -} diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exception/error/ErrorGeneratorUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exception/error/ErrorGeneratorUnitTest.java deleted file mode 100644 index 6dcd0d72e0..0000000000 --- a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exception/error/ErrorGeneratorUnitTest.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.exception.error; - -import org.junit.Assert; -import org.junit.Test; - -public class ErrorGeneratorUnitTest { - - @Test(expected = AssertionError.class) - public void whenError_thenIsNotCaughtByCatchException() { - try { - throw new AssertionError(); - } catch (Exception e) { - Assert.fail(); // errors are not caught by catch exception - } - } - - @Test - public void whenError_thenIsCaughtByCatchError() { - try { - throw new AssertionError(); - } catch (Error e) { - // caught! -> test pass - } - } -} \ No newline at end of file diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exception/numberformat/NumberFormatExceptionUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exception/numberformat/NumberFormatExceptionUnitTest.java deleted file mode 100644 index cb26bf451a..0000000000 --- a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exception/numberformat/NumberFormatExceptionUnitTest.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.baeldung.exception.numberformat; - -import static org.junit.Assert.assertEquals; - -import java.math.BigDecimal; -import java.math.BigInteger; -import java.text.NumberFormat; -import java.text.ParseException; -import java.util.Locale; -import java.util.logging.Logger; - -import org.junit.Test; - -/** - * A set of examples tested to show cases where NumberFormatException is thrown and not thrown. - */ -public class NumberFormatExceptionUnitTest { - - Logger LOG = Logger.getLogger(NumberFormatExceptionUnitTest.class.getName()); - - /* ---INTEGER FAIL CASES--- */ - @Test(expected = NumberFormatException.class) - public void givenByteConstructor_whenAlphabetAsInput_thenFail() { - Byte byteInt = new Byte("one"); - } - - @Test(expected = NumberFormatException.class) - public void givenShortConstructor_whenSpaceInInput_thenFail() { - Short shortInt = new Short("2 "); - } - - @Test(expected = NumberFormatException.class) - public void givenParseIntMethod_whenSpaceInInput_thenFail() { - Integer aIntPrim = Integer.parseInt("6000 "); - } - - @Test(expected = NumberFormatException.class) - public void givenParseIntMethod_whenUnderscoreInInput_thenFail() { - int bIntPrim = Integer.parseInt("_6000"); - } - - @Test(expected = NumberFormatException.class) - public void givenIntegerValueOfMethod_whenCommaInInput_thenFail() { - Integer cIntPrim = Integer.valueOf("6,000"); - } - - @Test(expected = NumberFormatException.class) - public void givenBigIntegerConstructor_whenDecimalInInput_thenFail() { - BigInteger bigInteger = new BigInteger("4.0"); - } - - @Test(expected = NumberFormatException.class) - public void givenDecodeMethod_whenAlphabetInInput_thenFail() { - Long decodedLong = Long.decode("64403L"); - } - - /* ---INTEGER PASS CASES--- */ - @Test - public void givenInvalidNumberInputs_whenOptimized_thenPass() { - Byte byteInt = new Byte("1"); - assertEquals(1, byteInt.intValue()); - - Short shortInt = new Short("2 ".trim()); - assertEquals(2, shortInt.intValue()); - - Integer aIntObj = Integer.valueOf("6"); - assertEquals(6, aIntObj.intValue()); - - BigInteger bigInteger = new BigInteger("4"); - assertEquals(4, bigInteger.intValue()); - - int aIntPrim = Integer.parseInt("6000 ".trim()); - assertEquals(6000, aIntPrim); - - int bIntPrim = Integer.parseInt("_6000".replaceAll("_", "")); - assertEquals(6000, bIntPrim); - - int cIntPrim = Integer.parseInt("-6000"); - assertEquals(-6000, cIntPrim); - - Long decodeInteger = Long.decode("644032334"); - assertEquals(644032334L, decodeInteger.longValue()); - } - - /* ---DOUBLE FAIL CASES--- */ - @Test(expected = NumberFormatException.class) - public void givenFloatConstructor_whenAlphabetInInput_thenFail() { - Float floatDecimalObj = new Float("one.1"); - } - - @Test(expected = NumberFormatException.class) - public void givenDoubleConstructor_whenAlphabetInInput_thenFail() { - Double doubleDecimalObj = new Double("two.2"); - } - - @Test(expected = NumberFormatException.class) - public void givenBigDecimalConstructor_whenSpecialCharsInInput_thenFail() { - BigDecimal bigDecimalObj = new BigDecimal("3_0.3"); - } - - @Test(expected = NumberFormatException.class) - public void givenParseDoubleMethod_whenCommaInInput_thenFail() { - double aDoublePrim = Double.parseDouble("4000,1"); - } - - /* ---DOUBLE PASS CASES--- */ - @Test - public void givenDoubleConstructor_whenDecimalInInput_thenPass() { - Double doubleDecimalObj = new Double("2.2"); - assertEquals(2.2, doubleDecimalObj.doubleValue(), 0); - } - - @Test - public void givenDoubleValueOfMethod_whenMinusInInput_thenPass() { - Double aDoubleObj = Double.valueOf("-6000"); - assertEquals(-6000, aDoubleObj.doubleValue(), 0); - } - - @Test - public void givenUsDecimalNumber_whenParsedWithNumberFormat_thenPass() throws ParseException { - Number parsedNumber = parseNumberWithLocale("4000.1", Locale.US); - assertEquals(4000.1, parsedNumber); - assertEquals(4000.1, parsedNumber.doubleValue(), 0); - assertEquals(4000, parsedNumber.intValue()); - } - - /** - * In most European countries (for example, France), comma is used as decimal in place of period. - * @throws ParseException if the input string contains special characters other than comma or decimal. - * In this test case, anything after decimal (period) is dropped when a European locale is set. - */ - @Test - public void givenEuDecimalNumberHasComma_whenParsedWithNumberFormat_thenPass() throws ParseException { - Number parsedNumber = parseNumberWithLocale("4000,1", Locale.FRANCE); - LOG.info("Number parsed is: " + parsedNumber); - assertEquals(4000.1, parsedNumber); - assertEquals(4000.1, parsedNumber.doubleValue(), 0); - assertEquals(4000, parsedNumber.intValue()); - } - - /** - * Converts a string into a number retaining all decimals, and symbols valid in a locale. - * @param number the input string for a number. - * @param locale the locale to consider while parsing a number. - * @return the generic number object which can represent multiple number types. - * @throws ParseException when input contains invalid characters. - */ - private Number parseNumberWithLocale(String number, Locale locale) throws ParseException { - locale = locale == null ? Locale.getDefault() : locale; - NumberFormat numberFormat = NumberFormat.getInstance(locale); - return numberFormat.parse(number); - } - -} diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/CheckedUncheckedExceptionsUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/CheckedUncheckedExceptionsUnitTest.java deleted file mode 100644 index d82b1349d8..0000000000 --- a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/CheckedUncheckedExceptionsUnitTest.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.baeldung.exceptions; - -import static org.junit.jupiter.api.Assertions.assertThrows; - -import java.io.FileNotFoundException; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -/** - * Tests the {@link CheckedUncheckedExceptions}. - */ -public class CheckedUncheckedExceptionsUnitTest { - - @Test - public void whenFileNotExist_thenThrowException() { - assertThrows(FileNotFoundException.class, () -> { - CheckedUncheckedExceptions.checkedExceptionWithThrows(); - }); - } - - @Test - public void whenTryCatchExcetpion_thenSuccess() { - try { - CheckedUncheckedExceptions.checkedExceptionWithTryCatch(); - } catch (Exception e) { - Assertions.fail(e.getMessage()); - } - } - - @Test - public void whenDivideByZero_thenThrowException() { - assertThrows(ArithmeticException.class, () -> { - CheckedUncheckedExceptions.divideByZero(); - }); - } - - @Test - public void whenInvalidFile_thenThrowException() { - - assertThrows(IncorrectFileNameException.class, () -> { - CheckedUncheckedExceptions.checkFile("wrongFileName.txt"); - }); - } - - @Test - public void whenNullOrEmptyFile_thenThrowException() { - assertThrows(NullOrEmptyException.class, () -> { - CheckedUncheckedExceptions.checkFile(null); - }); - assertThrows(NullOrEmptyException.class, () -> { - CheckedUncheckedExceptions.checkFile(""); - }); - } -} diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/GlobalExceptionHandlerUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/GlobalExceptionHandlerUnitTest.java deleted file mode 100644 index 394de9c576..0000000000 --- a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/GlobalExceptionHandlerUnitTest.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.baeldung.exceptions; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; -import org.slf4j.LoggerFactory; -import ch.qos.logback.classic.Level; -import ch.qos.logback.classic.Logger; -import ch.qos.logback.classic.spi.ILoggingEvent; -import ch.qos.logback.classic.spi.LoggingEvent; -import ch.qos.logback.core.Appender; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.verify; - -@RunWith(MockitoJUnitRunner.class) -public class GlobalExceptionHandlerUnitTest { - - @Mock - private Appender mockAppender; - - @Captor - private ArgumentCaptor captorLoggingEvent; - - @Before - public void setup() { - final Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); - logger.addAppender(mockAppender); - - Handler globalExceptionHandler = new Handler(); - Thread.setDefaultUncaughtExceptionHandler(globalExceptionHandler); - } - - @After - public void teardown() { - final Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); - logger.detachAppender(mockAppender); - } - - @Test - public void whenArithmeticException_thenUseUncaughtExceptionHandler() throws InterruptedException { - - Thread globalExceptionHandlerThread = new Thread() { - public void run() { - GlobalExceptionHandler globalExceptionHandlerObj = new GlobalExceptionHandler(); - globalExceptionHandlerObj.performArithmeticOperation(99, 0); - } - }; - - globalExceptionHandlerThread.start(); - globalExceptionHandlerThread.join(); - - verify(mockAppender).doAppend(captorLoggingEvent.capture()); - LoggingEvent loggingEvent = captorLoggingEvent.getValue(); - - assertThat(loggingEvent.getLevel()).isEqualTo(Level.INFO); - assertThat(loggingEvent.getFormattedMessage()).isEqualTo("Unhandled exception caught!"); - } - -} diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/RootCauseFinderUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/RootCauseFinderUnitTest.java deleted file mode 100644 index 5d0f3b9c3e..0000000000 --- a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/RootCauseFinderUnitTest.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.baeldung.exceptions; - -import com.google.common.base.Throwables; -import org.apache.commons.lang3.exception.ExceptionUtils; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import java.time.LocalDate; -import java.time.format.DateTimeParseException; -import java.time.temporal.ChronoUnit; - -import static com.baeldung.exceptions.RootCauseFinder.*; -import static org.junit.jupiter.api.Assertions.assertTrue; - -/** - * Tests the {@link RootCauseFinder}. - */ -public class RootCauseFinderUnitTest { - - @Test - public void givenBirthDate_whenCalculatingAge_thenAgeReturned() { - try { - int age = AgeCalculator.calculateAge("1990-01-01"); - Assertions.assertEquals(1990, LocalDate - .now() - .minus(age, ChronoUnit.YEARS) - .getYear()); - } catch (CalculationException e) { - Assertions.fail(e.getMessage()); - } - } - - @Test - public void givenWrongFormatDate_whenFindingRootCauseUsingJava_thenRootCauseFound() { - try { - AgeCalculator.calculateAge("010102"); - } catch (CalculationException ex) { - assertTrue(findCauseUsingPlainJava(ex) instanceof DateTimeParseException); - } - } - - @Test - public void givenOutOfRangeDate_whenFindingRootCauseUsingJava_thenRootCauseFound() { - try { - AgeCalculator.calculateAge("2020-04-04"); - } catch (CalculationException ex) { - assertTrue(findCauseUsingPlainJava(ex) instanceof DateOutOfRangeException); - } - } - - @Test - public void givenNullDate_whenFindingRootCauseUsingJava_thenRootCauseFound() { - try { - AgeCalculator.calculateAge(null); - } catch (Exception ex) { - assertTrue(findCauseUsingPlainJava(ex) instanceof IllegalArgumentException); - } - } - - @Test - public void givenWrongFormatDate_whenFindingRootCauseUsingApacheCommons_thenRootCauseFound() { - try { - AgeCalculator.calculateAge("010102"); - } catch (CalculationException ex) { - assertTrue(ExceptionUtils.getRootCause(ex) instanceof DateTimeParseException); - } - } - - @Test - public void givenOutOfRangeDate_whenFindingRootCauseUsingApacheCommons_thenRootCauseFound() { - try { - AgeCalculator.calculateAge("2020-04-04"); - } catch (CalculationException ex) { - assertTrue(ExceptionUtils.getRootCause(ex) instanceof DateOutOfRangeException); - } - } - - @Test - public void givenNullDate_whenFindingRootCauseUsingApacheCommons_thenRootCauseNotFound() { - try { - AgeCalculator.calculateAge(null); - } catch (Exception ex) { - assertTrue(ExceptionUtils.getRootCause(ex) instanceof IllegalArgumentException); - } - } - - @Test - public void givenWrongFormatDate_whenFindingRootCauseUsingGuava_thenRootCauseFound() { - try { - AgeCalculator.calculateAge("010102"); - } catch (CalculationException ex) { - assertTrue(Throwables.getRootCause(ex) instanceof DateTimeParseException); - } - } - - @Test - public void givenOutOfRangeDate_whenFindingRootCauseUsingGuava_thenRootCauseFound() { - try { - AgeCalculator.calculateAge("2020-04-04"); - } catch (CalculationException ex) { - assertTrue(Throwables.getRootCause(ex) instanceof DateOutOfRangeException); - } - } - - @Test - public void givenNullDate_whenFindingRootCauseUsingGuava_thenRootCauseFound() { - try { - AgeCalculator.calculateAge(null); - } catch (Exception ex) { - assertTrue(Throwables.getRootCause(ex) instanceof IllegalArgumentException); - } - } - -} diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/classnotfoundexception/ClassNotFoundExceptionUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/classnotfoundexception/ClassNotFoundExceptionUnitTest.java similarity index 84% rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/classnotfoundexception/ClassNotFoundExceptionUnitTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/classnotfoundexception/ClassNotFoundExceptionUnitTest.java index 59605fb1c9..9311a9d886 100644 --- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/classnotfoundexception/ClassNotFoundExceptionUnitTest.java +++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/classnotfoundexception/ClassNotFoundExceptionUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.classnotfoundexception; +package com.baeldung.exceptions.classnotfoundexception; import org.junit.Test; diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/customexception/IncorrectFileExtensionExceptionUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/customexception/IncorrectFileExtensionExceptionUnitTest.java similarity index 95% rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/customexception/IncorrectFileExtensionExceptionUnitTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/customexception/IncorrectFileExtensionExceptionUnitTest.java index 230698f719..80787daaaa 100644 --- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/customexception/IncorrectFileExtensionExceptionUnitTest.java +++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/customexception/IncorrectFileExtensionExceptionUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.customexception; +package com.baeldung.exceptions.customexception; import static org.assertj.core.api.Assertions.assertThat; diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/customexception/IncorrectFileNameExceptionUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/customexception/IncorrectFileNameExceptionUnitTest.java similarity index 92% rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/customexception/IncorrectFileNameExceptionUnitTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/customexception/IncorrectFileNameExceptionUnitTest.java index acb05eb763..8e135c1cec 100644 --- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/customexception/IncorrectFileNameExceptionUnitTest.java +++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/customexception/IncorrectFileNameExceptionUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.customexception; +package com.baeldung.exceptions.customexception; import static org.assertj.core.api.Assertions.assertThat; diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/exceptionhandling/ExceptionsUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/exceptionhandling/ExceptionsUnitTest.java similarity index 97% rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/exceptionhandling/ExceptionsUnitTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/exceptionhandling/ExceptionsUnitTest.java index 29c690133d..3551de3631 100644 --- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/exceptionhandling/ExceptionsUnitTest.java +++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/exceptionhandling/ExceptionsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptionhandling; +package com.baeldung.exceptions.exceptionhandling; import org.junit.Test; diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/noclassdeffounderror/NoClassDefFoundErrorUnitTest.java similarity index 85% rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorUnitTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/noclassdeffounderror/NoClassDefFoundErrorUnitTest.java index 521c50098a..135a51f9dd 100644 --- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/noclassdeffounderror/NoClassDefFoundErrorUnitTest.java +++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/noclassdeffounderror/NoClassDefFoundErrorUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.noclassdeffounderror; +package com.baeldung.exceptions.noclassdeffounderror; import org.junit.Test; diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/sneakythrows/SneakyRunnableUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/sneakythrows/SneakyRunnableUnitTest.java similarity index 89% rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/sneakythrows/SneakyRunnableUnitTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/sneakythrows/SneakyRunnableUnitTest.java index 8d8e4f14fe..086c4eaef0 100644 --- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/sneakythrows/SneakyRunnableUnitTest.java +++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/sneakythrows/SneakyRunnableUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.sneakythrows; +package com.baeldung.exceptions.sneakythrows; import org.junit.Test; diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/sneakythrows/SneakyThrowsUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/sneakythrows/SneakyThrowsUnitTest.java similarity index 89% rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/sneakythrows/SneakyThrowsUnitTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/sneakythrows/SneakyThrowsUnitTest.java index da1b2e617b..3b70128a9b 100644 --- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/sneakythrows/SneakyThrowsUnitTest.java +++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/sneakythrows/SneakyThrowsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.sneakythrows; +package com.baeldung.exceptions.sneakythrows; import org.junit.Test; diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/AccountHolderManualTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/AccountHolderManualTest.java similarity index 82% rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/AccountHolderManualTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/AccountHolderManualTest.java index 180b7723ac..dac8698bf8 100644 --- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/AccountHolderManualTest.java +++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/AccountHolderManualTest.java @@ -1,4 +1,4 @@ -package com.baeldung.stackoverflowerror; +package com.baeldung.exceptions.stackoverflowerror; import org.junit.Test; diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/CyclicDependancyManualTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/CyclicDependancyManualTest.java similarity index 81% rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/CyclicDependancyManualTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/CyclicDependancyManualTest.java index 95164ac935..db6b1d45f8 100644 --- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/CyclicDependancyManualTest.java +++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/CyclicDependancyManualTest.java @@ -1,4 +1,4 @@ -package com.baeldung.stackoverflowerror; +package com.baeldung.exceptions.stackoverflowerror; import org.junit.Test; diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java similarity index 95% rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java index ccf8c25271..2c7289cd5c 100644 --- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java +++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/InfiniteRecursionWithTerminationConditionManualTest.java @@ -1,4 +1,4 @@ -package com.baeldung.stackoverflowerror; +package com.baeldung.exceptions.stackoverflowerror; import org.junit.Test; diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationConditionManualTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/RecursionWithCorrectTerminationConditionManualTest.java similarity index 89% rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationConditionManualTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/RecursionWithCorrectTerminationConditionManualTest.java index 40c2c4799e..e7fb0874ea 100644 --- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/RecursionWithCorrectTerminationConditionManualTest.java +++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/RecursionWithCorrectTerminationConditionManualTest.java @@ -1,4 +1,4 @@ -package com.baeldung.stackoverflowerror; +package com.baeldung.exceptions.stackoverflowerror; import org.junit.Test; diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java similarity index 94% rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java index f4e2e5221a..0f1d71034d 100644 --- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java +++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/stackoverflowerror/UnintendedInfiniteRecursionManualTest.java @@ -1,4 +1,4 @@ -package com.baeldung.stackoverflowerror; +package com.baeldung.exceptions.stackoverflowerror; import org.junit.Test; diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/throwsexception/SimpleServiceUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/throwvsthrows/SimpleServiceUnitTest.java similarity index 92% rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/throwsexception/SimpleServiceUnitTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/throwvsthrows/SimpleServiceUnitTest.java index b9a658a960..87f6224217 100644 --- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/throwsexception/SimpleServiceUnitTest.java +++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/throwvsthrows/SimpleServiceUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.throwsexception; +package com.baeldung.exceptions.throwvsthrows; import org.junit.jupiter.api.Test; diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java deleted file mode 100644 index 32879aed0c..0000000000 --- a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.baeldung.java8; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.Date; -import java.util.Scanner; - -import org.junit.Assert; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class JavaTryWithResourcesLongRunningUnitTest { - - private static final Logger LOG = LoggerFactory.getLogger(JavaTryWithResourcesLongRunningUnitTest.class); - - private static final String TEST_STRING_HELLO_WORLD = "Hello World"; - private Date resource1Date, resource2Date; - - // tests - - /* Example for using Try_with_resources */ - @Test - public void whenWritingToStringWriter_thenCorrectlyWritten() { - final StringWriter sw = new StringWriter(); - try (PrintWriter pw = new PrintWriter(sw, true)) { - pw.print(TEST_STRING_HELLO_WORLD); - } - - Assert.assertEquals(sw.getBuffer() - .toString(), TEST_STRING_HELLO_WORLD); - } - - /* Example for using multiple resources */ - @Test - public void givenStringToScanner_whenWritingToStringWriter_thenCorrectlyWritten() { - - final StringWriter sw = new StringWriter(); - try (Scanner sc = new Scanner(TEST_STRING_HELLO_WORLD); PrintWriter pw = new PrintWriter(sw, true)) { - while (sc.hasNext()) { - pw.print(sc.nextLine()); - } - } - - Assert.assertEquals(sw.getBuffer() - .toString(), TEST_STRING_HELLO_WORLD); - } - - /* Example to show order in which the resources are closed */ - @Test - public void whenFirstAutoClosableResourceIsinitializedFirst_thenFirstAutoClosableResourceIsReleasedFirst() throws Exception { - try (AutoCloseableResourcesFirst af = new AutoCloseableResourcesFirst(); AutoCloseableResourcesSecond as = new AutoCloseableResourcesSecond()) { - af.doSomething(); - as.doSomething(); - } - Assert.assertTrue(resource1Date.after(resource2Date)); - } - - class AutoCloseableResourcesFirst implements AutoCloseable { - public AutoCloseableResourcesFirst() { - LOG.debug("Constructor -> AutoCloseableResources_First"); - } - - public void doSomething() { - LOG.debug("Something -> AutoCloseableResources_First"); - } - - @Override - public void close() throws Exception { - LOG.debug("Closed AutoCloseableResources_First"); - resource1Date = new Date(); - } - } - - class AutoCloseableResourcesSecond implements AutoCloseable { - public AutoCloseableResourcesSecond() { - LOG.debug("Constructor -> AutoCloseableResources_Second"); - } - - public void doSomething() { - LOG.debug("Something -> AutoCloseableResources_Second"); - } - - @Override - public void close() throws Exception { - LOG.debug("Closed AutoCloseableResources_Second"); - resource2Date = new Date(); - Thread.sleep(10000); - } - } - -} \ No newline at end of file diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/optional/PersonRepositoryUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/optional/PersonRepositoryUnitTest.java deleted file mode 100644 index 4efa625ccd..0000000000 --- a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/optional/PersonRepositoryUnitTest.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.baeldung.optional; - -import org.junit.Test; - -import java.util.Optional; - -import static org.junit.jupiter.api.Assertions.assertAll; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; - -public class PersonRepositoryUnitTest { - - PersonRepository personRepository = new PersonRepository(); - - @Test - public void whenIdIsNull_thenExceptionIsThrown() { - assertThrows(IllegalArgumentException.class, - () -> - Optional - .ofNullable(personRepository.findNameById(null)) - .orElseThrow(IllegalArgumentException::new)); - } - - @Test - public void whenIdIsNonNull_thenNoExceptionIsThrown() { - assertAll( - () -> - Optional - .ofNullable(personRepository.findNameById("id")) - .orElseThrow(RuntimeException::new)); - } - - @Test - public void whenIdNonNull_thenReturnsNameUpperCase() { - String name = Optional - .ofNullable(personRepository.findNameById("id")) - .map(String::toUpperCase) - .orElseThrow(RuntimeException::new); - - assertEquals("NAME", name); - } - -} \ No newline at end of file diff --git a/core-java-modules/core-java-lang/src/test/resources/correctFileNameWithoutProperExtension b/core-java-modules/core-java-exceptions/src/test/resources/correctFileNameWithoutProperExtension similarity index 100% rename from core-java-modules/core-java-lang/src/test/resources/correctFileNameWithoutProperExtension rename to core-java-modules/core-java-exceptions/src/test/resources/correctFileNameWithoutProperExtension diff --git a/core-java-modules/core-java-io-2/src/test/java/com/baeldung/file/FileClassDemoUnitTest.java b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/file/FileClassDemoUnitTest.java new file mode 100644 index 0000000000..b60a12d208 --- /dev/null +++ b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/file/FileClassDemoUnitTest.java @@ -0,0 +1,179 @@ +package com.baeldung.file; + +import org.junit.Test; + +import java.io.*; +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.*; + +public class FileClassDemoUnitTest { + + @Test + public void givenDirectoryCreated_whenMkdirIsInvoked_thenDirectoryIsDeleted() { + File directory = new File("testDirectory"); + if (!directory.isDirectory() || !directory.exists()) { + directory.mkdir(); + } + + assertTrue(directory.delete()); + } + + @Test + public void givenFileCreated_whenCreateNewFileIsInvoked_thenFileIsDeleted() throws IOException { + File file = new File("testFile.txt"); + if (!file.isFile() || !file.exists()) { + file.createNewFile(); + } + + assertTrue(file.delete()); + } + + + @Test + public void givenFileCreated_whenCreateNewFileInvoked_thenMetadataIsAsExpected() throws IOException { + + // different Operating systems have different separator characters + String separatorCharacter = System.getProperty("file.separator"); + + File parentDirectory = makeDirectory("filesDirectory"); + + File childFile = new File(parentDirectory, "file1.txt"); + childFile.createNewFile(); + + assertTrue(childFile.getName().equals("file1.txt")); + assertTrue(childFile.getParentFile().getName().equals(parentDirectory.getName())); + assertTrue(childFile.getPath().equals(parentDirectory.getPath() + separatorCharacter + "file1.txt")); + + removeDirectory(parentDirectory); + } + + + @Test(expected = FileNotFoundException.class) + public void givenReadOnlyFileCreated_whenCreateNewFileInvoked_thenFileCannotBeWrittenTo() throws IOException { + File parentDirectory = makeDirectory("filesDirectory"); + + File childFile = new File(parentDirectory, "file1.txt"); + childFile.createNewFile(); + + childFile.setWritable(false); + + FileOutputStream fos = new FileOutputStream(childFile); + fos.write("Hello World".getBytes()); // write operation + fos.flush(); + fos.close(); + + removeDirectory(parentDirectory); + } + + @Test(expected = FileNotFoundException.class) + public void givenWriteOnlyFileCreated_whenCreateNewFileInvoked_thenFileCannotBeReadFrom() throws IOException { + File parentDirectory = makeDirectory("filesDirectory"); + + File childFile = new File(parentDirectory, "file1.txt"); + childFile.createNewFile(); + + childFile.setReadable(false); + + FileInputStream fis = new FileInputStream(childFile); + fis.read(); // read operation + fis.close(); + + removeDirectory(parentDirectory); + } + + @Test + public void givenFilesCreatedInDirectory_whenCreateNewFileInvoked_thenTheyCanBeListedAsExpected() throws IOException { + File directory = makeDirectory("filtersDirectory"); + + File csvFile = new File(directory, "csvFile.csv"); + csvFile.createNewFile(); + + File txtFile = new File(directory, "txtFile.txt"); + txtFile.createNewFile(); + + //normal listing + assertEquals(2, directory.list().length); + + //filtered listing + FilenameFilter csvFilter = (dir, ext) -> ext.endsWith(".csv"); + assertEquals(1, directory.list(csvFilter).length); + + removeDirectory(directory); + } + + @Test + public void givenDirectoryIsCreated_whenMkdirInvoked_thenDirectoryCanBeRenamed() { + + File source = makeDirectory("source"); + File destination = makeDirectory("destination"); + source.renameTo(destination); + + assertFalse(source.isDirectory()); + assertTrue(destination.isDirectory()); + + removeDirectory(destination); + } + + @Test + public void givenDataIsWrittenToFile_whenWriteIsInvoked_thenFreeSpaceOnSystemDecreases() throws IOException { + + String name = System.getProperty("user.home") + System.getProperty("file.separator") + "test"; + File testDir = makeDirectory(name); + File sample = new File(testDir, "sample.txt"); + + long freeSpaceBeforeWrite = testDir.getFreeSpace(); + writeSampleDataToFile(sample); + + long freeSpaceAfterWrite = testDir.getFreeSpace(); + assertTrue(freeSpaceAfterWrite < freeSpaceBeforeWrite); + + removeDirectory(testDir); + } + + private static File makeDirectory(String directoryName) { + File directory = new File(directoryName); + directory.mkdir(); + if (directory.isDirectory()) { + return directory; + } + throw new RuntimeException("Directory not created for " + directoryName); + } + + private static void removeDirectory(File directory) { + // make sure you don't delete your home directory here + if (directory.getPath().equals(System.getProperty("user.home"))) { + return; + } + + // remove directory and its files from system + if (directory != null && directory.exists()) { + // delete all files inside the directory + File[] filesInDirectory = directory.listFiles(); + if (filesInDirectory != null) { + List files = Arrays.asList(filesInDirectory); + files.forEach(f -> deleteFile(f)); + } + + // finally delete the directory itself + deleteFile(directory); + } + } + + private static void deleteFile(File fileToDelete) { + if (fileToDelete != null && fileToDelete.exists()) { + fileToDelete.delete(); + } + } + + private static void writeSampleDataToFile(File sample) throws IOException { + //write sample text to file + try (FileOutputStream out = new FileOutputStream(sample)) { + for (int i = 1; i <= 100000; i++) { + String sampleText = "Sample line number " + i + "\n"; + out.write(sampleText.getBytes()); + } + } + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-io-2/src/test/java/com/baeldung/filewriter/FileWriterExampleUnitTest.java b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/filewriter/FileWriterExampleUnitTest.java new file mode 100644 index 0000000000..f94a73b023 --- /dev/null +++ b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/filewriter/FileWriterExampleUnitTest.java @@ -0,0 +1,47 @@ +package com.baeldung.filewriter; + +import java.io.FileWriter; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Test; + +public class FileWriterExampleUnitTest { + + @After + public void tearDown() throws IOException { + Files.delete(Path.of("src/test/resources/FileWriterTest.txt")); + } + + @Test + public void testWriteString() throws IOException { + try (FileWriter fileWriter = new FileWriter("src/test/resources/FileWriterTest.txt")) { + fileWriter.write("Hello Folks!"); + } + Assert.assertEquals("Hello Folks!", new String(Files.readAllBytes(Path.of("src/test/resources/FileWriterTest.txt")))); + } + + @Test + public void testAppendString() throws IOException { + try (FileWriter fileWriter = new FileWriter("src/test/resources/FileWriterTest.txt")) { + fileWriter.write("Hello Folks!"); + } + // using another try with resources to reopen the file in append mode + try (FileWriter fileWriter = new FileWriter("src/test/resources/FileWriterTest.txt", true)) { + fileWriter.write("Hello Folks Again!"); + } + + Assert.assertEquals("Hello Folks!" + "Hello Folks Again!", new String(Files.readAllBytes(Path.of("src/test/resources/FileWriterTest.txt")))); + } + + @Test + public void testWriteCharArray() throws IOException { + try (FileWriter fileWriter = new FileWriter("src/test/resources/FileWriterTest.txt")) { + fileWriter.write("Hello Folks!".toCharArray()); + } + Assert.assertEquals("Hello Folks!", new String(Files.readAllBytes(Path.of("src/test/resources/FileWriterTest.txt")))); + } +} diff --git a/core-java-modules/core-java-io/README.md b/core-java-modules/core-java-io/README.md index 6737ad6eb9..023d7d64b5 100644 --- a/core-java-modules/core-java-io/README.md +++ b/core-java-modules/core-java-io/README.md @@ -1,6 +1,6 @@ -========= +## Core Java IO -## Core Java IO Cookbooks and Examples +This module contains articles about core Java input and output (IO) ### Relevant Articles: - [How to Read a Large File Efficiently with Java](http://www.baeldung.com/java-read-lines-large-file) @@ -41,3 +41,4 @@ - [List Files in a Directory in Java](https://www.baeldung.com/java-list-directory-files) - [Java InputStream to Byte Array and ByteBuffer](https://www.baeldung.com/convert-input-stream-to-array-of-bytes) - [Introduction to the Java NIO Selector](https://www.baeldung.com/java-nio-selector) +- [[More -->]](/core-java-modules/core-java-io-2) diff --git a/core-java-modules/core-java-lambdas/src/test/java/com/baeldung/java8/lambda/methodreference/MethodReferenceUnitTest.java b/core-java-modules/core-java-lambdas/src/test/java/com/baeldung/java8/lambda/methodreference/MethodReferenceUnitTest.java index 835815aecd..957294153b 100644 --- a/core-java-modules/core-java-lambdas/src/test/java/com/baeldung/java8/lambda/methodreference/MethodReferenceUnitTest.java +++ b/core-java-modules/core-java-lambdas/src/test/java/com/baeldung/java8/lambda/methodreference/MethodReferenceUnitTest.java @@ -35,9 +35,9 @@ public class MethodReferenceUnitTest { public void referenceToInstanceMethodOfArbitratyObjectOfParticularType() { List numbers = Arrays.asList(5, 3, 50, 24, 40, 2, 9, 18); numbers.stream() - .sorted((a, b) -> Integer.compare(a, b)); + .sorted((a, b) -> a.compareTo(b)); numbers.stream() - .sorted(Integer::compare); + .sorted(Integer::compareTo); } @Test diff --git a/core-java-modules/core-java-lang-2/README.md b/core-java-modules/core-java-lang-2/README.md index d925e81d87..9904e59035 100644 --- a/core-java-modules/core-java-lang-2/README.md +++ b/core-java-modules/core-java-lang-2/README.md @@ -1,6 +1,7 @@ -========= +## Core Java Lang (Part 2) -## Core Java Lang Cookbooks and Examples +This module contains articles about core features in the Java language ### Relevant Articles: -- [Java Primitives versus Objects](https://www.baeldung.com/java-primitives-vs-objects) \ No newline at end of file +- [Java Primitives versus Objects](https://www.baeldung.com/java-primitives-vs-objects) +- [[<-- Prev]](/core-java-modules/core-java-lang) \ No newline at end of file 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 096e4ee002..e2c30bbb40 100644 --- a/core-java-modules/core-java-lang-oop-2/README.md +++ b/core-java-modules/core-java-lang-oop-2/README.md @@ -1,16 +1,17 @@ -========= +## Core Java Lang OOP (Part 2) -## Core Java Lang OOP 2 Cookbooks and Examples +This module contains articles about Object-oriented programming (OOP) in Java ### Relevant Articles: - [Generic Constructors in Java](https://www.baeldung.com/java-generic-constructors) - [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 +- [Composition, Aggregation, and Association in Java](https://www.baeldung.com/java-composition-aggregation-association) +- [Static and Default Methods in Interfaces in Java](https://www.baeldung.com/java-static-default-methods) +- [[<-- Prev]](/core-java-modules/core-java-lang-oop)[[More -->]](/core-java-modules/core-java-lang-oop-3) \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-3/README.md b/core-java-modules/core-java-lang-oop-3/README.md index 15876d124f..c3a32124b5 100644 --- a/core-java-modules/core-java-lang-oop-3/README.md +++ b/core-java-modules/core-java-lang-oop-3/README.md @@ -1,6 +1,6 @@ -========= +## Core Java Lang OOP (Part 3) -## Core Java Lang OOP 3 Cookbooks and Examples +This module contains articles about Object-oriented programming (OOP) in Java ### Relevant Articles: - [Pass-By-Value as a Parameter Passing Mechanism in Java](https://www.baeldung.com/java-pass-by-value-or-pass-by-reference) @@ -8,4 +8,5 @@ - [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 +- [Composition, Aggregation and Association in Java](https://www.baeldung.com/java-composition-aggregation-association) +- [[<-- Prev]](/core-java-modules/core-java-lang-oop-2) \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop/README.md b/core-java-modules/core-java-lang-oop/README.md index 2e7fa4d689..0fb044138d 100644 --- a/core-java-modules/core-java-lang-oop/README.md +++ b/core-java-modules/core-java-lang-oop/README.md @@ -1,6 +1,6 @@ -========= +## Core Java Lang OOP -## Core Java Lang OOP Cookbooks and Examples +This module contains articles about Object-oriented programming (OOP) in Java ### Relevant Articles: - [Guide to hashCode() in Java](https://www.baeldung.com/java-hashcode) @@ -13,3 +13,4 @@ - [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) +- [[More -->]](/core-java-modules/core-java-lang-oop-2) diff --git a/core-java-modules/core-java-lang-operators/README.md b/core-java-modules/core-java-lang-operators/README.md new file mode 100644 index 0000000000..f9fa49ee0d --- /dev/null +++ b/core-java-modules/core-java-lang-operators/README.md @@ -0,0 +1,7 @@ +## Relevant Articles: +- [Guide to the Diamond Operator in Java](https://www.baeldung.com/java-diamond-operator) +- [Ternary Operator In Java](https://www.baeldung.com/java-ternary-operator) +- [The Modulo Operator in Java](https://www.baeldung.com/modulo-java) +- [Java instanceof Operator](https://www.baeldung.com/java-instanceof) +- [A Guide to Increment and Decrement Unary Operators in Java](https://www.baeldung.com/java-unary-operators) +- [Java Compound Operators](https://www.baeldung.com/java-compound-operators) diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/compoundoperators/CompoundOperatorsUnitTest.java b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/compoundoperators/CompoundOperatorsUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/compoundoperators/CompoundOperatorsUnitTest.java rename to core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/compoundoperators/CompoundOperatorsUnitTest.java diff --git a/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/diamond/Car.java b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/diamondoperator/Car.java similarity index 62% rename from core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/diamond/Car.java rename to core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/diamondoperator/Car.java index a680c4e670..7fa52a5eb1 100644 --- a/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/diamond/Car.java +++ b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/diamondoperator/Car.java @@ -1,4 +1,4 @@ -package com.baeldung.java.diamond; +package com.baeldung.diamondoperator; public class Car implements Vehicle { diff --git a/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/diamond/DiamondOperatorUnitTest.java b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/diamondoperator/DiamondOperatorUnitTest.java similarity index 87% rename from core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/diamond/DiamondOperatorUnitTest.java rename to core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/diamondoperator/DiamondOperatorUnitTest.java index ee5f639926..b50119b3c6 100644 --- a/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/diamond/DiamondOperatorUnitTest.java +++ b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/diamondoperator/DiamondOperatorUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.java.diamond; +package com.baeldung.diamondoperator; import static org.junit.Assert.assertNotNull; diff --git a/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/diamond/Diesel.java b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/diamondoperator/Diesel.java similarity index 76% rename from core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/diamond/Diesel.java rename to core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/diamondoperator/Diesel.java index 90eb7d9340..0b92d11318 100644 --- a/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/diamond/Diesel.java +++ b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/diamondoperator/Diesel.java @@ -1,4 +1,4 @@ -package com.baeldung.java.diamond; +package com.baeldung.diamondoperator; public class Diesel implements Engine { diff --git a/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/diamond/Engine.java b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/diamondoperator/Engine.java similarity index 54% rename from core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/diamond/Engine.java rename to core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/diamondoperator/Engine.java index 746baf3254..0afd48114a 100644 --- a/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/diamond/Engine.java +++ b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/diamondoperator/Engine.java @@ -1,4 +1,4 @@ -package com.baeldung.java.diamond; +package com.baeldung.diamondoperator; public interface Engine { diff --git a/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/diamond/Vehicle.java b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/diamondoperator/Vehicle.java similarity index 56% rename from core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/diamond/Vehicle.java rename to core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/diamondoperator/Vehicle.java index 8395cdd970..89a5dfefef 100644 --- a/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/diamond/Vehicle.java +++ b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/diamondoperator/Vehicle.java @@ -1,4 +1,4 @@ -package com.baeldung.java.diamond; +package com.baeldung.diamondoperator; public interface Vehicle { diff --git a/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/keyword/test/InstanceOfUnitTest.java b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/keyword/InstanceOfUnitTest.java similarity index 97% rename from core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/keyword/test/InstanceOfUnitTest.java rename to core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/keyword/InstanceOfUnitTest.java index 6966fa3944..0e082b69d3 100644 --- a/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/keyword/test/InstanceOfUnitTest.java +++ b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/keyword/InstanceOfUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.keyword.test; +package com.baeldung.keyword; import org.junit.Assert; import org.junit.jupiter.api.Test; diff --git a/core-java-modules/core-java-lang-syntax-2/README.md b/core-java-modules/core-java-lang-syntax-2/README.md index 4cef971f75..a3b11865af 100644 --- a/core-java-modules/core-java-lang-syntax-2/README.md +++ b/core-java-modules/core-java-lang-syntax-2/README.md @@ -1,6 +1,14 @@ -========= +## Core Java Lang Syntax -## Core Java Lang Syntax Cookbooks and Examples +This module contains articles about Java syntax ### Relevant Articles: + - [Java ‘private’ Access Modifier](https://www.baeldung.com/java-private-keyword) +- [Guide to Java Packages](https://www.baeldung.com/java-packages) +- [If-Else Statement in Java](https://www.baeldung.com/java-if-else) +- [Control Structures in Java](https://www.baeldung.com/java-control-structures) +- [Java Double Brace Initialization](https://www.baeldung.com/java-double-brace-initialization) +- [The Java Native Keyword and Methods](https://www.baeldung.com/java-native) +- [Variable Scope in Java](https://www.baeldung.com/java-variable-scope) +- [[<-- Prev]](/core-java-modules/core-java-lang-syntax) diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/controlstructures/ConditionalBranches.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/controlstructures/ConditionalBranches.java similarity index 97% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/controlstructures/ConditionalBranches.java rename to core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/controlstructures/ConditionalBranches.java index bace609699..e15386f048 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/controlstructures/ConditionalBranches.java +++ b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/controlstructures/ConditionalBranches.java @@ -1,4 +1,4 @@ -package com.baeldung.controlstructures; +package com.baeldung.core.controlstructures; public class ConditionalBranches { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/controlstructures/Loops.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/controlstructures/Loops.java similarity index 99% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/controlstructures/Loops.java rename to core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/controlstructures/Loops.java index bc4515bfc7..9d73127cae 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/controlstructures/Loops.java +++ b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/controlstructures/Loops.java @@ -1,4 +1,4 @@ -package com.baeldung.controlstructures; +package com.baeldung.core.controlstructures; public class Loops { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/nativekeyword/DateTimeUtils.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/nativekeyword/DateTimeUtils.java similarity index 78% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/nativekeyword/DateTimeUtils.java rename to core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/nativekeyword/DateTimeUtils.java index 0762b0eb8a..1d101719ca 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/nativekeyword/DateTimeUtils.java +++ b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/nativekeyword/DateTimeUtils.java @@ -1,4 +1,4 @@ -package com.baeldung.nativekeyword; +package com.baeldung.core.nativekeyword; public class DateTimeUtils { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/nativekeyword/NativeMainApp.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/nativekeyword/NativeMainApp.java similarity index 74% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/nativekeyword/NativeMainApp.java rename to core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/nativekeyword/NativeMainApp.java index 76fe548ed3..4bf6b88840 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/nativekeyword/NativeMainApp.java +++ b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/nativekeyword/NativeMainApp.java @@ -1,6 +1,4 @@ -package com.baeldung.nativekeyword; - -import com.baeldung.nativekeyword.DateTimeUtils; +package com.baeldung.core.nativekeyword; public class NativeMainApp { public static void main(String[] args) { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/packages/TodoApp.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/packages/TodoApp.java similarity index 86% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/packages/TodoApp.java rename to core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/packages/TodoApp.java index 0f4a56f708..d8283f6b0d 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/packages/TodoApp.java +++ b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/packages/TodoApp.java @@ -1,9 +1,9 @@ -package com.baeldung.packages; +package com.baeldung.core.packages; + +import com.baeldung.core.packages.domain.TodoItem; import java.time.LocalDate; -import com.baeldung.packages.domain.TodoItem; - public class TodoApp { public static void main(String[] args) { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/packages/TodoList.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/packages/TodoList.java similarity index 84% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/packages/TodoList.java rename to core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/packages/TodoList.java index 6ed6cd4ec1..f9f6ac3aca 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/packages/TodoList.java +++ b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/packages/TodoList.java @@ -1,10 +1,10 @@ -package com.baeldung.packages; +package com.baeldung.core.packages; + +import com.baeldung.core.packages.domain.TodoItem; import java.util.ArrayList; import java.util.List; -import com.baeldung.packages.domain.TodoItem; - public class TodoList { private List todoItems; diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/packages/domain/TodoItem.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/packages/domain/TodoItem.java similarity index 94% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/packages/domain/TodoItem.java rename to core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/packages/domain/TodoItem.java index 972e574a7f..195f763974 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/packages/domain/TodoItem.java +++ b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/packages/domain/TodoItem.java @@ -1,4 +1,4 @@ -package com.baeldung.packages.domain; +package com.baeldung.core.packages.domain; import java.time.LocalDate; diff --git a/core-java-modules/core-java-lang-syntax-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/privatemodifier/Employee.java similarity index 96% rename from core-java-modules/core-java-lang-syntax-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/privatemodifier/Employee.java index 6ec68d6ebb..4598400e93 100644 --- a/core-java-modules/core-java-lang-syntax-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/privatemodifier/Employee.java @@ -1,4 +1,4 @@ -package com.baeldung.core.modifiers; +package com.baeldung.core.privatemodifier; public class Employee { diff --git a/core-java-modules/core-java-lang-syntax-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/privatemodifier/ExampleClass.java similarity index 84% rename from core-java-modules/core-java-lang-syntax-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/privatemodifier/ExampleClass.java index 41f0b7a690..8659b4ad9c 100644 --- a/core-java-modules/core-java-lang-syntax-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/privatemodifier/ExampleClass.java @@ -1,4 +1,4 @@ -package com.baeldung.core.modifiers; +package com.baeldung.core.privatemodifier; public class ExampleClass { diff --git a/core-java-modules/core-java-lang-syntax-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/privatemodifier/PublicOuterClass.java similarity index 90% rename from core-java-modules/core-java-lang-syntax-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/privatemodifier/PublicOuterClass.java index 329ebf3bb6..8a9e8a8eb3 100644 --- a/core-java-modules/core-java-lang-syntax-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/privatemodifier/PublicOuterClass.java @@ -1,4 +1,4 @@ -package com.baeldung.core.modifiers; +package com.baeldung.core.privatemodifier; public class PublicOuterClass { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/scope/BracketScopeExample.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/scope/BracketScopeExample.java similarity index 89% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/scope/BracketScopeExample.java rename to core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/scope/BracketScopeExample.java index 8deec35c16..99feeb060d 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/scope/BracketScopeExample.java +++ b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/scope/BracketScopeExample.java @@ -1,4 +1,4 @@ -package com.baeldung.scope; +package com.baeldung.core.scope; public class BracketScopeExample { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/scope/ClassScopeExample.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/scope/ClassScopeExample.java similarity index 86% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/scope/ClassScopeExample.java rename to core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/scope/ClassScopeExample.java index c81fcc9550..8bcfee44f2 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/scope/ClassScopeExample.java +++ b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/scope/ClassScopeExample.java @@ -1,4 +1,4 @@ -package com.baeldung.scope; +package com.baeldung.core.scope; public class ClassScopeExample { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/scope/LoopScopeExample.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/scope/LoopScopeExample.java similarity index 92% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/scope/LoopScopeExample.java rename to core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/scope/LoopScopeExample.java index be41252623..8067085404 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/scope/LoopScopeExample.java +++ b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/scope/LoopScopeExample.java @@ -1,4 +1,4 @@ -package com.baeldung.scope; +package com.baeldung.core.scope; import java.util.Arrays; import java.util.List; diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/scope/MethodScopeExample.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/scope/MethodScopeExample.java similarity index 87% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/scope/MethodScopeExample.java rename to core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/scope/MethodScopeExample.java index 63a6a25271..86b2021c6d 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/scope/MethodScopeExample.java +++ b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/scope/MethodScopeExample.java @@ -1,4 +1,4 @@ -package com.baeldung.scope; +package com.baeldung.core.scope; public class MethodScopeExample { diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/scope/NestedScopesExample.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/scope/NestedScopesExample.java similarity index 86% rename from core-java-modules/core-java-lang/src/main/java/com/baeldung/scope/NestedScopesExample.java rename to core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/scope/NestedScopesExample.java index c3c5bec221..51351d237c 100644 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/scope/NestedScopesExample.java +++ b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/scope/NestedScopesExample.java @@ -1,4 +1,4 @@ -package com.baeldung.scope; +package com.baeldung.core.scope; public class NestedScopesExample { diff --git a/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/doublebrace/DoubleBraceUnitTest.java b/core-java-modules/core-java-lang-syntax-2/src/test/java/com/baeldung/core/doublebrace/DoubleBraceUnitTest.java similarity index 96% rename from core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/doublebrace/DoubleBraceUnitTest.java rename to core-java-modules/core-java-lang-syntax-2/src/test/java/com/baeldung/core/doublebrace/DoubleBraceUnitTest.java index b03b01d074..fe47dd4c26 100644 --- a/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/java/doublebrace/DoubleBraceUnitTest.java +++ b/core-java-modules/core-java-lang-syntax-2/src/test/java/com/baeldung/core/doublebrace/DoubleBraceUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.java.doublebrace; +package com.baeldung.core.doublebrace; import org.junit.Test; diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/nativekeyword/DateTimeUtilsManualTest.java b/core-java-modules/core-java-lang-syntax-2/src/test/java/com/baeldung/core/nativekeyword/DateTimeUtilsManualTest.java similarity index 95% rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/nativekeyword/DateTimeUtilsManualTest.java rename to core-java-modules/core-java-lang-syntax-2/src/test/java/com/baeldung/core/nativekeyword/DateTimeUtilsManualTest.java index ac27c11c68..1c70acc483 100644 --- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/nativekeyword/DateTimeUtilsManualTest.java +++ b/core-java-modules/core-java-lang-syntax-2/src/test/java/com/baeldung/core/nativekeyword/DateTimeUtilsManualTest.java @@ -1,11 +1,11 @@ -package com.baeldung.nativekeyword; - -import static org.junit.Assert.assertNotNull; +package com.baeldung.core.nativekeyword; import org.junit.BeforeClass; import org.junit.Test; import org.slf4j.Logger; +import static org.junit.Assert.assertNotNull; + public class DateTimeUtilsManualTest { private static final Logger LOG = org.slf4j.LoggerFactory.getLogger(DateTimeUtilsManualTest.class); diff --git a/core-java-modules/core-java-lang/src/test/java/com/baeldung/packages/PackagesUnitTest.java b/core-java-modules/core-java-lang-syntax-2/src/test/java/com/baeldung/core/packages/PackagesUnitTest.java similarity index 85% rename from core-java-modules/core-java-lang/src/test/java/com/baeldung/packages/PackagesUnitTest.java rename to core-java-modules/core-java-lang-syntax-2/src/test/java/com/baeldung/core/packages/PackagesUnitTest.java index 212fb7b3c7..b1237e9948 100644 --- a/core-java-modules/core-java-lang/src/test/java/com/baeldung/packages/PackagesUnitTest.java +++ b/core-java-modules/core-java-lang-syntax-2/src/test/java/com/baeldung/core/packages/PackagesUnitTest.java @@ -1,12 +1,11 @@ -package com.baeldung.packages; +package com.baeldung.core.packages; -import static org.junit.Assert.assertEquals; +import com.baeldung.core.packages.domain.TodoItem; +import org.junit.Test; import java.time.LocalDate; -import org.junit.Test; - -import com.baeldung.packages.domain.TodoItem; +import static org.junit.Assert.assertEquals; public class PackagesUnitTest { diff --git a/core-java-modules/core-java-lang-syntax/README.md b/core-java-modules/core-java-lang-syntax/README.md index 3293e9b23d..25f5c63dbc 100644 --- a/core-java-modules/core-java-lang-syntax/README.md +++ b/core-java-modules/core-java-lang-syntax/README.md @@ -1,21 +1,16 @@ -========= +## Core Java Lang Syntax -## Core Java Lang Syntax Cookbooks and Examples +This module contains articles about Java syntax ### Relevant Articles: -- [The Basics of Java Generics](http://www.baeldung.com/java-generics) -- [Java Primitive Conversions](http://www.baeldung.com/java-primitive-conversions) -- [Java Double Brace Initialization](http://www.baeldung.com/java-double-brace-initialization) -- [Guide to the Diamond Operator in Java](http://www.baeldung.com/java-diamond-operator) -- [The Java continue and break Keywords](http://www.baeldung.com/java-continue-and-break) -- [A Guide to Creating Objects in Java](http://www.baeldung.com/java-initialization) -- [A Guide to Java Loops](http://www.baeldung.com/java-loops) -- [Varargs in Java](http://www.baeldung.com/java-varargs) -- [A Guide to Java Enums](http://www.baeldung.com/a-guide-to-java-enums) -- [Infinite Loops in Java](http://www.baeldung.com/infinite-loops-java) -- [Quick Guide to java.lang.System](http://www.baeldung.com/java-lang-system) +- [The Basics of Java Generics](https://www.baeldung.com/java-generics) +- [Java Primitive Conversions](https://www.baeldung.com/java-primitive-conversions) +- [The Java continue and break Keywords](https://www.baeldung.com/java-continue-and-break) +- [A Guide to Creating Objects in Java](https://www.baeldung.com/java-initialization) +- [A Guide to Java Loops](https://www.baeldung.com/java-loops) +- [Varargs in Java](https://www.baeldung.com/java-varargs) +- [A Guide to Java Enums](https://www.baeldung.com/a-guide-to-java-enums) +- [Infinite Loops in Java](https://www.baeldung.com/infinite-loops-java) - [Java Switch Statement](https://www.baeldung.com/java-switch) -- [The Modulo Operator in Java](https://www.baeldung.com/modulo-java) -- [Ternary Operator In Java](https://www.baeldung.com/java-ternary-operator) -- [Java instanceof Operator](https://www.baeldung.com/java-instanceof) - [Breaking Out of Nested Loops](https://www.baeldung.com/java-breaking-out-nested-loop) +- [[More -->]](/core-java-modules/core-java-lang-syntax-2) diff --git a/core-java-modules/core-java-lang-syntax/src/test/java/com/baeldung/loops/WhenUsingLoops.java b/core-java-modules/core-java-lang-syntax/src/test/java/com/baeldung/loops/LoopsUnitTest.java similarity index 98% rename from core-java-modules/core-java-lang-syntax/src/test/java/com/baeldung/loops/WhenUsingLoops.java rename to core-java-modules/core-java-lang-syntax/src/test/java/com/baeldung/loops/LoopsUnitTest.java index f82f9ddaa7..5a8b116a2c 100644 --- a/core-java-modules/core-java-lang-syntax/src/test/java/com/baeldung/loops/WhenUsingLoops.java +++ b/core-java-modules/core-java-lang-syntax/src/test/java/com/baeldung/loops/LoopsUnitTest.java @@ -12,7 +12,7 @@ import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; -public class WhenUsingLoops { +public class LoopsUnitTest { private LoopsInJava loops = new LoopsInJava(); private static List list = new ArrayList<>(); diff --git a/core-java-modules/core-java-lang/README.md b/core-java-modules/core-java-lang/README.md index f3b6d3d8e5..3c33409e7e 100644 --- a/core-java-modules/core-java-lang/README.md +++ b/core-java-modules/core-java-lang/README.md @@ -1,40 +1,24 @@ -========= +## Core Java Lang -## Core Java Lang Cookbooks and Examples +This module contains articles about core features in the Java language ### Relevant Articles: -- [Generate equals() and hashCode() with Eclipse](http://www.baeldung.com/java-eclipse-equals-and-hashcode) -- [Chained Exceptions in Java](http://www.baeldung.com/java-chained-exceptions) -- [Iterating Over Enum Values in Java](http://www.baeldung.com/java-enum-iteration) -- [Java Double Brace Initialization](http://www.baeldung.com/java-double-brace-initialization) -- [Guide to the Diamond Operator in Java](http://www.baeldung.com/java-diamond-operator) -- [Comparator and Comparable in Java](http://www.baeldung.com/java-comparator-comparable) -- [The Java continue and break Keywords](http://www.baeldung.com/java-continue-and-break) -- [Nested Classes in Java](http://www.baeldung.com/java-nested-classes) -- [A Guide to Inner Interfaces in Java](http://www.baeldung.com/java-inner-interfaces) -- [Recursion In Java](http://www.baeldung.com/java-recursion) -- [A Guide to the finalize Method in Java](http://www.baeldung.com/java-finalize) -- [Infinite Loops in Java](http://www.baeldung.com/infinite-loops-java) -- [Quick Guide to java.lang.System](http://www.baeldung.com/java-lang-system) -- [Using Java Assertions](http://www.baeldung.com/java-assert) -- [ClassNotFoundException vs NoClassDefFoundError](http://www.baeldung.com/java-classnotfoundexception-and-noclassdeffounderror) -- [The StackOverflowError in Java](http://www.baeldung.com/java-stack-overflow-error) -- [Create a Custom Exception in Java](http://www.baeldung.com/java-new-custom-exception) -- [Exception Handling in Java](http://www.baeldung.com/java-exceptions) -- [Differences Between Final, Finally and Finalize in Java](https://www.baeldung.com/java-final-finally-finalize) +- [Generate equals() and hashCode() with Eclipse](https://www.baeldung.com/java-eclipse-equals-and-hashcode) +- [Iterating Over Enum Values in Java](https://www.baeldung.com/java-enum-iteration) +- [Comparator and Comparable in Java](https://www.baeldung.com/java-comparator-comparable) +- [Nested Classes in Java](https://www.baeldung.com/java-nested-classes) +- [A Guide to Inner Interfaces in Java](https://www.baeldung.com/java-inner-interfaces) +- [Recursion In Java](https://www.baeldung.com/java-recursion) +- [A Guide to the finalize Method in Java](https://www.baeldung.com/java-finalize) +- [Quick Guide to java.lang.System](https://www.baeldung.com/java-lang-system) +- [Using Java Assertions](https://www.baeldung.com/java-assert) - [Static and Dynamic Binding in Java](https://www.baeldung.com/java-static-dynamic-binding) -- [Difference Between Throw and Throws in Java](https://www.baeldung.com/java-throw-throws) - [Synthetic Constructs in Java](https://www.baeldung.com/java-synthetic) - [How to Separate Double into Integer and Decimal Parts](https://www.baeldung.com/java-separate-double-into-integer-decimal-parts) -- [“Sneaky Throws” in Java](http://www.baeldung.com/java-sneaky-throws) - [Retrieving a Class Name in Java](https://www.baeldung.com/java-class-name) -- [Java Compound Operators](https://www.baeldung.com/java-compound-operators) -- [Guide to Java Packages](https://www.baeldung.com/java-packages) -- [The Java Native Keyword and Methods](https://www.baeldung.com/java-native) -- [If-Else Statement in Java](https://www.baeldung.com/java-if-else) -- [Control Structures in Java](https://www.baeldung.com/java-control-structures) - [Java Interfaces](https://www.baeldung.com/java-interfaces) - [Attaching Values to Java Enum](https://www.baeldung.com/java-enum-values) -- [Variable Scope in Java](https://www.baeldung.com/java-variable-scope) - [Java Classes and Objects](https://www.baeldung.com/java-classes-objects) +- [A Guide to Java Enums](https://www.baeldung.com/a-guide-to-java-enums) +- [[More --> ]](/core-java-modules/core-java-lang-2) \ No newline at end of file diff --git a/core-java-modules/core-java-lang/pom.xml b/core-java-modules/core-java-lang/pom.xml index 8311636873..1a2b86f872 100644 --- a/core-java-modules/core-java-lang/pom.xml +++ b/core-java-modules/core-java-lang/pom.xml @@ -43,12 +43,6 @@ log4j-over-slf4j ${org.slf4j.version} - - org.projectlombok - lombok - ${lombok.version} - provided - org.assertj @@ -56,11 +50,6 @@ ${assertj-core.version} test - - javax.mail - mail - ${javax.mail.version} - @@ -75,9 +64,6 @@ 2.8.2 - - 1.5.0-b01 - 3.10.0 diff --git a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/MyException.java b/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/MyException.java deleted file mode 100644 index c2908b7278..0000000000 --- a/core-java-modules/core-java-lang/src/main/java/com/baeldung/exceptionhandling/MyException.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.baeldung.exceptionhandling; - -public class MyException extends Throwable { - -} diff --git a/core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/system/ChatWindow.java b/core-java-modules/core-java-lang/src/main/java/com/baeldung/system/ChatWindow.java similarity index 100% rename from core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/system/ChatWindow.java rename to core-java-modules/core-java-lang/src/main/java/com/baeldung/system/ChatWindow.java diff --git a/core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/system/DateTimeService.java b/core-java-modules/core-java-lang/src/main/java/com/baeldung/system/DateTimeService.java similarity index 100% rename from core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/system/DateTimeService.java rename to core-java-modules/core-java-lang/src/main/java/com/baeldung/system/DateTimeService.java diff --git a/core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/system/EnvironmentVariables.java b/core-java-modules/core-java-lang/src/main/java/com/baeldung/system/EnvironmentVariables.java similarity index 100% rename from core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/system/EnvironmentVariables.java rename to core-java-modules/core-java-lang/src/main/java/com/baeldung/system/EnvironmentVariables.java diff --git a/core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/system/SystemErrDemo.java b/core-java-modules/core-java-lang/src/main/java/com/baeldung/system/SystemErrDemo.java similarity index 100% rename from core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/system/SystemErrDemo.java rename to core-java-modules/core-java-lang/src/main/java/com/baeldung/system/SystemErrDemo.java diff --git a/core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/system/SystemExitDemo.java b/core-java-modules/core-java-lang/src/main/java/com/baeldung/system/SystemExitDemo.java similarity index 100% rename from core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/system/SystemExitDemo.java rename to core-java-modules/core-java-lang/src/main/java/com/baeldung/system/SystemExitDemo.java diff --git a/core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/system/SystemOutDemo.java b/core-java-modules/core-java-lang/src/main/java/com/baeldung/system/SystemOutDemo.java similarity index 100% rename from core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/system/SystemOutDemo.java rename to core-java-modules/core-java-lang/src/main/java/com/baeldung/system/SystemOutDemo.java diff --git a/core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/system/UserCredentials.java b/core-java-modules/core-java-lang/src/main/java/com/baeldung/system/UserCredentials.java similarity index 100% rename from core-java-modules/core-java-lang-syntax/src/main/java/com/baeldung/system/UserCredentials.java rename to core-java-modules/core-java-lang/src/main/java/com/baeldung/system/UserCredentials.java diff --git a/core-java-modules/core-java-lang-syntax/src/test/java/com/baeldung/system/DateTimeServiceUnitTest.java b/core-java-modules/core-java-lang/src/test/java/com/baeldung/system/DateTimeServiceUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-syntax/src/test/java/com/baeldung/system/DateTimeServiceUnitTest.java rename to core-java-modules/core-java-lang/src/test/java/com/baeldung/system/DateTimeServiceUnitTest.java diff --git a/core-java-modules/core-java-lang-syntax/src/test/java/com/baeldung/system/EnvironmentVariablesUnitTest.java b/core-java-modules/core-java-lang/src/test/java/com/baeldung/system/EnvironmentVariablesUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-syntax/src/test/java/com/baeldung/system/EnvironmentVariablesUnitTest.java rename to core-java-modules/core-java-lang/src/test/java/com/baeldung/system/EnvironmentVariablesUnitTest.java diff --git a/core-java-modules/core-java-lang-syntax/src/test/java/com/baeldung/system/SystemArrayCopyUnitTest.java b/core-java-modules/core-java-lang/src/test/java/com/baeldung/system/SystemArrayCopyUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-syntax/src/test/java/com/baeldung/system/SystemArrayCopyUnitTest.java rename to core-java-modules/core-java-lang/src/test/java/com/baeldung/system/SystemArrayCopyUnitTest.java diff --git a/core-java-modules/core-java-lang-syntax/src/test/java/com/baeldung/system/SystemNanoUnitTest.java b/core-java-modules/core-java-lang/src/test/java/com/baeldung/system/SystemNanoUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-syntax/src/test/java/com/baeldung/system/SystemNanoUnitTest.java rename to core-java-modules/core-java-lang/src/test/java/com/baeldung/system/SystemNanoUnitTest.java diff --git a/core-java-modules/core-java-lang-syntax/src/test/java/com/baeldung/system/SystemPropertiesUnitTest.java b/core-java-modules/core-java-lang/src/test/java/com/baeldung/system/SystemPropertiesUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-syntax/src/test/java/com/baeldung/system/SystemPropertiesUnitTest.java rename to core-java-modules/core-java-lang/src/test/java/com/baeldung/system/SystemPropertiesUnitTest.java diff --git a/core-java-modules/core-java-networking-2/README.md b/core-java-modules/core-java-networking-2/README.md index 62dec41356..c384a28b64 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 @@ +## Core Java Networking (Part 2) + +This module contains articles about networking in Java + ### Relevant Articles - [Checking if a URL Exists in Java](https://www.baeldung.com/java-check-url-exists) @@ -5,3 +9,4 @@ - [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) +- [[<-- Prev]](/core-java-modules/core-java-networking) diff --git a/core-java-modules/core-java-networking/README.md b/core-java-modules/core-java-networking/README.md index 33fc3684a3..4038e9803a 100644 --- a/core-java-modules/core-java-networking/README.md +++ b/core-java-modules/core-java-networking/README.md @@ -1,7 +1,7 @@ -========= - ## Core Java Networking +This module contains articles about networking in Java + ### Relevant Articles - [Connecting Through Proxy Servers in Core Java](https://www.baeldung.com/java-connect-via-proxy-server) @@ -14,3 +14,4 @@ - [Guide to Java URL Encoding/Decoding](http://www.baeldung.com/java-url-encoding-decoding) - [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) +- [[More -->]](/core-java-modules/core-java-networking-2) diff --git a/core-java-modules/core-java-nio/README.md b/core-java-modules/core-java-nio/README.md index 1ac3b6c089..efa58671b5 100644 --- a/core-java-modules/core-java-nio/README.md +++ b/core-java-modules/core-java-nio/README.md @@ -1,3 +1,7 @@ +## Core Java NIO + +This module contains articles about core Java non-blocking input and output (IO) + ## Relevant Articles: - [Determine File Creation Date in Java](https://www.baeldung.com/java-file-creation-date) diff --git a/core-java-modules/core-java-os/README.md b/core-java-modules/core-java-os/README.md index 697af5e4d6..9205628a87 100644 --- a/core-java-modules/core-java-os/README.md +++ b/core-java-modules/core-java-os/README.md @@ -1,10 +1,11 @@ -========= +## Core Java OS -This module uses Java 9, so make sure to have the JDK 9 installed to run it. +This module contains articles about working with the operating system (OS) in Java -## ### Relevant Articles: - [Java 9 Process API Improvements](http://www.baeldung.com/java-9-process-api) - [Guide to java.lang.Process API](https://www.baeldung.com/java-process-api) - [Guide to java.lang.ProcessBuilder API](https://www.baeldung.com/java-lang-processbuilder-api) - [Get the Current Working Directory in Java](https://www.baeldung.com/java-current-directory) + +This module uses Java 9, so make sure to have the JDK 9 installed to run it. \ No newline at end of file diff --git a/core-java-modules/core-java-perf/README.md b/core-java-modules/core-java-perf/README.md index 1b3b590bf8..d1d646ac7f 100644 --- a/core-java-modules/core-java-perf/README.md +++ b/core-java-modules/core-java-perf/README.md @@ -1,5 +1,7 @@ ## Core Java Performance +This module contains articles about performance of Java applications + ### Relevant Articles: - [Verbose Garbage Collection in Java](https://www.baeldung.com/java-verbose-gc) - [Different Ways to Capture Java Heap Dumps](https://www.baeldung.com/java-heap-dump-capture) diff --git a/core-java-modules/core-java-security/README.md b/core-java-modules/core-java-security/README.md index a833ca30bb..48fd071396 100644 --- a/core-java-modules/core-java-security/README.md +++ b/core-java-modules/core-java-security/README.md @@ -1,5 +1,7 @@ ## Core Java Security +This module contains articles about core Java Security + ### Relevant Articles: - [MD5 Hashing in Java](http://www.baeldung.com/java-md5) - [Guide to the Cipher Class](http://www.baeldung.com/java-cipher-class) @@ -11,3 +13,4 @@ - [SHA-256 and SHA3-256 Hashing in Java](https://www.baeldung.com/sha-256-hashing-java) - [Enabling TLS v1.2 in Java 7](https://www.baeldung.com/java-7-tls-v12) - [The Java SecureRandom Class](https://www.baeldung.com/java-secure-random) +- [An Introduction to Java SASL](https://www.baeldung.com/java-sasl) diff --git a/core-java-modules/core-java-sun/README.md b/core-java-modules/core-java-sun/README.md index e2dba76b41..107035cbe8 100644 --- a/core-java-modules/core-java-sun/README.md +++ b/core-java-modules/core-java-sun/README.md @@ -1,7 +1,8 @@ -========= +## Core Java Sun -## Core Java Cookbooks and Examples +This module contains articles about the sun package ### Relevant Articles: + - [Creating a Java Compiler Plugin](http://www.baeldung.com/java-build-compiler-plugin) - [Guide to sun.misc.Unsafe](http://www.baeldung.com/java-unsafe) \ No newline at end of file diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/encoding/CharacterEncodingExamples.java b/core-java-modules/core-java/src/main/java/com/baeldung/encoding/CharacterEncodingExamples.java index bdd92e37f6..1ed5f9e62a 100644 --- a/core-java-modules/core-java/src/main/java/com/baeldung/encoding/CharacterEncodingExamples.java +++ b/core-java-modules/core-java/src/main/java/com/baeldung/encoding/CharacterEncodingExamples.java @@ -1,10 +1,15 @@ package com.baeldung.encoding; +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CodingErrorAction; public class CharacterEncodingExamples { @@ -29,4 +34,12 @@ public class CharacterEncodingExamples { } return buffer.toString(); } + + static String decodeText(String input, Charset charset, CodingErrorAction codingErrorAction) throws IOException { + CharsetDecoder charsetDecoder = charset.newDecoder(); + charsetDecoder.onMalformedInput(codingErrorAction); + return new BufferedReader( + new InputStreamReader( + new ByteArrayInputStream(input.getBytes()), charsetDecoder)).readLine(); + } } diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/encoding/CharacterEncodingExamplesUnitTest.java b/core-java-modules/core-java/src/test/java/com/baeldung/encoding/CharacterEncodingExamplesUnitTest.java index 95b3605d95..fe3867a3c3 100644 --- a/core-java-modules/core-java/src/test/java/com/baeldung/encoding/CharacterEncodingExamplesUnitTest.java +++ b/core-java-modules/core-java/src/test/java/com/baeldung/encoding/CharacterEncodingExamplesUnitTest.java @@ -1,9 +1,24 @@ package com.baeldung.encoding; +import java.io.BufferedReader; import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CodingErrorAction; +import java.nio.charset.MalformedInputException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import org.junit.Assert; import org.junit.Test; +import org.junit.jupiter.api.Assertions; public class CharacterEncodingExamplesUnitTest { @@ -58,4 +73,52 @@ public class CharacterEncodingExamplesUnitTest { "0 0 10001010 10011110 "); } + @Test + public void givenUTF8String_whenDecodeByUS_ASCII_thenIgnoreMalformedInputSequence() throws IOException { + Assertions.assertEquals("The faade pattern is a software design pattern.", CharacterEncodingExamples.decodeText("The façade pattern is a software design pattern.", StandardCharsets.US_ASCII, CodingErrorAction.IGNORE)); + } + + @Test + public void givenUTF8String_whenDecodeByUS_ASCII_thenReplaceMalformedInputSequence() throws IOException { + Assertions.assertEquals( + "The fa��ade pattern is a software design pattern.", + CharacterEncodingExamples.decodeText( + "The façade pattern is a software design pattern.", + StandardCharsets.US_ASCII, + CodingErrorAction.REPLACE)); + } + + @Test + public void givenUTF8String_whenDecodeByUS_ASCII_thenReportMalformedInputSequence() { + Assertions.assertThrows( + MalformedInputException.class, + () -> CharacterEncodingExamples.decodeText( + "The façade pattern is a software design pattern.", + StandardCharsets.US_ASCII, + CodingErrorAction.REPORT)); + } + + @Test + public void givenTextFile_whenLoopOverAllCandidateEncodings_thenProduceSuitableCandidateEncodings() { + Path path = Paths.get("src/test/resources/encoding.txt"); + List allCandidateCharSets = Arrays.asList( + StandardCharsets.US_ASCII, StandardCharsets.UTF_8, StandardCharsets.ISO_8859_1); + + List suitableCharsets = new ArrayList<>(); + allCandidateCharSets.forEach(charset -> { + try { + CharsetDecoder charsetDecoder = charset.newDecoder().onMalformedInput(CodingErrorAction.REPORT); + Reader reader = new InputStreamReader(Files.newInputStream(path), charsetDecoder); + BufferedReader bufferedReader = new BufferedReader(reader); + bufferedReader.readLine(); + suitableCharsets.add(charset); + } catch (MalformedInputException ignored) { + } catch (IOException ex) { + ex.printStackTrace(); + } + }); + + Assertions.assertEquals(suitableCharsets, Arrays.asList(StandardCharsets.UTF_8, StandardCharsets.ISO_8859_1)); + } + } diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index 082ffbef53..68ece1c473 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -15,7 +15,6 @@ pre-jpms - core-java-exceptions core-java-optional core-java-lang-operators core-java-networking-2 diff --git a/core-kotlin-2/README.md b/core-kotlin-2/README.md index d75dd2208a..ecf16c2c91 100644 --- a/core-kotlin-2/README.md +++ b/core-kotlin-2/README.md @@ -1,4 +1,8 @@ -## Relevant articles: +## Core Kotlin + +This module contains articles about core Kotlin. + +### Relevant articles: - [Void Type in Kotlin](https://www.baeldung.com/kotlin-void-type) - [How to use Kotlin Range Expressions](https://www.baeldung.com/kotlin-ranges) @@ -8,3 +12,4 @@ - [Split a List into Parts in Kotlin](https://www.baeldung.com/kotlin-split-list-into-parts) - [String Comparison in Kotlin](https://www.baeldung.com/kotlin-string-comparison) - [Guide to JVM Platform Annotations in Kotlin](https://www.baeldung.com/kotlin-jvm-annotations) +- More articles: [[<-- prev]](/core-kotlin) diff --git a/core-kotlin-2/src/test/kotlin/com/baeldung/lists/ListsUnitTest.kt b/core-kotlin-2/src/test/kotlin/com/baeldung/lists/ListsUnitTest.kt new file mode 100644 index 0000000000..6fa7983689 --- /dev/null +++ b/core-kotlin-2/src/test/kotlin/com/baeldung/lists/ListsUnitTest.kt @@ -0,0 +1,34 @@ +package com.baeldung.lists + +import org.junit.jupiter.api.Test +import kotlin.test.assertEquals +import kotlin.test.assertFalse +import kotlin.test.assertTrue + +class ListsUnitTest { + + var batmans: List = listOf("Christian Bale", "Michael Keaton", "Ben Affleck", "George Clooney") + + @Test + fun whenFindASpecificItem_thenItemIsReturned() { + //Returns the first element matching the given predicate, or null if no such element was found. + val theFirstBatman = batmans.find { actor -> "Michael Keaton".equals(actor) } + assertEquals(theFirstBatman, "Michael Keaton") + } + + @Test + fun whenFilterWithPredicate_thenMatchingItemsAreReturned() { + //Returns a list containing only elements matching the given predicate. + val theCoolestBatmans = batmans.filter { actor -> actor.contains("a") } + assertTrue(theCoolestBatmans.contains("Christian Bale") && theCoolestBatmans.contains("Michael Keaton")) + } + + @Test + fun whenFilterNotWithPredicate_thenMatchingItemsAreReturned() { + //Returns a list containing only elements not matching the given predicate. + val theMehBatmans = batmans.filterNot { actor -> actor.contains("a") } + assertFalse(theMehBatmans.contains("Christian Bale") && theMehBatmans.contains("Michael Keaton")) + assertTrue(theMehBatmans.contains("Ben Affleck") && theMehBatmans.contains("George Clooney")) + } + +} \ No newline at end of file diff --git a/core-kotlin-io/README.md b/core-kotlin-io/README.md index cb4dac7e4d..ad4c503895 100644 --- a/core-kotlin-io/README.md +++ b/core-kotlin-io/README.md @@ -1,4 +1,8 @@ -## Relevant articles: +## Core Kotlin I/O + +This module contains articles about core Kotlin I/O. + +### Relevant articles: - [InputStream to String in Kotlin](https://www.baeldung.com/kotlin-inputstream-to-string) - [Console I/O in Kotlin](https://www.baeldung.com/kotlin-console-io) diff --git a/core-kotlin/README.md b/core-kotlin/README.md index 3392db9171..bdff95d36d 100644 --- a/core-kotlin/README.md +++ b/core-kotlin/README.md @@ -1,36 +1,40 @@ -## Relevant articles: +## Core Kotlin -- [Introduction to the Kotlin Language](http://www.baeldung.com/kotlin) -- [Guide to the “when{}” Block in Kotlin](http://www.baeldung.com/kotlin-when) -- [Comprehensive Guide to Null Safety in Kotlin](http://www.baeldung.com/kotlin-null-safety) -- [Kotlin Java Interoperability](http://www.baeldung.com/kotlin-java-interoperability) -- [Difference Between “==” and “===” operators in Kotlin](http://www.baeldung.com/kotlin-equality-operators) -- [Generics in Kotlin](http://www.baeldung.com/kotlin-generics) -- [Introduction to Kotlin Coroutines](http://www.baeldung.com/kotlin-coroutines) -- [Destructuring Declarations in Kotlin](http://www.baeldung.com/kotlin-destructuring-declarations) -- [Lazy Initialization in Kotlin](http://www.baeldung.com/kotlin-lazy-initialization) -- [Overview of Kotlin Collections API](http://www.baeldung.com/kotlin-collections-api) -- [Converting a List to Map in Kotlin](http://www.baeldung.com/kotlin-list-to-map) -- [Data Classes in Kotlin](http://www.baeldung.com/kotlin-data-classes) -- [Delegated Properties in Kotlin](http://www.baeldung.com/kotlin-delegated-properties) -- [Sealed Classes in Kotlin](http://www.baeldung.com/kotlin-sealed-classes) -- [JUnit 5 for Kotlin Developers](http://www.baeldung.com/junit-5-kotlin) -- [Extension Methods in Kotlin](http://www.baeldung.com/kotlin-extension-methods) -- [Infix Functions in Kotlin](http://www.baeldung.com/kotlin-infix-functions) -- [Try-with-resources in Kotlin](http://www.baeldung.com/kotlin-try-with-resources) -- [Regular Expressions in Kotlin](http://www.baeldung.com/kotlin-regular-expressions) -- [Objects in Kotlin](http://www.baeldung.com/kotlin-objects) -- [Reading from a File in Kotlin](http://www.baeldung.com/kotlin-read-file) -- [Guide to Kotlin @JvmField](http://www.baeldung.com/kotlin-jvm-field-annotation) -- [Filtering Kotlin Collections](http://www.baeldung.com/kotlin-filter-collection) -- [Writing to a File in Kotlin](http://www.baeldung.com/kotlin-write-file) -- [Lambda Expressions in Kotlin](http://www.baeldung.com/kotlin-lambda-expressions) -- [Kotlin String Templates](http://www.baeldung.com/kotlin-string-template) -- [Working with Enums in Kotlin](http://www.baeldung.com/kotlin-enum) -- [Create a Java and Kotlin Project with Maven](http://www.baeldung.com/kotlin-maven-java-project) -- [Reflection with Kotlin](http://www.baeldung.com/kotlin-reflection) -- [Get a Random Number in Kotlin](http://www.baeldung.com/kotlin-random-number) -- [Idiomatic Logging in Kotlin](http://www.baeldung.com/kotlin-logging) +This module contains articles about core Kotlin. + +### Relevant articles: + +- [Introduction to the Kotlin Language](https://www.baeldung.com/kotlin) +- [Guide to the “when{}” Block in Kotlin](https://www.baeldung.com/kotlin-when) +- [Comprehensive Guide to Null Safety in Kotlin](https://www.baeldung.com/kotlin-null-safety) +- [Kotlin Java Interoperability](https://www.baeldung.com/kotlin-java-interoperability) +- [Difference Between “==” and “===” operators in Kotlin](https://www.baeldung.com/kotlin-equality-operators) +- [Generics in Kotlin](https://www.baeldung.com/kotlin-generics) +- [Introduction to Kotlin Coroutines](https://www.baeldung.com/kotlin-coroutines) +- [Destructuring Declarations in Kotlin](https://www.baeldung.com/kotlin-destructuring-declarations) +- [Lazy Initialization in Kotlin](https://www.baeldung.com/kotlin-lazy-initialization) +- [Overview of Kotlin Collections API](https://www.baeldung.com/kotlin-collections-api) +- [Converting a List to Map in Kotlin](https://www.baeldung.com/kotlin-list-to-map) +- [Data Classes in Kotlin](https://www.baeldung.com/kotlin-data-classes) +- [Delegated Properties in Kotlin](https://www.baeldung.com/kotlin-delegated-properties) +- [Sealed Classes in Kotlin](https://www.baeldung.com/kotlin-sealed-classes) +- [JUnit 5 for Kotlin Developers](https://www.baeldung.com/junit-5-kotlin) +- [Extension Methods in Kotlin](https://www.baeldung.com/kotlin-extension-methods) +- [Infix Functions in Kotlin](https://www.baeldung.com/kotlin-infix-functions) +- [Try-with-resources in Kotlin](https://www.baeldung.com/kotlin-try-with-resources) +- [Regular Expressions in Kotlin](https://www.baeldung.com/kotlin-regular-expressions) +- [Objects in Kotlin](https://www.baeldung.com/kotlin-objects) +- [Reading from a File in Kotlin](https://www.baeldung.com/kotlin-read-file) +- [Guide to Kotlin @JvmField](https://www.baeldung.com/kotlin-jvm-field-annotation) +- [Filtering Kotlin Collections](https://www.baeldung.com/kotlin-filter-collection) +- [Writing to a File in Kotlin](https://www.baeldung.com/kotlin-write-file) +- [Lambda Expressions in Kotlin](https://www.baeldung.com/kotlin-lambda-expressions) +- [Kotlin String Templates](https://www.baeldung.com/kotlin-string-template) +- [Working with Enums in Kotlin](https://www.baeldung.com/kotlin-enum) +- [Create a Java and Kotlin Project with Maven](https://www.baeldung.com/kotlin-maven-java-project) +- [Reflection with Kotlin](https://www.baeldung.com/kotlin-reflection) +- [Get a Random Number in Kotlin](https://www.baeldung.com/kotlin-random-number) +- [Idiomatic Logging in Kotlin](https://www.baeldung.com/kotlin-logging) - [Kotlin Constructors](https://www.baeldung.com/kotlin-constructors) - [Creational Design Patterns in Kotlin: Builder](https://www.baeldung.com/kotlin-builder-pattern) - [Kotlin Nested and Inner Classes](https://www.baeldung.com/kotlin-inner-classes) @@ -56,3 +60,4 @@ - [Static Methods Behavior in Kotlin](https://www.baeldung.com/kotlin-static-methods) - [Inline Functions in Kotlin](https://www.baeldung.com/kotlin-inline-functions) - [Delegation Pattern in Kotlin](https://www.baeldung.com/kotlin-delegation-pattern) +- More articles: [[next -->]](/core-kotlin-2) diff --git a/core-scala/README.md b/core-scala/README.md index eed344193f..e6fc75d59e 100644 --- a/core-scala/README.md +++ b/core-scala/README.md @@ -1,3 +1,7 @@ +## Core Scala + +This module contains articles about Scala's core features + ### Relevant Articles: - [Introduction to Scala](https://www.baeldung.com/scala-intro) diff --git a/couchbase/README.md b/couchbase/README.md index 7a99ce4299..913c413132 100644 --- a/couchbase/README.md +++ b/couchbase/README.md @@ -1,11 +1,13 @@ -## Couchbase SDK Tutorial Project +## Couchbase + +This module contains articles about Couchbase ### Relevant Articles: -- [Introduction to Couchbase SDK for Java](http://www.baeldung.com/java-couchbase-sdk) -- [Using Couchbase in a Spring Application](http://www.baeldung.com/couchbase-sdk-spring) -- [Asynchronous Batch Operations in Couchbase](http://www.baeldung.com/async-batch-operations-in-couchbase) -- [Querying Couchbase with MapReduce Views](http://www.baeldung.com/couchbase-query-mapreduce-view) -- [Querying Couchbase with N1QL](http://www.baeldung.com/n1ql-couchbase) +- [Introduction to Couchbase SDK for Java](https://www.baeldung.com/java-couchbase-sdk) +- [Using Couchbase in a Spring Application](https://www.baeldung.com/couchbase-sdk-spring) +- [Asynchronous Batch Operations in Couchbase](https://www.baeldung.com/async-batch-operations-in-couchbase) +- [Querying Couchbase with MapReduce Views](https://www.baeldung.com/couchbase-query-mapreduce-view) +- [Querying Couchbase with N1QL](https://www.baeldung.com/n1ql-couchbase) ### Overview This Maven project contains the Java code for the Couchbase entities and Spring services diff --git a/custom-pmd/README.md b/custom-pmd/README.md index 065a1128f3..0c42106fe8 100644 --- a/custom-pmd/README.md +++ b/custom-pmd/README.md @@ -1 +1,7 @@ ## Custom PMD Rules + +This module contains articles about PMD + +### Relevant Articles: + +- [Introduction To PMD](https://www.baeldung.com/pmd) \ No newline at end of file diff --git a/dagger/README.md b/dagger/README.md index 72cba3d3f2..d942622d0a 100644 --- a/dagger/README.md +++ b/dagger/README.md @@ -1,3 +1,7 @@ +## Dagger + +This module contains articles about Dagger + ### Relevant articles: -- [Introduction to Dagger 2](http://www.baeldung.com/dagger-2) +- [Introduction to Dagger 2](https://www.baeldung.com/dagger-2) diff --git a/data-structures/README.md b/data-structures/README.md index 5ea9657173..b7f15c2eb8 100644 --- a/data-structures/README.md +++ b/data-structures/README.md @@ -1,3 +1,7 @@ +## Data Structures + +This module contains articles about data structures in Java + ## Relevant articles: - [The Trie Data Structure in Java](https://www.baeldung.com/trie-java) diff --git a/ddd/README.md b/ddd/README.md index 6b68fe2205..daeb663e3b 100644 --- a/ddd/README.md +++ b/ddd/README.md @@ -1,3 +1,7 @@ +## Domain-driven Design (DDD) + +This module contains articles about Domain-driven Design (DDD) + ### Relevant articles - [Persisting DDD Aggregates](https://www.baeldung.com/spring-persisting-ddd-aggregates) diff --git a/deeplearning4j/README.md b/deeplearning4j/README.md index 14e585cd97..07954b1a11 100644 --- a/deeplearning4j/README.md +++ b/deeplearning4j/README.md @@ -1,5 +1,6 @@ -### Sample deeplearning4j Project -This is a sample project for the [deeplearning4j](https://deeplearning4j.org) library. +## Deeplearning4j + +This module contains articles about Deeplearning4j ### Relevant Articles: -- [A Guide to Deeplearning4j](http://www.baeldung.com/deeplearning4j) +- [A Guide to Deeplearning4j](https://www.baeldung.com/deeplearning4j) diff --git a/disruptor/README.md b/disruptor/README.md index 779b1e89c4..7d2fca4672 100644 --- a/disruptor/README.md +++ b/disruptor/README.md @@ -1,3 +1,7 @@ -## Relevant articles: +## Disruptor -- [Concurrency with LMAX Disruptor – An Introduction](http://www.baeldung.com/lmax-disruptor-concurrency) +This module contains articles about LMAX Disruptor + +### Relevant articles: + +- [Concurrency with LMAX Disruptor – An Introduction](https://www.baeldung.com/lmax-disruptor-concurrency) diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 0000000000..7948b3d663 --- /dev/null +++ b/docker/README.md @@ -0,0 +1,3 @@ +## Relevant Articles: + +- [Introduction to Docker Compose](https://www.baeldung.com/docker-compose) diff --git a/dozer/README.md b/dozer/README.md index 5e104d914c..e87e889ce3 100644 --- a/dozer/README.md +++ b/dozer/README.md @@ -1,2 +1,7 @@ +## Dozer + +This module contains articles about Dozer + ### Relevant Articles: -- [A Guide to Mapping With Dozer](http://www.baeldung.com/dozer) + +- [A Guide to Mapping With Dozer](https://www.baeldung.com/dozer) diff --git a/drools/README.MD b/drools/README.MD index 5efbe0d3c3..bcec0cc2f0 100644 --- a/drools/README.MD +++ b/drools/README.MD @@ -1,4 +1,9 @@ +## Drools + +This module contains articles about Drools + ### Relevant Articles: -- [Introduction to Drools](http://www.baeldung.com/drools) -- [Drools Using Rules from Excel Files](http://www.baeldung.com/drools-excel) -- [An Example of Backward Chaining in Drools](http://www.baeldung.com/drools-backward-chaining) + +- [Introduction to Drools](https://www.baeldung.com/drools) +- [Drools Using Rules from Excel Files](https://www.baeldung.com/drools-excel) +- [An Example of Backward Chaining in Drools](https://www.baeldung.com/drools-backward-chaining) diff --git a/dubbo/README.md b/dubbo/README.md index 0a4cd9a204..3ccca4960a 100644 --- a/dubbo/README.md +++ b/dubbo/README.md @@ -1,4 +1,8 @@ -## Relevant articles: +## Dubbo -- [Introduction to Dubbo](http://www.baeldung.com/dubbo) +This module contains articles about Dubbo + +### Relevant articles: + +- [Introduction to Dubbo](https://www.baeldung.com/dubbo) diff --git a/ethereum/README.md b/ethereum/README.md index d06ca09636..5bae4bbebd 100644 --- a/ethereum/README.md +++ b/ethereum/README.md @@ -1,6 +1,8 @@ ## Ethereum +This module contains articles about the Ethereum blockchain + ### Relevant Articles: -- [Introduction to EthereumJ](http://www.baeldung.com/ethereumj) -- [Creating and Deploying Smart Contracts with Solidity](http://www.baeldung.com/smart-contracts-ethereum-solidity) -- [Lightweight Ethereum Clients Using Web3j](http://www.baeldung.com/web3j) +- [Introduction to EthereumJ](https://www.baeldung.com/ethereumj) +- [Creating and Deploying Smart Contracts with Solidity](https://www.baeldung.com/smart-contracts-ethereum-solidity) +- [Lightweight Ethereum Clients Using Web3j](https://www.baeldung.com/web3j) diff --git a/feign/README.md b/feign/README.md index da04c40cdc..03051671d5 100644 --- a/feign/README.md +++ b/feign/README.md @@ -1,10 +1,8 @@ -## Feign Hypermedia Client ## +## Feign -This is the implementation of a [spring-hypermedia-api][1] client using Feign. - -[1]: https://github.com/eugenp/spring-hypermedia-api +This module contains articles about Feign ### Relevant Articles: -- [Intro to Feign](http://www.baeldung.com/intro-to-feign) -- [Introduction to SLF4J](http://www.baeldung.com/slf4j-with-log4j2-logback) +- [Intro to Feign](https://www.baeldung.com/intro-to-feign) + diff --git a/flyway-cdi-extension/README.md b/flyway-cdi-extension/README.md index 3e03d5aee8..2f4e8cdb7a 100644 --- a/flyway-cdi-extension/README.md +++ b/flyway-cdi-extension/README.md @@ -1,3 +1,7 @@ +## Flyway CDI Extension + +This module contains articles about context and dependency injection (CDI) with Flyway + ### Relevant articles - [CDI Portable Extension and Flyway](https://www.baeldung.com/cdi-portable-extension) diff --git a/geotools/README.md b/geotools/README.md index 188ff0fddb..5529386070 100644 --- a/geotools/README.md +++ b/geotools/README.md @@ -1,3 +1,7 @@ +## GeoTools + +This module contains articles about GeoTools + ### Relevant Articles -[Introduction to GeoTools](http://www.baeldung.com/geo-tools) +[Introduction to GeoTools](https://www.baeldung.com/geo-tools) diff --git a/google-cloud/README.md b/google-cloud/README.md index 87ca17eac4..5458fb1a93 100644 --- a/google-cloud/README.md +++ b/google-cloud/README.md @@ -1,16 +1,16 @@ -## Google Cloud Tutorial Project +## Google Cloud + +This module contains articles about Google Cloud ### Relevant Article: -- [Intro to Google Cloud Storage With Java](http://www.baeldung.com/java-google-cloud-storage) + +- [Intro to Google Cloud Storage With Java](https://www.baeldung.com/java-google-cloud-storage) ### Overview + This Maven project contains the Java code for the article linked above. ### Package Organization + Java classes for the intro tutorial are in the org.baeldung.google.cloud package. Please note that Google Cloud requires a user account and credentials, as explained in the tutorial. - - -### Running the tests - -``` diff --git a/google-web-toolkit/README.md b/google-web-toolkit/README.md index 3526fe9962..df9158cddc 100644 --- a/google-web-toolkit/README.md +++ b/google-web-toolkit/README.md @@ -1,2 +1,7 @@ +## Google Web Toolkit + +This module contains articles about Google Web Toolkit (GWT) + ### Relevant Articles: -- [Introduction to GWT](http://www.baeldung.com/gwt) + +- [Introduction to GWT](https://www.baeldung.com/gwt) diff --git a/gradle/README.md b/gradle/README.md index 14e460f225..84a8508e2c 100644 --- a/gradle/README.md +++ b/gradle/README.md @@ -1,6 +1,10 @@ +## Gradle + +This module contains articles about Gradle + ## Relevant articles: -- [Introduction to Gradle](http://www.baeldung.com/gradle) -- [Writing Custom Gradle Plugins](http://www.baeldung.com/gradle-create-plugin) -- [Creating a Fat Jar in Gradle](http://www.baeldung.com/gradle-fat-jar) -- [A Custom Task in Gradle](http://www.baeldung.com/gradle-custom-task) +- [Introduction to Gradle](https://www.baeldung.com/gradle) +- [Writing Custom Gradle Plugins](https://www.baeldung.com/gradle-create-plugin) +- [Creating a Fat Jar in Gradle](https://www.baeldung.com/gradle-fat-jar) +- [A Custom Task in Gradle](https://www.baeldung.com/gradle-custom-task) - [Using JUnit 5 with Gradle](https://www.baeldung.com/junit-5-gradle) diff --git a/grails/README.md b/grails/README.md index faa50a7efd..ec9bb2a504 100644 --- a/grails/README.md +++ b/grails/README.md @@ -1,3 +1,7 @@ +## Grails + +This module contains articles about Grails + ### Relevant articles -- [Build an MVC Web Application with Grails](http://www.baeldung.com/grails-mvc-application) +- [Build an MVC Web Application with Grails](https://www.baeldung.com/grails-mvc-application) diff --git a/graphql/graphql-java/README.md b/graphql/graphql-java/README.md index 0033524209..e3fd818400 100644 --- a/graphql/graphql-java/README.md +++ b/graphql/graphql-java/README.md @@ -1,3 +1,7 @@ +## GraphQL Java + +This module contains articles about GraphQL with Java + ## Relevant articles: -- [Introduction to GraphQL](http://www.baeldung.com/graphql) +- [Introduction to GraphQL](https://www.baeldung.com/graphql) diff --git a/grpc/README.md b/grpc/README.md index 5a60ca2e7e..d65dc03e54 100644 --- a/grpc/README.md +++ b/grpc/README.md @@ -1,2 +1,6 @@ +## gRPC + +This module contains articles about gRPC + ### Relevant Articles: -- [Introduction to gRPC](http://www.baeldung.com/grpc-introduction) +- [Introduction to gRPC](https://www.baeldung.com/grpc-introduction) diff --git a/gson/README.md b/gson/README.md index 268116a2ac..df6ba0f516 100644 --- a/gson/README.md +++ b/gson/README.md @@ -1,12 +1,12 @@ -========= - -## GSON Cookbooks and Examples +## GSON +This module contains articles about Gson ### Relevant Articles: -- [Gson Deserialization Cookbook](http://www.baeldung.com/gson-deserialization-guide) -- [Jackson vs Gson](http://www.baeldung.com/jackson-vs-gson) -- [Exclude Fields from Serialization in Gson](http://www.baeldung.com/gson-exclude-fields-serialization) + +- [Gson Deserialization Cookbook](https://www.baeldung.com/gson-deserialization-guide) +- [Jackson vs Gson](https://www.baeldung.com/jackson-vs-gson) +- [Exclude Fields from Serialization in Gson](https://www.baeldung.com/gson-exclude-fields-serialization) - [Save Data to a JSON File with Gson](https://www.baeldung.com/gson-save-file) - [Convert JSON to a Map Using Gson](https://www.baeldung.com/gson-json-to-map) - [Working with Primitive Values in Gson](https://www.baeldung.com/java-gson-primitives) diff --git a/guava-collections-map/README.md b/guava-collections-map/README.md new file mode 100644 index 0000000000..b3ec5e2157 --- /dev/null +++ b/guava-collections-map/README.md @@ -0,0 +1,12 @@ +========= + +## Guava Collections Map examples + +This module contains articles about map collections in Guava + +### Relevant Articles: +- [Guava – Maps](https://www.baeldung.com/guava-maps) +- [Guide to Guava Multimap](https://www.baeldung.com/guava-multimap) +- [Guide to Guava RangeMap](https://www.baeldung.com/guava-rangemap) +- [Initialize a HashMap in Java](https://www.baeldung.com/java-initialize-hashmap) +- [Guide to Guava ClassToInstanceMap](https://www.baeldung.com/guava-class-to-instance-map) \ No newline at end of file diff --git a/guava-collections-map/pom.xml b/guava-collections-map/pom.xml new file mode 100644 index 0000000000..45bb6b8caa --- /dev/null +++ b/guava-collections-map/pom.xml @@ -0,0 +1,32 @@ + + 4.0.0 + com.baeldung.guava + guava-collections-map + 0.1.0-SNAPSHOT + guava-collections-map + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../parent-java + + + + + + + guava-collections-map + + + src/main/resources + true + + + + + + + + \ No newline at end of file diff --git a/guava-collections/src/test/java/org/baeldung/guava/ClassToInstanceMapUnitTest.java b/guava-collections-map/src/test/java/com/baeldung/guava/classtoinstancemap/ClassToInstanceMapUnitTest.java similarity index 97% rename from guava-collections/src/test/java/org/baeldung/guava/ClassToInstanceMapUnitTest.java rename to guava-collections-map/src/test/java/com/baeldung/guava/classtoinstancemap/ClassToInstanceMapUnitTest.java index 295672d7ad..b9807379eb 100644 --- a/guava-collections/src/test/java/org/baeldung/guava/ClassToInstanceMapUnitTest.java +++ b/guava-collections-map/src/test/java/com/baeldung/guava/classtoinstancemap/ClassToInstanceMapUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.guava; +package com.baeldung.guava.classtoinstancemap; import com.google.common.collect.ClassToInstanceMap; import com.google.common.collect.ImmutableClassToInstanceMap; import com.google.common.collect.MutableClassToInstanceMap; diff --git a/guava-collections/src/test/java/org/baeldung/guava/maps/initialize/GuavaMapInitializeUnitTest.java b/guava-collections-map/src/test/java/com/baeldung/guava/initializemaps/GuavaMapInitializeUnitTest.java similarity index 95% rename from guava-collections/src/test/java/org/baeldung/guava/maps/initialize/GuavaMapInitializeUnitTest.java rename to guava-collections-map/src/test/java/com/baeldung/guava/initializemaps/GuavaMapInitializeUnitTest.java index 2414afb720..0866496ef5 100644 --- a/guava-collections/src/test/java/org/baeldung/guava/maps/initialize/GuavaMapInitializeUnitTest.java +++ b/guava-collections-map/src/test/java/com/baeldung/guava/initializemaps/GuavaMapInitializeUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.guava.maps.initialize; +package com.baeldung.guava.initializemaps; import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.*; diff --git a/guava-collections/src/test/java/org/baeldung/guava/GuavaCollectionTypesUnitTest.java b/guava-collections-map/src/test/java/com/baeldung/guava/maps/GuavaMapsUnitTest.java similarity index 51% rename from guava-collections/src/test/java/org/baeldung/guava/GuavaCollectionTypesUnitTest.java rename to guava-collections-map/src/test/java/com/baeldung/guava/maps/GuavaMapsUnitTest.java index ab38afa5c4..4108df8c96 100644 --- a/guava-collections/src/test/java/org/baeldung/guava/GuavaCollectionTypesUnitTest.java +++ b/guava-collections-map/src/test/java/com/baeldung/guava/maps/GuavaMapsUnitTest.java @@ -1,115 +1,18 @@ -package org.baeldung.guava; +package com.baeldung.guava.maps; -import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; import java.util.List; import java.util.Map; -import java.util.Set; import org.junit.Test; import com.google.common.base.Function; -import com.google.common.base.Joiner; -import com.google.common.base.Predicates; -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.BiMap; -import com.google.common.collect.ClassToInstanceMap; -import com.google.common.collect.ContiguousSet; -import com.google.common.collect.DiscreteDomain; -import com.google.common.collect.HashBasedTable; -import com.google.common.collect.HashBiMap; -import com.google.common.collect.HashMultiset; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.ImmutableSortedMap; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; -import com.google.common.collect.Multimap; -import com.google.common.collect.Multimaps; -import com.google.common.collect.Multiset; -import com.google.common.collect.Multisets; -import com.google.common.collect.MutableClassToInstanceMap; -import com.google.common.collect.Ordering; -import com.google.common.collect.Range; -import com.google.common.collect.RangeSet; -import com.google.common.collect.Sets; -import com.google.common.collect.Table; -import com.google.common.collect.Tables; -import com.google.common.collect.TreeRangeSet; +import com.google.common.collect.*; -public class GuavaCollectionTypesUnitTest { - - @Test - public void whenCreateList_thenCreated() { - final List names = Lists.newArrayList("John", "Adam", "Jane"); - - names.add("Tom"); - assertEquals(4, names.size()); - - names.remove("Adam"); - assertThat(names, contains("John", "Jane", "Tom")); - } - - @Test - public void whenReverseList_thenReversed() { - final List names = Lists.newArrayList("John", "Adam", "Jane"); - - final List reversed = Lists.reverse(names); - assertThat(reversed, contains("Jane", "Adam", "John")); - } - - @Test - public void whenCreateCharacterListFromString_thenCreated() { - final List chars = Lists.charactersOf("John"); - - assertEquals(4, chars.size()); - assertThat(chars, contains('J', 'o', 'h', 'n')); - } - - @Test - public void whenPartitionList_thenPartitioned() { - final List names = Lists.newArrayList("John", "Jane", "Adam", "Tom", "Viki", "Tyler"); - final List> result = Lists.partition(names, 2); - - assertEquals(3, result.size()); - assertThat(result.get(0), contains("John", "Jane")); - assertThat(result.get(1), contains("Adam", "Tom")); - assertThat(result.get(2), contains("Viki", "Tyler")); - } - - @Test - public void whenRemoveDuplicatesFromList_thenRemoved() { - final List chars = Lists.newArrayList('h', 'e', 'l', 'l', 'o'); - assertEquals(5, chars.size()); - - final List result = ImmutableSet.copyOf(chars).asList(); - assertThat(result, contains('h', 'e', 'l', 'o')); - } - - @Test - public void whenRemoveNullFromList_thenRemoved() { - final List names = Lists.newArrayList("John", null, "Adam", null, "Jane"); - Iterables.removeIf(names, Predicates.isNull()); - - assertEquals(3, names.size()); - assertThat(names, contains("John", "Adam", "Jane")); - } - - @Test - public void whenCreateImmutableList_thenCreated() { - final List names = Lists.newArrayList("John", "Adam", "Jane"); - - names.add("Tom"); - assertEquals(4, names.size()); - - final ImmutableList immutable = ImmutableList.copyOf(names); - assertThat(immutable, contains("John", "Adam", "Jane", "Tom")); - } +public class GuavaMapsUnitTest { @Test public void whenCreateImmutableMap_thenCreated() { diff --git a/guava-collections/src/test/java/org/baeldung/guava/GuavaMultiMapUnitTest.java b/guava-collections-map/src/test/java/com/baeldung/guava/multimap/GuavaMultiMapUnitTest.java similarity index 97% rename from guava-collections/src/test/java/org/baeldung/guava/GuavaMultiMapUnitTest.java rename to guava-collections-map/src/test/java/com/baeldung/guava/multimap/GuavaMultiMapUnitTest.java index f51dcadefc..06e85e41e5 100644 --- a/guava-collections/src/test/java/org/baeldung/guava/GuavaMultiMapUnitTest.java +++ b/guava-collections-map/src/test/java/com/baeldung/guava/multimap/GuavaMultiMapUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.guava; +package com.baeldung.guava.multimap; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; diff --git a/guava-collections/src/test/java/org/baeldung/guava/GuavaRangeMapUnitTest.java b/guava-collections-map/src/test/java/com/baeldung/guava/rangemap/GuavaRangeMapUnitTest.java similarity index 99% rename from guava-collections/src/test/java/org/baeldung/guava/GuavaRangeMapUnitTest.java rename to guava-collections-map/src/test/java/com/baeldung/guava/rangemap/GuavaRangeMapUnitTest.java index c0c5efea23..f221a2dcf8 100644 --- a/guava-collections/src/test/java/org/baeldung/guava/GuavaRangeMapUnitTest.java +++ b/guava-collections-map/src/test/java/com/baeldung/guava/rangemap/GuavaRangeMapUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.guava; +package com.baeldung.guava.rangemap; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; diff --git a/guava-collections-set/README.md b/guava-collections-set/README.md index c36d9e0b61..2e8e1ecdd0 100644 --- a/guava-collections-set/README.md +++ b/guava-collections-set/README.md @@ -1,8 +1,10 @@ -# Guava +## Guava Collections Set + +This module contains articles about Google Guava sets ## Relevant Articles: -- [Guava – Sets](http://www.baeldung.com/guava-sets) -- [Guide to Guava RangeSet](http://www.baeldung.com/guava-rangeset) -- [Guava Set + Function = Map](http://www.baeldung.com/guava-set-function-map-tutorial) +- [Guava – Sets](https://www.baeldung.com/guava-sets) +- [Guide to Guava RangeSet](https://www.baeldung.com/guava-rangeset) +- [Guava Set + Function = Map](https://www.baeldung.com/guava-set-function-map-tutorial) - [Guide to Guava Multiset](https://www.baeldung.com/guava-multiset) diff --git a/guava-collections/README.md b/guava-collections/README.md index e919a98c2b..51731d7db7 100644 --- a/guava-collections/README.md +++ b/guava-collections/README.md @@ -1,20 +1,16 @@ -========= - -## Guava and Hamcrest Cookbooks and Examples +## Guava Collections +This module contains articles about Google Guava collections ### Relevant Articles: -- [Guava Collections Cookbook](http://www.baeldung.com/guava-collections) -- [Guava Ordering Cookbook](http://www.baeldung.com/guava-order) -- [Hamcrest Collections Cookbook](http://www.baeldung.com/hamcrest-collections-arrays) -- [Partition a List in Java](http://www.baeldung.com/java-list-split) -- [Filtering and Transforming Collections in Guava](http://www.baeldung.com/guava-filter-and-transform-a-collection) -- [Guava – Join and Split Collections](http://www.baeldung.com/guava-joiner-and-splitter-tutorial) -- [Guava – Lists](http://www.baeldung.com/guava-lists) -- [Guava – Maps](http://www.baeldung.com/guava-maps) -- [Guide to Guava Multimap](http://www.baeldung.com/guava-multimap) -- [Guide to Guava RangeMap](http://www.baeldung.com/guava-rangemap) -- [Guide to Guava MinMaxPriorityQueue and EvictingQueue](http://www.baeldung.com/guava-minmax-priority-queue-and-evicting-queue) -- [Initialize a HashMap in Java](https://www.baeldung.com/java-initialize-hashmap) -- [Guide to Guava Table](http://www.baeldung.com/guava-table) -- [Guide to Guava ClassToInstanceMap](http://www.baeldung.com/guava-class-to-instance-map) \ No newline at end of file + +- [Guava Collections Cookbook](https://www.baeldung.com/guava-collections) +- [Guava Ordering Cookbook](https://www.baeldung.com/guava-order) +- [Guide to Guava’s Ordering](https://www.baeldung.com/guava-ordering) +- [Hamcrest Collections Cookbook](https://www.baeldung.com/hamcrest-collections-arrays) +- [Partition a List in Java](https://www.baeldung.com/java-list-split) +- [Filtering and Transforming Collections in Guava](https://www.baeldung.com/guava-filter-and-transform-a-collection) +- [Guava – Join and Split Collections](https://www.baeldung.com/guava-joiner-and-splitter-tutorial) +- [Guava – Lists](https://www.baeldung.com/guava-lists) +- [Guide to Guava MinMaxPriorityQueue and EvictingQueue](https://www.baeldung.com/guava-minmax-priority-queue-and-evicting-queue) +- [Guide to Guava Table](https://www.baeldung.com/guava-table) diff --git a/guava-collections/pom.xml b/guava-collections/pom.xml index ecda3c9595..8cdb086029 100644 --- a/guava-collections/pom.xml +++ b/guava-collections/pom.xml @@ -43,7 +43,7 @@ - guava + guava-collections src/main/resources diff --git a/guava-collections/src/test/java/org/baeldung/guava/GuavaCollectionsExamplesUnitTest.java b/guava-collections/src/test/java/com/baeldung/guava/collections/GuavaCollectionsExamplesUnitTest.java similarity index 99% rename from guava-collections/src/test/java/org/baeldung/guava/GuavaCollectionsExamplesUnitTest.java rename to guava-collections/src/test/java/com/baeldung/guava/collections/GuavaCollectionsExamplesUnitTest.java index 7b5cef6055..86e8dea21c 100644 --- a/guava-collections/src/test/java/org/baeldung/guava/GuavaCollectionsExamplesUnitTest.java +++ b/guava-collections/src/test/java/com/baeldung/guava/collections/GuavaCollectionsExamplesUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.guava; +package com.baeldung.guava.collections; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; diff --git a/guava-collections/src/test/java/org/baeldung/guava/GuavaFilterTransformCollectionsUnitTest.java b/guava-collections/src/test/java/com/baeldung/guava/filtertransform/GuavaFilterTransformCollectionsUnitTest.java similarity index 99% rename from guava-collections/src/test/java/org/baeldung/guava/GuavaFilterTransformCollectionsUnitTest.java rename to guava-collections/src/test/java/com/baeldung/guava/filtertransform/GuavaFilterTransformCollectionsUnitTest.java index 8562193665..447149f002 100644 --- a/guava-collections/src/test/java/org/baeldung/guava/GuavaFilterTransformCollectionsUnitTest.java +++ b/guava-collections/src/test/java/com/baeldung/guava/filtertransform/GuavaFilterTransformCollectionsUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.guava; +package com.baeldung.guava.filtertransform; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsInAnyOrder; diff --git a/guava-collections/src/test/java/org/baeldung/guava/GuavaStringUnitTest.java b/guava-collections/src/test/java/com/baeldung/guava/joinsplit/GuavaStringUnitTest.java similarity index 99% rename from guava-collections/src/test/java/org/baeldung/guava/GuavaStringUnitTest.java rename to guava-collections/src/test/java/com/baeldung/guava/joinsplit/GuavaStringUnitTest.java index a08efd7c31..73c4c3291e 100644 --- a/guava-collections/src/test/java/org/baeldung/guava/GuavaStringUnitTest.java +++ b/guava-collections/src/test/java/com/baeldung/guava/joinsplit/GuavaStringUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.guava; +package com.baeldung.guava.joinsplit; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsString; diff --git a/guava-collections/src/test/java/com/baeldung/guava/lists/GuavaListsUnitTest.java b/guava-collections/src/test/java/com/baeldung/guava/lists/GuavaListsUnitTest.java new file mode 100644 index 0000000000..2f414dcdb1 --- /dev/null +++ b/guava-collections/src/test/java/com/baeldung/guava/lists/GuavaListsUnitTest.java @@ -0,0 +1,82 @@ +package com.baeldung.guava.lists; + +import com.google.common.base.Predicates; +import com.google.common.collect.*; +import org.junit.Test; + +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; +import static org.hamcrest.Matchers.contains; + +public class GuavaListsUnitTest { + + @Test + public void whenCreateList_thenCreated() { + final List names = Lists.newArrayList("John", "Adam", "Jane"); + + names.add("Tom"); + assertEquals(4, names.size()); + + names.remove("Adam"); + assertThat(names, contains("John", "Jane", "Tom")); + } + + @Test + public void whenReverseList_thenReversed() { + final List names = Lists.newArrayList("John", "Adam", "Jane"); + + final List reversed = Lists.reverse(names); + assertThat(reversed, contains("Jane", "Adam", "John")); + } + + @Test + public void whenCreateCharacterListFromString_thenCreated() { + final List chars = Lists.charactersOf("John"); + + assertEquals(4, chars.size()); + assertThat(chars, contains('J', 'o', 'h', 'n')); + } + + @Test + public void whenPartitionList_thenPartitioned() { + final List names = Lists.newArrayList("John", "Jane", "Adam", "Tom", "Viki", "Tyler"); + final List> result = Lists.partition(names, 2); + + assertEquals(3, result.size()); + assertThat(result.get(0), contains("John", "Jane")); + assertThat(result.get(1), contains("Adam", "Tom")); + assertThat(result.get(2), contains("Viki", "Tyler")); + } + + @Test + public void whenRemoveDuplicatesFromList_thenRemoved() { + final List chars = Lists.newArrayList('h', 'e', 'l', 'l', 'o'); + assertEquals(5, chars.size()); + + final List result = ImmutableSet.copyOf(chars).asList(); + assertThat(result, contains('h', 'e', 'l', 'o')); + } + + @Test + public void whenRemoveNullFromList_thenRemoved() { + final List names = Lists.newArrayList("John", null, "Adam", null, "Jane"); + Iterables.removeIf(names, Predicates.isNull()); + + assertEquals(3, names.size()); + assertThat(names, contains("John", "Adam", "Jane")); + } + + @Test + public void whenCreateImmutableList_thenCreated() { + final List names = Lists.newArrayList("John", "Adam", "Jane"); + + names.add("Tom"); + assertEquals(4, names.size()); + + final ImmutableList immutable = ImmutableList.copyOf(names); + assertThat(immutable, contains("John", "Adam", "Jane", "Tom")); + } + +} diff --git a/guava-collections/src/test/java/org/baeldung/guava/GuavaOrderingExamplesUnitTest.java b/guava-collections/src/test/java/com/baeldung/guava/ordering/GuavaOrderingExamplesUnitTest.java similarity index 99% rename from guava-collections/src/test/java/org/baeldung/guava/GuavaOrderingExamplesUnitTest.java rename to guava-collections/src/test/java/com/baeldung/guava/ordering/GuavaOrderingExamplesUnitTest.java index b8be06deb4..46ceccd7ba 100644 --- a/guava-collections/src/test/java/org/baeldung/guava/GuavaOrderingExamplesUnitTest.java +++ b/guava-collections/src/test/java/com/baeldung/guava/ordering/GuavaOrderingExamplesUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.guava; +package com.baeldung.guava.ordering; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.nullValue; diff --git a/guava-collections/src/test/java/org/baeldung/guava/GuavaOrderingUnitTest.java b/guava-collections/src/test/java/com/baeldung/guava/ordering/GuavaOrderingUnitTest.java similarity index 98% rename from guava-collections/src/test/java/org/baeldung/guava/GuavaOrderingUnitTest.java rename to guava-collections/src/test/java/com/baeldung/guava/ordering/GuavaOrderingUnitTest.java index dd250898fd..73d464bde5 100644 --- a/guava-collections/src/test/java/org/baeldung/guava/GuavaOrderingUnitTest.java +++ b/guava-collections/src/test/java/com/baeldung/guava/ordering/GuavaOrderingUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.guava; +package com.baeldung.guava.ordering; import com.google.common.base.Function; import com.google.common.collect.Ordering; diff --git a/guava-collections/src/test/java/org/baeldung/java/CollectionApachePartitionUnitTest.java b/guava-collections/src/test/java/com/baeldung/guava/partition/CollectionApachePartitionUnitTest.java similarity index 97% rename from guava-collections/src/test/java/org/baeldung/java/CollectionApachePartitionUnitTest.java rename to guava-collections/src/test/java/com/baeldung/guava/partition/CollectionApachePartitionUnitTest.java index 1071d4a5fb..1cb566dd6b 100644 --- a/guava-collections/src/test/java/org/baeldung/java/CollectionApachePartitionUnitTest.java +++ b/guava-collections/src/test/java/com/baeldung/guava/partition/CollectionApachePartitionUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.java; +package com.baeldung.guava.partition; import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertThat; diff --git a/guava-collections/src/test/java/org/baeldung/java/CollectionGuavaPartitionUnitTest.java b/guava-collections/src/test/java/com/baeldung/guava/partition/CollectionGuavaPartitionUnitTest.java similarity index 98% rename from guava-collections/src/test/java/org/baeldung/java/CollectionGuavaPartitionUnitTest.java rename to guava-collections/src/test/java/com/baeldung/guava/partition/CollectionGuavaPartitionUnitTest.java index c4ddb35da2..8eb259b490 100644 --- a/guava-collections/src/test/java/org/baeldung/java/CollectionGuavaPartitionUnitTest.java +++ b/guava-collections/src/test/java/com/baeldung/guava/partition/CollectionGuavaPartitionUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.java; +package com.baeldung.guava.partition; import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertThat; diff --git a/guava-collections/src/test/java/org/baeldung/java/CollectionJavaPartitionUnitTest.java b/guava-collections/src/test/java/com/baeldung/guava/partition/CollectionJavaPartitionUnitTest.java similarity index 98% rename from guava-collections/src/test/java/org/baeldung/java/CollectionJavaPartitionUnitTest.java rename to guava-collections/src/test/java/com/baeldung/guava/partition/CollectionJavaPartitionUnitTest.java index 63583987ea..d62ca275c1 100644 --- a/guava-collections/src/test/java/org/baeldung/java/CollectionJavaPartitionUnitTest.java +++ b/guava-collections/src/test/java/com/baeldung/guava/partition/CollectionJavaPartitionUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.java; +package com.baeldung.guava.partition; import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertThat; diff --git a/guava-collections/src/test/java/org/baeldung/guava/EvictingQueueUnitTest.java b/guava-collections/src/test/java/com/baeldung/guava/queues/EvictingQueueUnitTest.java similarity index 95% rename from guava-collections/src/test/java/org/baeldung/guava/EvictingQueueUnitTest.java rename to guava-collections/src/test/java/com/baeldung/guava/queues/EvictingQueueUnitTest.java index e4d29d2e92..b9abef8d1f 100644 --- a/guava-collections/src/test/java/org/baeldung/guava/EvictingQueueUnitTest.java +++ b/guava-collections/src/test/java/com/baeldung/guava/queues/EvictingQueueUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.guava; +package com.baeldung.guava.queues; import com.google.common.collect.EvictingQueue; diff --git a/guava-collections/src/test/java/org/baeldung/guava/MinMaxPriorityQueueUnitTest.java b/guava-collections/src/test/java/com/baeldung/guava/queues/MinMaxPriorityQueueUnitTest.java similarity index 97% rename from guava-collections/src/test/java/org/baeldung/guava/MinMaxPriorityQueueUnitTest.java rename to guava-collections/src/test/java/com/baeldung/guava/queues/MinMaxPriorityQueueUnitTest.java index 1c4df03c86..95446e0d44 100644 --- a/guava-collections/src/test/java/org/baeldung/guava/MinMaxPriorityQueueUnitTest.java +++ b/guava-collections/src/test/java/com/baeldung/guava/queues/MinMaxPriorityQueueUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.guava; +package com.baeldung.guava.queues; import com.google.common.collect.MinMaxPriorityQueue; diff --git a/guava-collections/src/test/java/org/baeldung/guava/GuavaTableUnitTest.java b/guava-collections/src/test/java/com/baeldung/guava/table/GuavaTableUnitTest.java similarity index 99% rename from guava-collections/src/test/java/org/baeldung/guava/GuavaTableUnitTest.java rename to guava-collections/src/test/java/com/baeldung/guava/table/GuavaTableUnitTest.java index 28e132074e..e9a9560afd 100644 --- a/guava-collections/src/test/java/org/baeldung/guava/GuavaTableUnitTest.java +++ b/guava-collections/src/test/java/com/baeldung/guava/table/GuavaTableUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.guava; +package com.baeldung.guava.table; import static org.assertj.core.api.Assertions.*; import java.util.List; diff --git a/guava-collections/src/test/java/org/baeldung/hamcrest/HamcrestExamplesUnitTest.java b/guava-collections/src/test/java/com/baeldung/hamcrest/HamcrestExamplesUnitTest.java similarity index 99% rename from guava-collections/src/test/java/org/baeldung/hamcrest/HamcrestExamplesUnitTest.java rename to guava-collections/src/test/java/com/baeldung/hamcrest/HamcrestExamplesUnitTest.java index 82b6b8c87c..820f065957 100644 --- a/guava-collections/src/test/java/org/baeldung/hamcrest/HamcrestExamplesUnitTest.java +++ b/guava-collections/src/test/java/com/baeldung/hamcrest/HamcrestExamplesUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.hamcrest; +package com.baeldung.hamcrest; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsInAnyOrder; diff --git a/guava-io/README.md b/guava-io/README.md index df7775a36d..81188295e7 100644 --- a/guava-io/README.md +++ b/guava-io/README.md @@ -1,4 +1,8 @@ +## Guava IO + +This module contains articles about input/output (IO) with Google Guava + ### 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) +- [Using Guava CountingOutputStream](https://www.baeldung.com/guava-counting-outputstream) +- [Guava – Write to File, Read from File](https://www.baeldung.com/guava-write-to-file-read-from-file) diff --git a/guava-modules/README.md b/guava-modules/README.md index 79e45a89e7..898b8b7d9f 100644 --- a/guava-modules/README.md +++ b/guava-modules/README.md @@ -1,3 +1,4 @@ - ## Guava Modules +This module contains other modules about Google Guava + diff --git a/guava/README.md b/guava/README.md index d3bbbf6de5..c67a3604ea 100644 --- a/guava/README.md +++ b/guava/README.md @@ -1,15 +1,15 @@ +## Guava -## Guava Examples +This module contains articles a Google Guava ### Relevant Articles: -- [Guava Functional Cookbook](http://www.baeldung.com/guava-functions-predicates) -- [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) -- [Introduction to Guava Memoizer](http://www.baeldung.com/guava-memoizer) -- [Guide to Guava’s EventBus](http://www.baeldung.com/guava-eventbus) -- [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) -- [Quick Guide to the Guava RateLimiter](http://www.baeldung.com/guava-rate-limiter) +- [Guava Functional Cookbook](https://www.baeldung.com/guava-functions-predicates) +- [Guide to Guava’s PreConditions](https://www.baeldung.com/guava-preconditions) +- [Introduction to Guava CacheLoader](https://www.baeldung.com/guava-cacheloader) +- [Introduction to Guava Memoizer](https://www.baeldung.com/guava-memoizer) +- [Guide to Guava’s EventBus](https://www.baeldung.com/guava-eventbus) +- [Guide to Guava’s Reflection Utilities](https://www.baeldung.com/guava-reflection) +- [Guide to Mathematical Utilities in Guava](https://www.baeldung.com/guava-math) +- [Bloom Filter in Java using Guava](https://www.baeldung.com/guava-bloom-filter) +- [Quick Guide to the Guava RateLimiter](https://www.baeldung.com/guava-rate-limiter) diff --git a/guice/README.md b/guice/README.md index 77c788c363..712639dfce 100644 --- a/guice/README.md +++ b/guice/README.md @@ -1,5 +1,8 @@ -## Google Guice Tutorials Project +## Google Guice + +This module contains articles about Google Guice ### Relevant Articles -- [Guide to Google Guice](http://www.baeldung.com/guice) + +- [Guide to Google Guice](https://www.baeldung.com/guice) - [Guice vs Spring – Dependency Injection](https://www.baeldung.com/guice-spring-dependency-injection) diff --git a/hazelcast/README.md b/hazelcast/README.md index 7adb13f2af..a37009ef7e 100644 --- a/hazelcast/README.md +++ b/hazelcast/README.md @@ -1,3 +1,7 @@ +## Hazelcast + +This module contains articles about Hazelcast + ### Relevant Articles: -- [Guide to Hazelcast with Java](http://www.baeldung.com/java-hazelcast) +- [Guide to Hazelcast with Java](https://www.baeldung.com/java-hazelcast) - [Introduction to Hazelcast Jet](https://www.baeldung.com/hazelcast-jet) diff --git a/helidon/README.md b/helidon/README.md index a092faf9f2..fa5bade4fe 100644 --- a/helidon/README.md +++ b/helidon/README.md @@ -1,3 +1,7 @@ +## Helidon + +This module contains articles about Helidon + ### Relevant articles - [Microservices with Oracle Helidon](https://www.baeldung.com/microservices-oracle-helidon) diff --git a/httpclient-simple/README.md b/httpclient-simple/README.md index e3535a133e..098d5f278e 100644 --- a/httpclient-simple/README.md +++ b/httpclient-simple/README.md @@ -1,12 +1,15 @@ -========= -## This module contains articles that are part of the HTTPClient Ebook +## HTTPClient Ebook -- [HttpClient 4 – Get the Status Code](http://www.baeldung.com/httpclient-status-code) -- [HttpClient with SSL](http://www.baeldung.com/httpclient-ssl) -- [HttpClient Timeout](http://www.baeldung.com/httpclient-timeout) -- [HttpClient 4 – Send Custom Cookie](http://www.baeldung.com/httpclient-4-cookies) -- [Custom HTTP Header with the HttpClient](http://www.baeldung.com/httpclient-custom-http-header) -- [HttpClient Basic Authentication](http://www.baeldung.com/httpclient-4-basic-authentication) +This module contains articles about HTTPClient that are part of the HTTPClient Ebook. + +### Relevant Articles + +- [HttpClient 4 – Get the Status Code](https://www.baeldung.com/httpclient-status-code) +- [HttpClient with SSL](https://www.baeldung.com/httpclient-ssl) +- [HttpClient Timeout](https://www.baeldung.com/httpclient-timeout) +- [HttpClient 4 – Send Custom Cookie](https://www.baeldung.com/httpclient-4-cookies) +- [Custom HTTP Header with the HttpClient](https://www.baeldung.com/httpclient-custom-http-header) +- [HttpClient Basic Authentication](https://www.baeldung.com/httpclient-4-basic-authentication) - [Posting with HttpClient](https://www.baeldung.com/httpclient-post-http-request) diff --git a/httpclient/README.md b/httpclient/README.md index a5fc29b089..678b195965 100644 --- a/httpclient/README.md +++ b/httpclient/README.md @@ -1,19 +1,20 @@ -========= -## HttpClient 4.x Cookbooks and Examples +## HttpClient 4.x + +This module contains articles about HttpClient 4.x ###The Course -The "REST With Spring" Classes: http://bit.ly/restwithspring +The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: -- [HttpClient 4 – Cancel Request](http://www.baeldung.com/httpclient-cancel-request) -- [HttpClient 4 Cookbook](http://www.baeldung.com/httpclient4) -- [Unshorten URLs with HttpClient](http://www.baeldung.com/unshorten-url-httpclient) -- [HttpClient 4 – Follow Redirects for POST](http://www.baeldung.com/httpclient-redirect-on-http-post) -- [Multipart Upload with HttpClient 4](http://www.baeldung.com/httpclient-multipart-upload) -- [HttpAsyncClient Tutorial](http://www.baeldung.com/httpasyncclient-tutorial) -- [HttpClient 4 Tutorial](http://www.baeldung.com/httpclient-guide) -- [Advanced HttpClient Configuration](http://www.baeldung.com/httpclient-advanced-config) -- [HttpClient 4 – Do Not Follow Redirects](http://www.baeldung.com/httpclient-stop-follow-redirect) -- [Custom User-Agent in HttpClient 4](http://www.baeldung.com/httpclient-user-agent-header) +- [HttpClient 4 – Cancel Request](https://www.baeldung.com/httpclient-cancel-request) +- [HttpClient 4 Cookbook](https://www.baeldung.com/httpclient4) +- [Unshorten URLs with HttpClient](https://www.baeldung.com/unshorten-url-httpclient) +- [HttpClient 4 – Follow Redirects for POST](https://www.baeldung.com/httpclient-redirect-on-http-post) +- [Multipart Upload with HttpClient 4](https://www.baeldung.com/httpclient-multipart-upload) +- [HttpAsyncClient Tutorial](https://www.baeldung.com/httpasyncclient-tutorial) +- [HttpClient 4 Tutorial](https://www.baeldung.com/httpclient-guide) +- [Advanced HttpClient Configuration](https://www.baeldung.com/httpclient-advanced-config) +- [HttpClient 4 – Do Not Follow Redirects](https://www.baeldung.com/httpclient-stop-follow-redirect) +- [Custom User-Agent in HttpClient 4](https://www.baeldung.com/httpclient-user-agent-header) diff --git a/hystrix/README.md b/hystrix/README.md index cc5c8a197f..d53baee957 100644 --- a/hystrix/README.md +++ b/hystrix/README.md @@ -1,3 +1,7 @@ +## Hystrix + +This module contains articles about Hystrix. + ### Relevant Articles: -- [Hystrix Integration with Existing Spring Application](http://www.baeldung.com/hystrix-integration-with-spring-aop) -- [Introduction to Hystrix](http://www.baeldung.com/introduction-to-hystrix) +- [Hystrix Integration with Existing Spring Application](https://www.baeldung.com/hystrix-integration-with-spring-aop) +- [Introduction to Hystrix](https://www.baeldung.com/introduction-to-hystrix) diff --git a/image-processing/README.md b/image-processing/README.md index 48604bdb1f..adb35c2318 100644 --- a/image-processing/README.md +++ b/image-processing/README.md @@ -1,2 +1,6 @@ +## Image Processing + +This module contains articles about image processing. + ### Relevant Articles: -- [Working with Images in Java](http://www.baeldung.com/java-images) +- [Working with Images in Java](https://www.baeldung.com/java-images) diff --git a/immutables/README.md b/immutables/README.md index b69a14f035..a93a342f9c 100644 --- a/immutables/README.md +++ b/immutables/README.md @@ -1,2 +1,6 @@ +## Immutables + +This module contains articles about the Immutables library. + ### Relevant Articles: -- [Introduction to Immutables](http://www.baeldung.com/immutables) +- [Introduction to Immutables](https://www.baeldung.com/immutables) diff --git a/jackson-2/README.md b/jackson-2/README.md index 920eaa91e8..5e0cb4ec37 100644 --- a/jackson-2/README.md +++ b/jackson-2/README.md @@ -1,7 +1,7 @@ -========= - ## Jackson Cookbooks and Examples +This module contains articles about Jackson. + ### The Course The "REST With Spring" Classes: http://bit.ly/restwithspring @@ -12,3 +12,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Converting JSON to CSV in Java](https://www.baeldung.com/java-converting-json-to-csv) - [Compare Two JSON Objects with Jackson](https://www.baeldung.com/jackson-compare-two-json-objects) - [Calling Default Serializer from Custom Serializer in Jackson](https://www.baeldung.com/jackson-call-default-serializer-from-custom-serializer) +- More articles: [[<-- prev]](/../jackson) diff --git a/jackson-simple/README.md b/jackson-simple/README.md index be647e22d5..302fcb5b05 100644 --- a/jackson-simple/README.md +++ b/jackson-simple/README.md @@ -1,13 +1,14 @@ -========= ### Jackson Articles that are also part of the e-book +This module contains articles about Jackson that are also part of the Jackson Ebook. + ###The Course The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: -- [Jackson Ignore Properties on Marshalling](http://www.baeldung.com/jackson-ignore-properties-on-serialization) -- [Jackson Unmarshalling json with Unknown Properties](http://www.baeldung.com/jackson-deserialize-json-unknown-properties) -- [Jackson Annotation Examples](http://www.baeldung.com/jackson-annotations) -- [Intro to the Jackson ObjectMapper](http://www.baeldung.com/jackson-object-mapper-tutorial) -- [Ignore Null Fields with Jackson](http://www.baeldung.com/jackson-ignore-null-fields) -- [Jackson – Change Name of Field](http://www.baeldung.com/jackson-name-of-property) +- [Jackson Ignore Properties on Marshalling](https://www.baeldung.com/jackson-ignore-properties-on-serialization) +- [Jackson Unmarshalling json with Unknown Properties](https://www.baeldung.com/jackson-deserialize-json-unknown-properties) +- [Jackson Annotation Examples](https://www.baeldung.com/jackson-annotations) +- [Intro to the Jackson ObjectMapper](https://www.baeldung.com/jackson-object-mapper-tutorial) +- [Ignore Null Fields with Jackson](https://www.baeldung.com/jackson-ignore-null-fields) +- [Jackson – Change Name of Field](https://www.baeldung.com/jackson-name-of-property) diff --git a/jackson/README.md b/jackson/README.md index 01d9419a27..f96a569617 100644 --- a/jackson/README.md +++ b/jackson/README.md @@ -1,35 +1,36 @@ -========= - ## Jackson Cookbooks and Examples +This module contains articles about Jackson. + ###The Course The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: -- [Jackson – Unmarshall to Collection/Array](http://www.baeldung.com/jackson-collection-array) -- [Jackson – Custom Serializer](http://www.baeldung.com/jackson-custom-serialization) -- [Getting Started with Custom Deserialization in Jackson](http://www.baeldung.com/jackson-deserialization) -- [Jackson Exceptions – Problems and Solutions](http://www.baeldung.com/jackson-exception) -- [Jackson Date](http://www.baeldung.com/jackson-serialize-dates) -- [Jackson – Bidirectional Relationships](http://www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion) -- [Jackson JSON Tutorial](http://www.baeldung.com/jackson) -- [Jackson – Working with Maps and nulls](http://www.baeldung.com/jackson-map-null-values-or-null-key) -- [Jackson – Decide What Fields Get Serialized/Deserialized](http://www.baeldung.com/jackson-field-serializable-deserializable-or-not) -- [Jackson vs Gson](http://www.baeldung.com/jackson-vs-gson) -- [XML Serialization and Deserialization with Jackson](http://www.baeldung.com/jackson-xml-serialization-and-deserialization) -- [More Jackson Annotations](http://www.baeldung.com/jackson-advanced-annotations) -- [Inheritance with Jackson](http://www.baeldung.com/jackson-inheritance) -- [Guide to @JsonFormat in Jackson](http://www.baeldung.com/jackson-jsonformat) -- [Using Optional with Jackson](http://www.baeldung.com/jackson-optional) -- [Map Serialization and Deserialization with Jackson](http://www.baeldung.com/jackson-map) -- [Jackson Streaming API](http://www.baeldung.com/jackson-streaming-api) -- [Jackson – JsonMappingException (No serializer found for class)](http://www.baeldung.com/jackson-jsonmappingexception) -- [How To Serialize Enums as JSON Objects with Jackson](http://www.baeldung.com/jackson-serialize-enums) -- [Jackson – Marshall String to JsonNode](http://www.baeldung.com/jackson-json-to-jsonnode) -- [Jackson – Unmarshall to Collection/Array](http://www.baeldung.com/jackson-collection-array) -- [Serialize Only Fields that meet a Custom Criteria with Jackson](http://www.baeldung.com/jackson-serialize-field-custom-criteria) -- [Mapping Nested Values with Jackson](http://www.baeldung.com/jackson-nested-values) +- [Jackson – Unmarshall to Collection/Array](https://www.baeldung.com/jackson-collection-array) +- [Jackson – Custom Serializer](https://www.baeldung.com/jackson-custom-serialization) +- [Getting Started with Custom Deserialization in Jackson](https://www.baeldung.com/jackson-deserialization) +- [Jackson Exceptions – Problems and Solutions](https://www.baeldung.com/jackson-exception) +- [Jackson Date](https://www.baeldung.com/jackson-serialize-dates) +- [Jackson – Bidirectional Relationships](https://www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion) +- [Jackson JSON Tutorial](https://www.baeldung.com/jackson) +- [Jackson – Working with Maps and nulls](https://www.baeldung.com/jackson-map-null-values-or-null-key) +- [Jackson – Decide What Fields Get Serialized/Deserialized](https://www.baeldung.com/jackson-field-serializable-deserializable-or-not) +- [Jackson vs Gson](https://www.baeldung.com/jackson-vs-gson) +- [XML Serialization and Deserialization with Jackson](https://www.baeldung.com/jackson-xml-serialization-and-deserialization) +- [More Jackson Annotations](https://www.baeldung.com/jackson-advanced-annotations) +- [Inheritance with Jackson](https://www.baeldung.com/jackson-inheritance) +- [Guide to @JsonFormat in Jackson](https://www.baeldung.com/jackson-jsonformat) +- [Using Optional with Jackson](https://www.baeldung.com/jackson-optional) +- [Map Serialization and Deserialization with Jackson](https://www.baeldung.com/jackson-map) +- [Jackson Streaming API](https://www.baeldung.com/jackson-streaming-api) +- [Jackson – JsonMappingException (No serializer found for class)](https://www.baeldung.com/jackson-jsonmappingexception) +- [How To Serialize Enums as JSON Objects with Jackson](https://www.baeldung.com/jackson-serialize-enums) +- [Jackson – Marshall String to JsonNode](https://www.baeldung.com/jackson-json-to-jsonnode) +- [Jackson – Unmarshall to Collection/Array](https://www.baeldung.com/jackson-collection-array) +- [Serialize Only Fields that meet a Custom Criteria with Jackson](https://www.baeldung.com/jackson-serialize-field-custom-criteria) +- [Mapping Nested Values with Jackson](https://www.baeldung.com/jackson-nested-values) - [Convert XML to JSON Using Jackson](https://www.baeldung.com/jackson-convert-xml-json) - [Deserialize Immutable Objects with Jackson](https://www.baeldung.com/jackson-deserialize-immutable-objects) - [Mapping a Dynamic JSON Object with Jackson](https://www.baeldung.com/jackson-mapping-dynamic-object) +- More articles: [[next -->]](/../jackson-2) diff --git a/java-collections-conversions/README.md b/java-collections-conversions/README.md index 614f20f186..6d4f6ddb3a 100644 --- a/java-collections-conversions/README.md +++ b/java-collections-conversions/README.md @@ -1,14 +1,14 @@ -========= - ## Java Collections Cookbooks and Examples +This module contains articles about conversions among Collection types and arrays in Java. + ### Relevant Articles: -- [Converting between an Array and a List in Java](http://www.baeldung.com/convert-array-to-list-and-list-to-array) -- [Converting between an Array and a Set in Java](http://www.baeldung.com/convert-array-to-set-and-set-to-array) -- [Converting between a List and a Set in Java](http://www.baeldung.com/convert-list-to-set-and-set-to-list) -- [Convert a Map to an Array, List or Set in Java](http://www.baeldung.com/convert-map-values-to-array-list-set) -- [Converting a List to String in Java](http://www.baeldung.com/java-list-to-string) -- [How to Convert List to Map in Java](http://www.baeldung.com/java-list-to-map) +- [Converting between an Array and a List in Java](https://www.baeldung.com/convert-array-to-list-and-list-to-array) +- [Converting between an Array and a Set in Java](https://www.baeldung.com/convert-array-to-set-and-set-to-array) +- [Converting between a List and a Set in Java](https://www.baeldung.com/convert-list-to-set-and-set-to-list) +- [Convert a Map to an Array, List or Set in Java](https://www.baeldung.com/convert-map-values-to-array-list-set) +- [Converting a List to String in Java](https://www.baeldung.com/java-list-to-string) +- [How to Convert List to Map in Java](https://www.baeldung.com/java-list-to-map) - [Array to String Conversions](https://www.baeldung.com/java-array-to-string) - [Converting a Collection to ArrayList in Java](https://www.baeldung.com/java-convert-collection-arraylist) - [Java 8 Collectors toMap](https://www.baeldung.com/java-collectors-tomap) diff --git a/java-collections-maps-2/README.md b/java-collections-maps-2/README.md index 7aef942ff0..0db83fbae7 100644 --- a/java-collections-maps-2/README.md +++ b/java-collections-maps-2/README.md @@ -1,6 +1,11 @@ -## Relevant Articles: +## Java Collections Cookbooks and Examples + +This module contains articles about Map data structures in Java. + +### Relevant Articles: - [Map of Primitives in Java](https://www.baeldung.com/java-map-primitives) - [Copying a HashMap in Java](https://www.baeldung.com/java-copy-hashmap) +- [Guide to 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) @@ -9,3 +14,4 @@ - [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) +- More articles: [[<-- prev>]](/../java-collections-maps) diff --git a/java-collections-maps-2/src/main/java/com/baeldung/map/Product.java b/java-collections-maps-2/src/main/java/com/baeldung/map/Product.java new file mode 100644 index 0000000000..5559895730 --- /dev/null +++ b/java-collections-maps-2/src/main/java/com/baeldung/map/Product.java @@ -0,0 +1,133 @@ +package com.baeldung.map; + +import java.util.*; + +public class Product { + + private String name; + private String description; + private List tags; + + public Product(String name, String description) { + this.name = name; + this.description = description; + this.tags = new ArrayList<>(); + } + + public String getName() { + return name; + } + + public String getDescription() { + return description; + } + + public List getTags() { + return tags; + } + + public Product addTagsOfOtherProdcut(Product product) { + this.tags.addAll(product.getTags()); + return this; + } + + @Override + public boolean equals(Object o) { + + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + Product product = (Product) o; + return Objects.equals(name, product.name) && + Objects.equals(description, product.description); + } + + @Override + public int hashCode() { + return Objects.hash(name, description); + } + + public static void forEach() { + + HashMap productsByName = new HashMap<>(); + productsByName.forEach( (key, product) + -> System.out.println("Key: " + key + " Product:" + product.getDescription()) + //do something with the key and value + ); + + //Prior to Java 8: + for(Map.Entry entry : productsByName.entrySet()) { + Product product = entry.getValue(); + String key = entry.getKey(); + //do something with the key and value + } + } + + public static void getOrDefault() { + + HashMap productsByName = new HashMap<>(); + Product chocolate = new Product("chocolate", "something sweet"); + Product defaultProduct = productsByName.getOrDefault("horse carriage", chocolate); + Product bike = productsByName.getOrDefault("E-Bike", chocolate); + + //Prior to Java 8: + Product bike2 = productsByName.containsKey("E-Bike") + ? productsByName.get("E-Bike") + : chocolate; + Product defaultProduct2 = productsByName.containsKey("horse carriage") + ? productsByName.get("horse carriage") + : chocolate; + } + + public static void putIfAbsent() { + + HashMap productsByName = new HashMap<>(); + Product chocolate = new Product("chocolate", "something sweet"); + productsByName.putIfAbsent("E-Bike", chocolate); + + //Prior to Java 8: + if(productsByName.containsKey("E-Bike")) { + productsByName.put("E-Bike", chocolate); + } + } + + public static void merge() { + + HashMap productsByName = new HashMap<>(); + Product eBike2 = new Product("E-Bike", "A bike with a battery"); + eBike2.getTags().add("sport"); + productsByName.merge("E-Bike", eBike2, Product::addTagsOfOtherProdcut); + + //Prior to Java 8: + if(productsByName.containsKey("E-Bike")) { + productsByName.get("E-Bike").addTagsOfOtherProdcut(eBike2); + } else { + productsByName.put("E-Bike", eBike2); + } + } + + public static void compute() { + + HashMap productsByName = new HashMap<>(); + Product eBike2 = new Product("E-Bike", "A bike with a battery"); + + productsByName.compute("E-Bike", (k,v) -> { + if(v != null) { + return v.addTagsOfOtherProdcut(eBike2); + } else { + return eBike2; + } + }); + + //Prior to Java 8: + if(productsByName.containsKey("E-Bike")) { + productsByName.get("E-Bike").addTagsOfOtherProdcut(eBike2); + } else { + productsByName.put("E-Bike", eBike2); + } + } +} diff --git a/java-collections-maps-2/src/test/java/com/baeldung/map/ProductUnitTest.java b/java-collections-maps-2/src/test/java/com/baeldung/map/ProductUnitTest.java new file mode 100644 index 0000000000..2015909870 --- /dev/null +++ b/java-collections-maps-2/src/test/java/com/baeldung/map/ProductUnitTest.java @@ -0,0 +1,124 @@ +package com.baeldung.map; + +import org.junit.jupiter.api.Test; + +import java.util.HashMap; + +import static org.junit.jupiter.api.Assertions.*; + +class ProductUnitTest { + + + @Test + public void getExistingValue() { + HashMap productsByName = new HashMap<>(); + + Product eBike = new Product("E-Bike", "A bike with a battery"); + Product roadBike = new Product("Road bike", "A bike for competition"); + + productsByName.put(eBike.getName(), eBike); + productsByName.put(roadBike.getName(), roadBike); + + Product nextPurchase = productsByName.get("E-Bike"); + + assertEquals("A bike with a battery", nextPurchase.getDescription()); + } + + @Test + public void getNonExistingValue() { + HashMap productsByName = new HashMap<>(); + + Product eBike = new Product("E-Bike", "A bike with a battery"); + Product roadBike = new Product("Road bike", "A bike for competition"); + + productsByName.put(eBike.getName(), eBike); + productsByName.put(roadBike.getName(), roadBike); + + Product nextPurchase = productsByName.get("Car"); + + assertNull(nextPurchase); + } + + @Test + public void getExistingValueAfterSameKeyInsertedTwice() { + HashMap productsByName = new HashMap<>(); + + Product eBike = new Product("E-Bike", "A bike with a battery"); + Product roadBike = new Product("Road bike", "A bike for competition"); + Product newEBike = new Product("E-Bike", "A bike with a better battery"); + + productsByName.put(eBike.getName(), eBike); + productsByName.put(roadBike.getName(), roadBike); + productsByName.put(newEBike.getName(), newEBike); + + Product nextPurchase = productsByName.get("E-Bike"); + + assertEquals("A bike with a better battery", nextPurchase.getDescription()); + } + + @Test + public void getExistingValueWithNullKey() { + HashMap productsByName = new HashMap<>(); + + Product defaultProduct = new Product("Chocolate", "At least buy chocolate"); + + productsByName.put(null, defaultProduct); + productsByName.put(defaultProduct.getName(), defaultProduct); + + Product nextPurchase = productsByName.get(null); + assertEquals("At least buy chocolate", nextPurchase.getDescription()); + + nextPurchase = productsByName.get("Chocolate"); + assertEquals("At least buy chocolate", nextPurchase.getDescription()); + } + + @Test + public void insertSameObjectWithDifferentKey() { + HashMap productsByName = new HashMap<>(); + + Product defaultProduct = new Product("Chocolate", "At least buy chocolate"); + + productsByName.put(null, defaultProduct); + productsByName.put(defaultProduct.getName(), defaultProduct); + + assertSame(productsByName.get(null), productsByName.get("Chocolate")); + } + + @Test + public void checkIfKeyExists() { + HashMap productsByName = new HashMap<>(); + + Product eBike = new Product("E-Bike", "A bike with a battery"); + + productsByName.put(eBike.getName(), eBike); + + assertTrue(productsByName.containsKey("E-Bike")); + } + + @Test + public void checkIfValueExists() { + HashMap productsByName = new HashMap<>(); + + Product eBike = new Product("E-Bike", "A bike with a battery"); + + productsByName.put(eBike.getName(), eBike); + + assertTrue(productsByName.containsValue(eBike)); + } + + @Test + public void removeExistingKey() { + HashMap productsByName = new HashMap<>(); + + Product eBike = new Product("E-Bike", "A bike with a battery"); + Product roadBike = new Product("Road bike", "A bike for competition"); + + productsByName.put(eBike.getName(), eBike); + productsByName.put(roadBike.getName(), roadBike); + + productsByName.remove("E-Bike"); + + assertNull(productsByName.get("E-Bike")); + } + +} diff --git a/java-collections-maps/README.md b/java-collections-maps/README.md index 3a6ad1d10c..87fefe1b9d 100644 --- a/java-collections-maps/README.md +++ b/java-collections-maps/README.md @@ -1,7 +1,7 @@ -========= - ## Java Collections Cookbooks and Examples +This module contains articles about Map data structures in Java. + ### Relevant Articles: - [Guide to the Guava BiMap](https://www.baeldung.com/guava-bimap) - [The Java HashMap Under the Hood](https://www.baeldung.com/java-hashmap) @@ -13,3 +13,4 @@ - [Comparing Two HashMaps in Java](https://www.baeldung.com/java-compare-hashmaps) - [Immutable Map Implementations in Java](https://www.baeldung.com/java-immutable-maps) - [Guide to Apache Commons MultiValuedMap](https://www.baeldung.com/apache-commons-multi-valued-map) +- More articles: [[next -->]](/../java-collections-maps-2) diff --git a/java-dates/README.md b/java-dates/README.md index 7da309924d..3a215f9094 100644 --- a/java-dates/README.md +++ b/java-dates/README.md @@ -3,25 +3,25 @@ ## Java Dates Cookbooks and Examples ### Relevant Articles: -- [TemporalAdjuster in Java](http://www.baeldung.com/java-temporal-adjuster) -- [Handling Daylight Savings Time in Java](http://www.baeldung.com/java-daylight-savings) -- [Period and Duration in Java](http://www.baeldung.com/java-period-duration) -- [Difference Between Two Dates in Java](http://www.baeldung.com/java-date-difference) -- [RegEx for matching Date Pattern in Java](http://www.baeldung.com/java-date-regular-expressions) -- [Migrating to the New Java 8 Date Time API](http://www.baeldung.com/migrating-to-java-8-date-time-api) -- [Introduction to the Java 8 Date/Time API](http://www.baeldung.com/java-8-date-time-intro) -- [Get the Current Date, Time and Timestamp in Java 8](http://www.baeldung.com/current-date-time-and-timestamp-in-java-8) -- [Get Date Without Time in Java](http://www.baeldung.com/java-date-without-time) -- [How to Get All Dates Between Two Dates?](http://www.baeldung.com/java-between-dates) -- [Convert Date to LocalDate or LocalDateTime and Back](http://www.baeldung.com/java-date-to-localdate-and-localdatetime) -- [Display All Time Zones With GMT And UTC in Java](http://www.baeldung.com/java-time-zones) -- [Extracting Year, Month and Day from Date in Java](http://www.baeldung.com/java-year-month-day) -- [Guide to java.util.GregorianCalendar](http://www.baeldung.com/java-gregorian-calendar) -- [Measure Elapsed Time in Java](http://www.baeldung.com/java-measure-elapsed-time) -- [How to Get the Start and the End of a Day using Java](http://www.baeldung.com/java-day-start-end) -- [Calculate Age in Java](http://www.baeldung.com/java-get-age) -- [Increment Date in Java](http://www.baeldung.com/java-increment-date) -- [Add Hours To a Date In Java](http://www.baeldung.com/java-add-hours-date) +- [TemporalAdjuster in Java](https://www.baeldung.com/java-temporal-adjuster) +- [Handling Daylight Savings Time in Java](https://www.baeldung.com/java-daylight-savings) +- [Period and Duration in Java](https://www.baeldung.com/java-period-duration) +- [Difference Between Two Dates in Java](https://www.baeldung.com/java-date-difference) +- [RegEx for matching Date Pattern in Java](https://www.baeldung.com/java-date-regular-expressions) +- [Migrating to the New Java 8 Date Time API](https://www.baeldung.com/migrating-to-java-8-date-time-api) +- [Introduction to the Java 8 Date/Time API](https://www.baeldung.com/java-8-date-time-intro) +- [Get the Current Date, Time and Timestamp in Java 8](https://www.baeldung.com/current-date-time-and-timestamp-in-java-8) +- [Get Date Without Time in Java](https://www.baeldung.com/java-date-without-time) +- [How to Get All Dates Between Two Dates?](https://www.baeldung.com/java-between-dates) +- [Convert Date to LocalDate or LocalDateTime and Back](https://www.baeldung.com/java-date-to-localdate-and-localdatetime) +- [Display All Time Zones With GMT And UTC in Java](https://www.baeldung.com/java-time-zones) +- [Extracting Year, Month and Day from Date in Java](https://www.baeldung.com/java-year-month-day) +- [Guide to java.util.GregorianCalendar](https://www.baeldung.com/java-gregorian-calendar) +- [Measure Elapsed Time in Java](https://www.baeldung.com/java-measure-elapsed-time) +- [How to Get the Start and the End of a Day using Java](https://www.baeldung.com/java-day-start-end) +- [Calculate Age in Java](https://www.baeldung.com/java-get-age) +- [Increment Date in Java](https://www.baeldung.com/java-increment-date) +- [Add Hours To a Date In Java](https://www.baeldung.com/java-add-hours-date) - [Guide to DateTimeFormatter](https://www.baeldung.com/java-datetimeformatter) - [Format ZonedDateTime to String](https://www.baeldung.com/java-format-zoned-datetime-string) - [Convert Between java.time.Instant and java.sql.Timestamp](https://www.baeldung.com/java-time-instant-to-java-sql-timestamp) @@ -29,4 +29,4 @@ - [A Guide to SimpleDateFormat](https://www.baeldung.com/java-simple-date-format) - [ZoneOffset in Java](https://www.baeldung.com/java-zone-offset) - [Differences Between ZonedDateTime and OffsetDateTime](https://www.baeldung.com/java-zoneddatetime-offsetdatetime) -- [Introduction to Joda-Time](http://www.baeldung.com/joda-time) +- [Introduction to Joda-Time](https://www.baeldung.com/joda-time) diff --git a/java-ee-8-security-api/README.md b/java-ee-8-security-api/README.md index 1735419236..b01a073e35 100644 --- a/java-ee-8-security-api/README.md +++ b/java-ee-8-security-api/README.md @@ -1,3 +1,7 @@ +## Java EE 8 Security API + +This module contains articles about the Security API in Java EE 8. + ### Relevant articles - - [Java EE 8 Security API](http://www.baeldung.com/java-ee-8-security) + - [Java EE 8 Security API](https://www.baeldung.com/java-ee-8-security) diff --git a/java-jdi/README.md b/java-jdi/README.md new file mode 100644 index 0000000000..c8c2d3e9ab --- /dev/null +++ b/java-jdi/README.md @@ -0,0 +1,7 @@ +## Java JDI + +This module contains articles about JDI, the Java Debug Interface. + +###Relevant articles + +- [An Intro to the Java Debug Interface (JDI)](https://www.baeldung.com/java-debug-interface) diff --git a/java-lite/README.md b/java-lite/README.md index a4e2edd49f..96fb6f1a93 100644 --- a/java-lite/README.md +++ b/java-lite/README.md @@ -1,4 +1,8 @@ +## JavaLite + +This module contains articles about JavaLite. + ### Relevant Articles: -- [A Guide to JavaLite – Building a RESTful CRUD application](http://www.baeldung.com/javalite-rest) -- [Introduction to ActiveWeb](http://www.baeldung.com/activeweb) +- [A Guide to JavaLite – Building a RESTful CRUD application](https://www.baeldung.com/javalite-rest) +- [Introduction to ActiveWeb](https://www.baeldung.com/activeweb) diff --git a/java-math/README.md b/java-math/README.md index b0921e55ae..49ff5afde1 100644 --- a/java-math/README.md +++ b/java-math/README.md @@ -1,4 +1,8 @@ -## Relevant articles: +## Java Math + +This module contains articles about math in Java. + +### Relevant articles: - [Calculate Factorial in Java](https://www.baeldung.com/java-calculate-factorial) - [Generate Combinations in Java](https://www.baeldung.com/java-combinations-algorithm) diff --git a/java-numbers-2/README.md b/java-numbers-2/README.md index 1d2919aa63..48f9acd32d 100644 --- a/java-numbers-2/README.md +++ b/java-numbers-2/README.md @@ -1,10 +1,16 @@ -## Relevant Articles +## Java Number Cookbooks and Examples + +This module contains articles about numbers in Java. + +### 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) +- [NaN in Java](https://www.baeldung.com/java-not-a-number) +- [Generating Prime Numbers in Java](https://www.baeldung.com/java-generate-prime-numbers) +- [Using Math.pow in Java](https://www.baeldung.com/java-math-pow) +- [Check If a Number Is Prime in Java](https://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) +- [Binary Numbers in Java](https://www.baeldung.com/java-binary-numbers) +- More articles: [[<-- prev]](/../java-numbers) diff --git a/java-numbers/README.md b/java-numbers/README.md index 7885232c46..eee6fceab1 100644 --- a/java-numbers/README.md +++ b/java-numbers/README.md @@ -1,7 +1,7 @@ -========= - ## Java Number Cookbooks and Examples +This module contains articles about numbers in Java. + ### Relevant Articles: - [Number of Digits in an Integer in Java](http://www.baeldung.com/java-number-of-digits-in-int) - [How to Round a Number to N Decimal Places in Java](http://www.baeldung.com/java-round-decimal-number) @@ -13,3 +13,4 @@ - [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) +- More articles: [[next -->]](/../java-numbers-2) diff --git a/java-rmi/README.md b/java-rmi/README.md index 4d12060395..244f986639 100644 --- a/java-rmi/README.md +++ b/java-rmi/README.md @@ -1,3 +1,7 @@ +## Java RMI + +This module contains articles about RMI (Remote Method Invocation) in Java. + ### Relevant articles -- [Getting Started with Java RMI](http://www.baeldung.com/java-rmi) +- [Getting Started with Java RMI](https://www.baeldung.com/java-rmi) diff --git a/java-spi/README.md b/java-spi/README.md index d2658c42fe..2ccef98a10 100644 --- a/java-spi/README.md +++ b/java-spi/README.md @@ -1,4 +1,7 @@ +## Java SPI + +This module contains articles about the SPI (Service Provider Interface) in Java. ### Relevant Articles: -- [Java Service Provider Interface](http://www.baeldung.com/java-spi) +- [Java Service Provider Interface](https://www.baeldung.com/java-spi) diff --git a/java-streams-2/README.md b/java-streams-2/README.md index 851d3d71e2..66fbe69ed4 100644 --- a/java-streams-2/README.md +++ b/java-streams-2/README.md @@ -1,4 +1,9 @@ +## Java Streams Cookbooks and Examples + +This module contains articles about the Stream API in Java. + ### Relevant Articles: - [Guide to Stream.reduce()](https://www.baeldung.com/java-stream-reduce) - [How to Break from Java Stream forEach](https://www.baeldung.com/java-break-stream-foreach) - [Java IntStream Conversions](https://www.baeldung.com/java-intstream-convert) +- More articles: [[<-- prev]](/java-streams) diff --git a/java-streams/README.md b/java-streams/README.md index 0c9588c47e..a57fdec7fa 100644 --- a/java-streams/README.md +++ b/java-streams/README.md @@ -1,20 +1,21 @@ -========= - ## Java Streams Cookbooks and Examples +This module contains articles about the Stream API in Java. + ### Relevant Articles: -- [The Java 8 Stream API Tutorial](http://www.baeldung.com/java-8-streams) -- [Introduction to Java 8 Streams](http://www.baeldung.com/java-8-streams-introduction) -- [Java 8 and Infinite Streams](http://www.baeldung.com/java-inifinite-streams) -- [Java 8 Stream findFirst() vs. findAny()](http://www.baeldung.com/java-stream-findfirst-vs-findany) -- [How to Get the Last Element of a Stream in Java?](http://www.baeldung.com/java-stream-last-element) -- [“Stream has already been operated upon or closed” Exception in Java](http://www.baeldung.com/java-stream-operated-upon-or-closed-exception) -- [Iterable to Stream in Java](http://www.baeldung.com/java-iterable-to-stream) -- [How to Iterate Over a Stream With Indices](http://www.baeldung.com/java-stream-indices) -- [Primitive Type Streams in Java 8](http://www.baeldung.com/java-8-primitive-streams) +- [The Java 8 Stream API Tutorial](https://www.baeldung.com/java-8-streams) +- [Introduction to Java 8 Streams](https://www.baeldung.com/java-8-streams-introduction) +- [Java 8 and Infinite Streams](https://www.baeldung.com/java-inifinite-streams) +- [Java 8 Stream findFirst() vs. findAny()](https://www.baeldung.com/java-stream-findfirst-vs-findany) +- [How to Get the Last Element of a Stream in Java?](https://www.baeldung.com/java-stream-last-element) +- [“Stream has already been operated upon or closed” Exception in Java](https://www.baeldung.com/java-stream-operated-upon-or-closed-exception) +- [Iterable to Stream in Java](https://www.baeldung.com/java-iterable-to-stream) +- [How to Iterate Over a Stream With Indices](https://www.baeldung.com/java-stream-indices) +- [Primitive Type Streams in Java 8](https://www.baeldung.com/java-8-primitive-streams) - [Stream Ordering in Java](https://www.baeldung.com/java-stream-ordering) - [Introduction to Protonpack](https://www.baeldung.com/java-protonpack) - [Java Stream Filter with Lambda Expression](https://www.baeldung.com/java-stream-filter-lambda) - [Counting Matches on a Stream Filter](https://www.baeldung.com/java-stream-filter-count) - [Java 8 Streams peek() API](https://www.baeldung.com/java-streams-peek-api) - [Working With Maps Using Streams](https://www.baeldung.com/java-maps-streams) +- More articles: [[next -->]](/java-streams-2) diff --git a/java-strings-2/README.md b/java-strings-2/README.md index ad0a46fd96..82f33997c5 100644 --- a/java-strings-2/README.md +++ b/java-strings-2/README.md @@ -1,10 +1,14 @@ -## Relevant Articles: +## Java Strings Cookbooks and Examples + +This module contains articles about strings in Java. + +### Relevant Articles: - [Java Localization – Formatting Messages](https://www.baeldung.com/java-localization-messages-formatting) - [Check If a String Contains a Substring](https://www.baeldung.com/java-string-contains-substring) - [Removing Stopwords from a String in Java](https://www.baeldung.com/java-string-remove-stopwords) -- [Java – Generate Random String](http://www.baeldung.com/java-random-string) -- [Image to Base64 String Conversion](http://www.baeldung.com/java-base64-image-string) +- [Java – Generate Random String](https://www.baeldung.com/java-random-string) +- [Image to Base64 String Conversion](https://www.baeldung.com/java-base64-image-string) - [Java Base64 Encoding and Decoding](https://www.baeldung.com/java-base64-encode-and-decode) - [Generate a Secure Random Password in Java](https://www.baeldung.com/java-generate-secure-password) - [Removing Repeated Characters from a String](https://www.baeldung.com/java-remove-repeated-char) @@ -12,7 +16,7 @@ - [Pad a String with Zeros or Spaces in Java](https://www.baeldung.com/java-pad-string) - [Remove Emojis from a Java String](https://www.baeldung.com/java-string-remove-emojis) - [Convert a Comma Separated String to a List in Java](https://www.baeldung.com/java-string-with-separator-to-list) -- [Guide to java.util.Formatter](http://www.baeldung.com/java-string-formatter) +- [Guide to java.util.Formatter](https://www.baeldung.com/java-string-formatter) - [Remove Leading and Trailing Characters from a String](https://www.baeldung.com/java-remove-trailing-characters) - [Concatenating Strings In Java](https://www.baeldung.com/java-strings-concatenation) - [Java String Interview Questions and Answers](https://www.baeldung.com/java-string-interview-questions) @@ -24,3 +28,5 @@ - [Checking If a String Is a Repeated Substring](https://www.baeldung.com/java-repeated-substring) - [How to Reverse a String in Java](https://www.baeldung.com/java-reverse-string) - [String toLowerCase and toUpperCase Methods in Java](https://www.baeldung.com/java-string-convert-case) +- [Guide to StreamTokenizer](https://www.baeldung.com/java-streamtokenizer) +- More articles: [[<-- prev>]](/java-strings) [[next -->]](/java-strings-3) diff --git a/java-strings-3/README.md b/java-strings-3/README.md index 6c2339028f..f0aaddefcb 100644 --- a/java-strings-3/README.md +++ b/java-strings-3/README.md @@ -1,3 +1,8 @@ -## Relevant Articles: +## Java Strings Cookbooks and Examples + +This module contains articles about strings in Java. + +### Relevant Articles: - [Converting Java String to Double](https://www.baeldung.com/java-string-to-double) +- More articles: [[<-- prev>]](/java-strings-2) diff --git a/java-strings-ops/README.md b/java-strings-ops/README.md index d909f171a7..31c5f48022 100644 --- a/java-strings-ops/README.md +++ b/java-strings-ops/README.md @@ -1,22 +1,22 @@ -========= - ## Java Strings Cookbooks and Examples +This module contains articles about operations on strings in Java. + ### Relevant Articles: -- [Convert char to String in Java](http://www.baeldung.com/java-convert-char-to-string) -- [Convert String to int or Integer in Java](http://www.baeldung.com/java-convert-string-to-int-or-integer) +- [Convert char to String in Java](https://www.baeldung.com/java-convert-char-to-string) +- [Convert String to int or Integer in Java](https://www.baeldung.com/java-convert-string-to-int-or-integer) - [Java String Conversions](https://www.baeldung.com/java-string-conversions) -- [Check if a String is a Palindrome](http://www.baeldung.com/java-palindrome) -- [Comparing Strings in Java](http://www.baeldung.com/java-compare-strings) -- [Check If a String Is Numeric in Java](http://www.baeldung.com/java-check-string-number) +- [Check if a String is a Palindrome](https://www.baeldung.com/java-palindrome) +- [Comparing Strings in Java](https://www.baeldung.com/java-compare-strings) +- [Check If a String Is Numeric in Java](https://www.baeldung.com/java-check-string-number) - [Get Substring from String in Java](https://www.baeldung.com/java-substring) -- [How to Remove the Last Character of a String?](http://www.baeldung.com/java-remove-last-character-of-string) +- [How to Remove the Last Character of a String?](https://www.baeldung.com/java-remove-last-character-of-string) - [Add a Character to a String at a Given Position](https://www.baeldung.com/java-add-character-to-string) -- [Count Occurrences of a Char in a String](http://www.baeldung.com/java-count-chars) -- [Guide to Java String Pool](http://www.baeldung.com/java-string-pool) -- [Split a String in Java](http://www.baeldung.com/java-split-string) +- [Count Occurrences of a Char in a String](https://www.baeldung.com/java-count-chars) +- [Guide to Java String Pool](https://www.baeldung.com/java-string-pool) +- [Split a String in Java](https://www.baeldung.com/java-split-string) - [Common String Operations in Java](https://www.baeldung.com/java-string-operations) - [Convert String to Byte Array and Reverse in Java](https://www.baeldung.com/java-string-to-byte-array) - [Java toString() Method](https://www.baeldung.com/java-tostring) -- [CharSequence vs. String in Java](http://www.baeldung.com/java-char-sequence-string) -- [StringBuilder and StringBuffer in Java](http://www.baeldung.com/java-string-builder-string-buffer) \ No newline at end of file +- [CharSequence vs. String in Java](https://www.baeldung.com/java-char-sequence-string) +- [StringBuilder and StringBuffer in Java](https://www.baeldung.com/java-string-builder-string-buffer) diff --git a/java-strings/README.md b/java-strings/README.md index ef536b4099..1faa11f606 100644 --- a/java-strings/README.md +++ b/java-strings/README.md @@ -1,16 +1,16 @@ -========= - ## Java Strings Cookbooks and Examples +This module contains articles about strings in Java. + ### Relevant Articles: -- [String Operations with Java Streams](http://www.baeldung.com/java-stream-operations-on-strings) -- [Converting String to Stream of chars](http://www.baeldung.com/java-string-to-stream) -- [Java 8 StringJoiner](http://www.baeldung.com/java-string-joiner) -- [Converting Strings to Enums in Java](http://www.baeldung.com/java-string-to-enum) -- [Quick Guide to the Java StringTokenizer](http://www.baeldung.com/java-stringtokenizer) -- [Use char[] Array Over a String for Manipulating Passwords in Java?](http://www.baeldung.com/java-storing-passwords) -- [Convert a String to Title Case](http://www.baeldung.com/java-string-title-case) -- [Compact Strings in Java 9](http://www.baeldung.com/java-9-compact-string) +- [String Operations with Java Streams](https://www.baeldung.com/java-stream-operations-on-strings) +- [Converting String to Stream of chars](https://www.baeldung.com/java-string-to-stream) +- [Java 8 StringJoiner](https://www.baeldung.com/java-string-joiner) +- [Converting Strings to Enums in Java](https://www.baeldung.com/java-string-to-enum) +- [Quick Guide to the Java StringTokenizer](https://www.baeldung.com/java-stringtokenizer) +- [Use char[] Array Over a String for Manipulating Passwords in Java?](https://www.baeldung.com/java-storing-passwords) +- [Convert a String to Title Case](https://www.baeldung.com/java-string-title-case) +- [Compact Strings in Java 9](https://www.baeldung.com/java-9-compact-string) - [Java Check a String for Lowercase/Uppercase Letter, Special Character and Digit](https://www.baeldung.com/java-lowercase-uppercase-special-character-digit-regex) - [Convert java.util.Date to String](https://www.baeldung.com/java-util-date-to-string) - [Converting a Stack Trace to a String in Java](https://www.baeldung.com/java-stacktrace-to-string) @@ -20,4 +20,5 @@ - [Using indexOf to Find All Occurrences of a Word in a String](https://www.baeldung.com/java-indexOf-find-string-occurrences) - [Adding a Newline Character to a String in Java](https://www.baeldung.com/java-string-newline) - [Remove or Replace part of a String in Java](https://www.baeldung.com/java-remove-replace-string-part) -- [Replace a Character at a Specific Index in a String in Java](https://www.baeldung.com/java-replace-character-at-index) \ No newline at end of file +- [Replace a Character at a Specific Index in a String in Java](https://www.baeldung.com/java-replace-character-at-index) +- More articles: [[next -->]](/java-strings-2) diff --git a/java-vavr-stream/README.md b/java-vavr-stream/README.md index 64299cde11..4e8b5ccd66 100644 --- a/java-vavr-stream/README.md +++ b/java-vavr-stream/README.md @@ -1,5 +1,8 @@ +## Vavr Streams + +This module contains articles about streams in Vavr. ### Relevant Articles: -- [Java Streams vs Vavr Streams](http://www.baeldung.com/vavr-java-streams) +- [Java Streams vs Vavr Streams](https://www.baeldung.com/vavr-java-streams) diff --git a/java-websocket/README.md b/java-websocket/README.md index f9f0784043..f48b8c6804 100644 --- a/java-websocket/README.md +++ b/java-websocket/README.md @@ -1,3 +1,7 @@ +## Java WebSocket + +This module contains articles about WebSocket in Java. + ### Relevant articles -- [A Guide to the Java API for WebSocket](http://www.baeldung.com/java-websockets) +- [A Guide to the Java API for WebSocket](https://www.baeldung.com/java-websockets) diff --git a/javafx/README.md b/javafx/README.md index 66c81f17ad..80c4f49026 100644 --- a/javafx/README.md +++ b/javafx/README.md @@ -1,3 +1,7 @@ -### Relevant Articles: --[Introduction to JavaFX](http://www.baeldung.com/javafx) +## JavaFX + +This module contains articles about JavaFX. + +### Relevant Articles: +-[Introduction to JavaFX](https://www.baeldung.com/javafx) diff --git a/javax-servlets/README.md b/javax-servlets/README.md index 3c3b17996b..085cc04f87 100644 --- a/javax-servlets/README.md +++ b/javax-servlets/README.md @@ -1,9 +1,14 @@ +## Servlets + +This module contains articles about Servlets. + ### Relevant Articles: -- [Introduction to Java Servlets](http://www.baeldung.com/intro-to-servlets) -- [An MVC Example with Servlets and JSP](http://www.baeldung.com/mvc-servlet-jsp) -- [Handling Cookies and a Session in a Java Servlet](http://www.baeldung.com/java-servlet-cookies-session) -- [Uploading Files with Servlets and JSP](http://www.baeldung.com/upload-file-servlet) -- [Example of Downloading File in a Servlet](http://www.baeldung.com/servlet-download-file) -- [Returning a JSON Response from a Servlet](http://www.baeldung.com/servlet-json-response) -- [Java EE Servlet Exception Handling](http://www.baeldung.com/servlet-exceptions) -- [Context and Servlet Initialization Parameters](http://www.baeldung.com/context-servlet-initialization-param) +- [Introduction to Java Servlets](https://www.baeldung.com/intro-to-servlets) +- [An MVC Example with Servlets and JSP](https://www.baeldung.com/mvc-servlet-jsp) +- [Handling Cookies and a Session in a Java Servlet](https://www.baeldung.com/java-servlet-cookies-session) +- [Uploading Files with Servlets and JSP](https://www.baeldung.com/upload-file-servlet) +- [Example of Downloading File in a Servlet](https://www.baeldung.com/servlet-download-file) +- [Returning a JSON Response from a Servlet](https://www.baeldung.com/servlet-json-response) +- [Java EE Servlet Exception Handling](https://www.baeldung.com/servlet-exceptions) +- [Context and Servlet Initialization Parameters](https://www.baeldung.com/context-servlet-initialization-param) +- [The Difference between getRequestURI and getPathInfo in HttpServletRequest](https://www.baeldung.com/http-servlet-request-requesturi-pathinfo) diff --git a/javaxval/README.md b/javaxval/README.md index fadd174166..64903d7463 100644 --- a/javaxval/README.md +++ b/javaxval/README.md @@ -1,9 +1,12 @@ -========= - ## Java Bean Validation Examples +This module contains articles about Bean Validation. + ### Relevant Articles: -- [Java Bean Validation Basics](http://www.baeldung.com/javax-validation) -- [Validating Container Elements with Bean Validation 2.0](http://www.baeldung.com/bean-validation-container-elements) -- [Method Constraints with Bean Validation 2.0](http://www.baeldung.com/javax-validation-method-constraints) +- [Java Bean Validation Basics](https://www.baeldung.com/javax-validation) +- [Validating Container Elements with Bean Validation 2.0](https://www.baeldung.com/bean-validation-container-elements) +- [Method Constraints with Bean Validation 2.0](https://www.baeldung.com/javax-validation-method-constraints) - [Difference Between @NotNull, @NotEmpty, and @NotBlank Constraints in Bean Validation](https://www.baeldung.com/java-bean-validation-not-null-empty-blank) +- [Javax BigDecimal Validation](https://www.baeldung.com/javax-bigdecimal-validation) +- [Grouping Javax Validation Constraints](https://www.baeldung.com/javax-validation-groups) +- [Javax Validations for Enums](https://www.baeldung.com/javax-validations-for-enums/) diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/appplication/Application.java b/javaxval/src/main/java/org/baeldung/javabeanconstraints/appplication/Application.java deleted file mode 100644 index c9f2ab6f98..0000000000 --- a/javaxval/src/main/java/org/baeldung/javabeanconstraints/appplication/Application.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.baeldung.javabeanconstraints.appplication; - -import javax.validation.Validation; -import javax.validation.Validator; -import org.baeldung.javabeanconstraints.entities.UserNotBlank; - -public class Application { - - public static void main(String[] args) throws Exception { - Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); - UserNotBlank user = new UserNotBlank(" "); - validator.validate(user).stream().forEach(violation -> System.out.println(violation.getMessage())); - } -} diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/bigdecimal/Invoice.java b/javaxval/src/main/java/org/baeldung/javabeanconstraints/bigdecimal/Invoice.java deleted file mode 100644 index 6df1b79a60..0000000000 --- a/javaxval/src/main/java/org/baeldung/javabeanconstraints/bigdecimal/Invoice.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.baeldung.javabeanconstraints.bigdecimal; - -import java.math.BigDecimal; - -import javax.validation.constraints.DecimalMin; -import javax.validation.constraints.Digits; - -public class Invoice { - - @DecimalMin(value = "0.0", inclusive = false) - @Digits(integer=3, fraction=2) - private BigDecimal price; - private String description; - - public Invoice(BigDecimal price, String description) { - this.price = price; - this.description = description; - } -} diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/AdvanceInfo.java b/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/AdvanceInfo.java deleted file mode 100644 index 4d5df052c2..0000000000 --- a/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/AdvanceInfo.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.baeldung.javabeanconstraints.validationgroup; - -public interface AdvanceInfo { - -} diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/BasicInfo.java b/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/BasicInfo.java deleted file mode 100644 index 4564a7a702..0000000000 --- a/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/BasicInfo.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.baeldung.javabeanconstraints.validationgroup; - -public interface BasicInfo { - -} diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/CompleteInfo.java b/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/CompleteInfo.java deleted file mode 100644 index c989ea3a6f..0000000000 --- a/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/CompleteInfo.java +++ /dev/null @@ -1,8 +0,0 @@ -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 deleted file mode 100644 index ac8da5c26b..0000000000 --- a/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationForm.java +++ /dev/null @@ -1,110 +0,0 @@ -package org.baeldung.javabeanconstraints.validationgroup; - -import javax.validation.constraints.Email; -import javax.validation.constraints.NotBlank; - -public class RegistrationForm { - @NotBlank(groups = BasicInfo.class) - private String firstName; - @NotBlank(groups = BasicInfo.class) - private String lastName; - @Email(groups = BasicInfo.class) - private String email; - @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) - private String houseNumber; - @NotBlank(groups = AdvanceInfo.class) - private String zipCode; - @NotBlank(groups = AdvanceInfo.class) - private String city; - @NotBlank(groups = AdvanceInfo.class) - private String contry; - - public String getStreet() { - return street; - } - - public void setStreet(String street) { - this.street = street; - } - - public String getHouseNumber() { - return houseNumber; - } - - public void setHouseNumber(String houseNumber) { - this.houseNumber = houseNumber; - } - - public String getZipCode() { - return zipCode; - } - - public void setZipCode(String zipCode) { - this.zipCode = zipCode; - } - - public String getCity() { - return city; - } - - public void setCity(String city) { - this.city = city; - } - - public String getContry() { - return contry; - } - - public void setContry(String contry) { - this.contry = contry; - } - - 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 String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public String getPhone() { - return phone; - } - - 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/main/java/org/baeldung/javaxval/beanvalidation/User.java b/javaxval/src/main/java/org/baeldung/javaxval/beanvalidation/User.java index cf80266c9d..8303edd033 100644 --- a/javaxval/src/main/java/org/baeldung/javaxval/beanvalidation/User.java +++ b/javaxval/src/main/java/org/baeldung/javaxval/beanvalidation/User.java @@ -8,10 +8,10 @@ import javax.validation.constraints.AssertTrue; import javax.validation.constraints.Email; import javax.validation.constraints.Max; import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Past; import javax.validation.constraints.Size; -import javax.validation.constraints.NotBlank; public class User { @@ -30,9 +30,9 @@ public class User { @Email(message = "Email should be valid") private String email; - - List<@NotBlank String> preferences; - + + private List<@NotBlank String> preferences; + private LocalDate dateOfBirth; public int getAge() { @@ -90,5 +90,4 @@ public class User { public void setPreferences(List preferences) { this.preferences = preferences; } - } diff --git a/javaxval/src/main/java/org/baeldung/javaxval/bigdecimal/Invoice.java b/javaxval/src/main/java/org/baeldung/javaxval/bigdecimal/Invoice.java new file mode 100644 index 0000000000..087701f166 --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javaxval/bigdecimal/Invoice.java @@ -0,0 +1,19 @@ +package org.baeldung.javaxval.bigdecimal; + +import java.math.BigDecimal; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.Digits; + +public class Invoice { + + @DecimalMin(value = "0.0", inclusive = false) + @Digits(integer = 3, fraction = 2) + private BigDecimal price; + private String description; + + public Invoice(BigDecimal price, String description) { + this.price = price; + this.description = description; + } +} diff --git a/javaxval/src/main/java/org/baeldung/Customer.java b/javaxval/src/main/java/org/baeldung/javaxval/container/validation/Customer.java similarity index 85% rename from javaxval/src/main/java/org/baeldung/Customer.java rename to javaxval/src/main/java/org/baeldung/javaxval/container/validation/Customer.java index a90fb419de..6ca5ba3ee1 100644 --- a/javaxval/src/main/java/org/baeldung/Customer.java +++ b/javaxval/src/main/java/org/baeldung/javaxval/container/validation/Customer.java @@ -1,4 +1,4 @@ -package org.baeldung; +package org.baeldung.javaxval.container.validation; import java.util.List; import java.util.Optional; @@ -10,17 +10,17 @@ import javax.validation.constraints.PositiveOrZero; public class Customer { - @NotBlank(message="Name cannot be empty") + @NotBlank(message = "Name cannot be empty") private String name; - private List<@NotBlank(message="Address must not be blank") String> addresses; - + private List<@NotBlank(message = "Address must not be blank") String> addresses; + private Integer age; - + @PositiveOrZero private OptionalInt numberOfOrders; - - //@NotBlank + + @NotBlank private Profile profile; public String getName() { diff --git a/javaxval/src/main/java/org/baeldung/CustomerMap.java b/javaxval/src/main/java/org/baeldung/javaxval/container/validation/CustomerMap.java similarity index 69% rename from javaxval/src/main/java/org/baeldung/CustomerMap.java rename to javaxval/src/main/java/org/baeldung/javaxval/container/validation/CustomerMap.java index 37446cf86e..82cf0f2b0c 100644 --- a/javaxval/src/main/java/org/baeldung/CustomerMap.java +++ b/javaxval/src/main/java/org/baeldung/javaxval/container/validation/CustomerMap.java @@ -1,4 +1,4 @@ -package org.baeldung; +package org.baeldung.javaxval.container.validation; import java.util.Map; @@ -6,8 +6,8 @@ import javax.validation.constraints.Email; import javax.validation.constraints.NotNull; public class CustomerMap { - - private Map<@Email(message="Must be a valid email") String, @NotNull Customer> customers; + + private Map<@Email(message = "Must be a valid email") String, @NotNull Customer> customers; public Map getCustomers() { return customers; diff --git a/javaxval/src/main/java/org/baeldung/Profile.java b/javaxval/src/main/java/org/baeldung/javaxval/container/validation/Profile.java similarity index 81% rename from javaxval/src/main/java/org/baeldung/Profile.java rename to javaxval/src/main/java/org/baeldung/javaxval/container/validation/Profile.java index ec73a5c62f..41260540fc 100644 --- a/javaxval/src/main/java/org/baeldung/Profile.java +++ b/javaxval/src/main/java/org/baeldung/javaxval/container/validation/Profile.java @@ -1,4 +1,4 @@ -package org.baeldung; +package org.baeldung.javaxval.container.validation; public class Profile { private String companyName; diff --git a/javaxval/src/main/java/org/baeldung/valueextractors/ProfileValueExtractor.java b/javaxval/src/main/java/org/baeldung/javaxval/container/validation/valueextractors/ProfileValueExtractor.java similarity index 79% rename from javaxval/src/main/java/org/baeldung/valueextractors/ProfileValueExtractor.java rename to javaxval/src/main/java/org/baeldung/javaxval/container/validation/valueextractors/ProfileValueExtractor.java index f192034261..ebc618e80e 100644 --- a/javaxval/src/main/java/org/baeldung/valueextractors/ProfileValueExtractor.java +++ b/javaxval/src/main/java/org/baeldung/javaxval/container/validation/valueextractors/ProfileValueExtractor.java @@ -1,10 +1,10 @@ -package org.baeldung.valueextractors; +package org.baeldung.javaxval.container.validation.valueextractors; import javax.validation.valueextraction.ExtractedValue; import javax.validation.valueextraction.UnwrapByDefault; import javax.validation.valueextraction.ValueExtractor; -import org.baeldung.Profile; +import org.baeldung.javaxval.container.validation.Profile; @UnwrapByDefault public class ProfileValueExtractor implements ValueExtractor<@ExtractedValue(type = String.class) Profile> { diff --git a/javaxval/src/main/java/org/baeldung/javaxval/enums/CustomerTypeSubSetValidator.java b/javaxval/src/main/java/org/baeldung/javaxval/enums/CustomerTypeSubSetValidator.java new file mode 100644 index 0000000000..c730cb937f --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javaxval/enums/CustomerTypeSubSetValidator.java @@ -0,0 +1,24 @@ +package org.baeldung.javaxval.enums; + +import java.util.Arrays; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +import org.baeldung.javaxval.enums.constraints.CustomerTypeSubset; +import org.baeldung.javaxval.enums.demo.CustomerType; + +public class CustomerTypeSubSetValidator implements ConstraintValidator { + private CustomerType[] subset; + + @Override + public void initialize(CustomerTypeSubset constraint) { + this.subset = constraint.anyOf(); + } + + @Override + public boolean isValid(CustomerType value, ConstraintValidatorContext context) { + return value == null || Arrays.asList(subset) + .contains(value); + } +} diff --git a/javaxval/src/main/java/org/baeldung/javaxval/enums/EnumNamePatternValidator.java b/javaxval/src/main/java/org/baeldung/javaxval/enums/EnumNamePatternValidator.java new file mode 100644 index 0000000000..a279813461 --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javaxval/enums/EnumNamePatternValidator.java @@ -0,0 +1,33 @@ +package org.baeldung.javaxval.enums; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +import org.baeldung.javaxval.enums.constraints.EnumNamePattern; + +public class EnumNamePatternValidator implements ConstraintValidator> { + private Pattern pattern; + + @Override + public void initialize(EnumNamePattern constraintAnnotation) { + try { + pattern = Pattern.compile(constraintAnnotation.regexp()); + } catch (PatternSyntaxException e) { + throw new IllegalArgumentException("Given regex is invalid", e); + } + } + + @Override + public boolean isValid(Enum value, ConstraintValidatorContext context) { + if (value == null) { + return true; + } + + Matcher m = pattern.matcher(value.name()); + return m.matches(); + } +} diff --git a/javaxval/src/main/java/org/baeldung/javaxval/enums/EnumSubSetValidator.java b/javaxval/src/main/java/org/baeldung/javaxval/enums/EnumSubSetValidator.java new file mode 100644 index 0000000000..339b4fb03b --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javaxval/enums/EnumSubSetValidator.java @@ -0,0 +1,25 @@ +package org.baeldung.javaxval.enums; + +import java.lang.annotation.Annotation; +import java.util.Arrays; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public abstract class EnumSubSetValidator implements ConstraintValidator { + private U[] subset; + + protected void initialize(U[] subset) { + this.subset = subset; + } + + @Override + public boolean isValid(U value, ConstraintValidatorContext context) { + if (value == null) { + return true; + } + + return Arrays.asList(subset) + .contains(value); + } +} diff --git a/javaxval/src/main/java/org/baeldung/javaxval/enums/InheritedCustomerTypeSubSetValidator.java b/javaxval/src/main/java/org/baeldung/javaxval/enums/InheritedCustomerTypeSubSetValidator.java new file mode 100644 index 0000000000..1cd31c4187 --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javaxval/enums/InheritedCustomerTypeSubSetValidator.java @@ -0,0 +1,11 @@ +package org.baeldung.javaxval.enums; + +import org.baeldung.javaxval.enums.constraints.CustomerTypeSubset; +import org.baeldung.javaxval.enums.demo.CustomerType; + +public class InheritedCustomerTypeSubSetValidator extends EnumSubSetValidator { + @Override + public void initialize(CustomerTypeSubset constraint) { + super.initialize(constraint.anyOf()); + } +} diff --git a/javaxval/src/main/java/org/baeldung/javaxval/enums/ValueOfEnumValidator.java b/javaxval/src/main/java/org/baeldung/javaxval/enums/ValueOfEnumValidator.java new file mode 100644 index 0000000000..7184dae49b --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javaxval/enums/ValueOfEnumValidator.java @@ -0,0 +1,31 @@ +package org.baeldung.javaxval.enums; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +import org.baeldung.javaxval.enums.constraints.ValueOfEnum; + +public class ValueOfEnumValidator implements ConstraintValidator { + private List acceptedValues; + + @Override + public void initialize(ValueOfEnum annotation) { + acceptedValues = Stream.of(annotation.enumClass() + .getEnumConstants()) + .map(Enum::name) + .collect(Collectors.toList()); + } + + @Override + public boolean isValid(CharSequence value, ConstraintValidatorContext context) { + if (value == null) { + return true; + } + + return acceptedValues.contains(value.toString()); + } +} diff --git a/javaxval/src/main/java/org/baeldung/javaxval/enums/constraints/CustomerTypeSubset.java b/javaxval/src/main/java/org/baeldung/javaxval/enums/constraints/CustomerTypeSubset.java new file mode 100644 index 0000000000..44009e6723 --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javaxval/enums/constraints/CustomerTypeSubset.java @@ -0,0 +1,45 @@ +package org.baeldung.javaxval.enums.constraints; + +import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; +import static java.lang.annotation.ElementType.TYPE_USE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import javax.validation.Constraint; +import javax.validation.Payload; + +import org.baeldung.javaxval.enums.CustomerTypeSubSetValidator; +import org.baeldung.javaxval.enums.demo.CustomerType; + +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) +@Retention(RUNTIME) +@Documented +@Constraint(validatedBy = CustomerTypeSubSetValidator.class) +public @interface CustomerTypeSubset { + /** + * @return subset of CustomerType enum + */ + CustomerType[] anyOf(); + + /** + * @return the error message template + */ + String message() default "must be any of {anyOf}"; + + /** + * @return the groups the constraint belongs to + */ + Class[] groups() default {}; + + /** + * @return the payload associated to the constraint + */ + Class[] payload() default {}; +} diff --git a/javaxval/src/main/java/org/baeldung/javaxval/enums/constraints/EnumNamePattern.java b/javaxval/src/main/java/org/baeldung/javaxval/enums/constraints/EnumNamePattern.java new file mode 100644 index 0000000000..403cdcd0b4 --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javaxval/enums/constraints/EnumNamePattern.java @@ -0,0 +1,45 @@ +package org.baeldung.javaxval.enums.constraints; + +import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; +import static java.lang.annotation.ElementType.TYPE_USE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import javax.validation.Constraint; +import javax.validation.Payload; + +import org.baeldung.javaxval.enums.EnumNamePatternValidator; + +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) +@Retention(RUNTIME) +@Documented +@Constraint(validatedBy = EnumNamePatternValidator.class) +public @interface EnumNamePattern { + + /** + * @return the regular expression to match + */ + String regexp(); + + /** + * @return the error message template + */ + String message() default "must match \"{regexp}\""; + + /** + * @return the groups the constraint belongs to + */ + Class[] groups() default {}; + + /** + * @return the payload associated to the constraint + */ + Class[] payload() default {}; +} \ No newline at end of file diff --git a/javaxval/src/main/java/org/baeldung/javaxval/enums/constraints/ValueOfEnum.java b/javaxval/src/main/java/org/baeldung/javaxval/enums/constraints/ValueOfEnum.java new file mode 100644 index 0000000000..0f9677d982 --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javaxval/enums/constraints/ValueOfEnum.java @@ -0,0 +1,44 @@ +package org.baeldung.javaxval.enums.constraints; + +import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; +import static java.lang.annotation.ElementType.TYPE_USE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import javax.validation.Constraint; +import javax.validation.Payload; + +import org.baeldung.javaxval.enums.ValueOfEnumValidator; + +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) +@Retention(RUNTIME) +@Documented +@Constraint(validatedBy = ValueOfEnumValidator.class) +public @interface ValueOfEnum { + /** + * @return class containing enum values to which this String should match + */ + Class> enumClass(); + + /** + * @return the error message template + */ + String message() default "must be any of enum {enumClass}"; + + /** + * @return the groups the constraint belongs to + */ + Class[] groups() default {}; + + /** + * @return the payload associated to the constraint + */ + Class[] payload() default {}; +} \ No newline at end of file diff --git a/javaxval/src/main/java/org/baeldung/javaxval/enums/demo/Customer.java b/javaxval/src/main/java/org/baeldung/javaxval/enums/demo/Customer.java new file mode 100644 index 0000000000..db3486ab5f --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javaxval/enums/demo/Customer.java @@ -0,0 +1,77 @@ +package org.baeldung.javaxval.enums.demo; + +import javax.validation.constraints.NotNull; + +import org.baeldung.javaxval.enums.constraints.CustomerTypeSubset; +import org.baeldung.javaxval.enums.constraints.EnumNamePattern; +import org.baeldung.javaxval.enums.constraints.ValueOfEnum; + +public class Customer { + @ValueOfEnum(enumClass = CustomerType.class) + private String customerTypeString; + + @NotNull + @CustomerTypeSubset(anyOf = { CustomerType.NEW, CustomerType.OLD }) + private CustomerType customerTypeOfSubset; + + @EnumNamePattern(regexp = "NEW|DEFAULT") + private CustomerType customerTypeMatchesPattern; + + public Customer() { + } + + public Customer(String customerTypeString, CustomerType customerTypeOfSubset, CustomerType customerTypeMatchesPattern) { + this.customerTypeString = customerTypeString; + this.customerTypeOfSubset = customerTypeOfSubset; + this.customerTypeMatchesPattern = customerTypeMatchesPattern; + } + + public String getCustomerTypeString() { + return customerTypeString; + } + + public void setCustomerTypeString(String customerTypeString) { + this.customerTypeString = customerTypeString; + } + + public CustomerType getCustomerTypeOfSubset() { + return customerTypeOfSubset; + } + + public void setCustomerTypeOfSubset(CustomerType customerTypeOfSubset) { + this.customerTypeOfSubset = customerTypeOfSubset; + } + + public CustomerType getCustomerTypeMatchesPattern() { + return customerTypeMatchesPattern; + } + + public void setCustomerTypeMatchesPattern(CustomerType customerTypeMatchesPattern) { + this.customerTypeMatchesPattern = customerTypeMatchesPattern; + } + + public static class Builder { + private String customerTypeString; + private CustomerType customerTypeOfSubset = CustomerType.NEW; + private CustomerType customerTypeMatchesPattern; + + public Builder withCustomerTypeString(String customerTypeString) { + this.customerTypeString = customerTypeString; + return this; + } + + public Builder withCustomerTypeOfSubset(CustomerType customerTypeOfSubset) { + this.customerTypeOfSubset = customerTypeOfSubset; + return this; + } + + public Builder withCustomerTypeMatchesPattern(CustomerType customerTypeMatchesPattern) { + this.customerTypeMatchesPattern = customerTypeMatchesPattern; + return this; + } + + public Customer build() { + return new Customer(customerTypeString, customerTypeOfSubset, customerTypeMatchesPattern); + } + } +} diff --git a/javaxval/src/main/java/org/baeldung/javaxval/enums/demo/CustomerType.java b/javaxval/src/main/java/org/baeldung/javaxval/enums/demo/CustomerType.java new file mode 100644 index 0000000000..937f3a3817 --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javaxval/enums/demo/CustomerType.java @@ -0,0 +1,5 @@ +package org.baeldung.javaxval.enums.demo; + +public enum CustomerType { + NEW, OLD, DEFAULT +} diff --git a/javaxval/src/main/java/org/baeldung/javaxval/javabeanconstraints/application/Application.java b/javaxval/src/main/java/org/baeldung/javaxval/javabeanconstraints/application/Application.java new file mode 100644 index 0000000000..22095084c5 --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javaxval/javabeanconstraints/application/Application.java @@ -0,0 +1,18 @@ +package org.baeldung.javaxval.javabeanconstraints.application; + +import javax.validation.Validation; +import javax.validation.Validator; + +import org.baeldung.javaxval.javabeanconstraints.entities.UserNotBlank; + +public class Application { + + public static void main(String[] args) { + Validator validator = Validation.buildDefaultValidatorFactory() + .getValidator(); + UserNotBlank user = new UserNotBlank(" "); + validator.validate(user) + .stream() + .forEach(violation -> System.out.println(violation.getMessage())); + } +} diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotBlank.java b/javaxval/src/main/java/org/baeldung/javaxval/javabeanconstraints/entities/UserNotBlank.java similarity index 81% rename from javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotBlank.java rename to javaxval/src/main/java/org/baeldung/javaxval/javabeanconstraints/entities/UserNotBlank.java index 2ea6a3af56..d86b6a65d2 100644 --- a/javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotBlank.java +++ b/javaxval/src/main/java/org/baeldung/javaxval/javabeanconstraints/entities/UserNotBlank.java @@ -1,22 +1,22 @@ -package org.baeldung.javabeanconstraints.entities; - -import javax.validation.constraints.NotBlank; - -public class UserNotBlank { - - @NotBlank(message = "Name is mandatory") - private final String name; - - public UserNotBlank(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - @Override - public String toString() { - return "User{" + "name=" + name + "}"; - } -} +package org.baeldung.javaxval.javabeanconstraints.entities; + +import javax.validation.constraints.NotBlank; + +public class UserNotBlank { + + @NotBlank(message = "Name is mandatory") + private final String name; + + public UserNotBlank(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + @Override + public String toString() { + return "User{" + "name=" + name + "}"; + } +} diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotEmpty.java b/javaxval/src/main/java/org/baeldung/javaxval/javabeanconstraints/entities/UserNotEmpty.java similarity index 80% rename from javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotEmpty.java rename to javaxval/src/main/java/org/baeldung/javaxval/javabeanconstraints/entities/UserNotEmpty.java index 39e34b63d3..2082265145 100644 --- a/javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotEmpty.java +++ b/javaxval/src/main/java/org/baeldung/javaxval/javabeanconstraints/entities/UserNotEmpty.java @@ -1,22 +1,22 @@ -package org.baeldung.javabeanconstraints.entities; - -import javax.validation.constraints.NotEmpty; - -public class UserNotEmpty { - - @NotEmpty(message = "Name is mandatory") - private final String name; - - public UserNotEmpty(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - @Override - public String toString() { - return "User{" + "name=" + name + "}"; - } -} +package org.baeldung.javaxval.javabeanconstraints.entities; + +import javax.validation.constraints.NotEmpty; + +public class UserNotEmpty { + + @NotEmpty(message = "Name is mandatory") + private final String name; + + public UserNotEmpty(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + @Override + public String toString() { + return "User{" + "name=" + name + "}"; + } +} diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotNull.java b/javaxval/src/main/java/org/baeldung/javaxval/javabeanconstraints/entities/UserNotNull.java similarity index 80% rename from javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotNull.java rename to javaxval/src/main/java/org/baeldung/javaxval/javabeanconstraints/entities/UserNotNull.java index 598c9ba9f9..e2f9e7ec57 100644 --- a/javaxval/src/main/java/org/baeldung/javabeanconstraints/entities/UserNotNull.java +++ b/javaxval/src/main/java/org/baeldung/javaxval/javabeanconstraints/entities/UserNotNull.java @@ -1,22 +1,22 @@ -package org.baeldung.javabeanconstraints.entities; - -import javax.validation.constraints.NotNull; - -public class UserNotNull { - - @NotNull(message = "Name is mandatory") - private final String name; - - public UserNotNull(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - @Override - public String toString() { - return "User{" + "name=" + name + "}"; - } -} +package org.baeldung.javaxval.javabeanconstraints.entities; + +import javax.validation.constraints.NotNull; + +public class UserNotNull { + + @NotNull(message = "Name is mandatory") + private final String name; + + public UserNotNull(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + @Override + public String toString() { + return "User{" + "name=" + name + "}"; + } +} diff --git a/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/MethodValidationConfig.java b/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/MethodValidationConfig.java index 206a145337..817f2370ef 100644 --- a/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/MethodValidationConfig.java +++ b/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/MethodValidationConfig.java @@ -1,5 +1,7 @@ package org.baeldung.javaxval.methodvalidation; +import java.time.LocalDate; + import org.baeldung.javaxval.methodvalidation.model.Customer; import org.baeldung.javaxval.methodvalidation.model.Reservation; import org.springframework.beans.factory.config.BeanDefinition; @@ -9,8 +11,6 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Scope; import org.springframework.validation.beanvalidation.MethodValidationPostProcessor; -import java.time.LocalDate; - @Configuration @ComponentScan({ "org.baeldung.javaxval.methodvalidation.model" }) public class MethodValidationConfig { diff --git a/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/constraints/ConsistentDateParameterValidator.java b/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/constraints/ConsistentDateParameterValidator.java index f1c97760d7..df09cfa906 100644 --- a/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/constraints/ConsistentDateParameterValidator.java +++ b/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/constraints/ConsistentDateParameterValidator.java @@ -1,10 +1,11 @@ package org.baeldung.javaxval.methodvalidation.constraints; +import java.time.LocalDate; + import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import javax.validation.constraintvalidation.SupportedValidationTarget; import javax.validation.constraintvalidation.ValidationTarget; -import java.time.LocalDate; @SupportedValidationTarget(ValidationTarget.PARAMETERS) public class ConsistentDateParameterValidator implements ConstraintValidator { diff --git a/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/constraints/ConsistentDateParameters.java b/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/constraints/ConsistentDateParameters.java index 6b321f545c..bdfabe05ba 100644 --- a/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/constraints/ConsistentDateParameters.java +++ b/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/constraints/ConsistentDateParameters.java @@ -1,13 +1,15 @@ package org.baeldung.javaxval.methodvalidation.constraints; -import javax.validation.Constraint; -import javax.validation.Payload; +import static java.lang.annotation.ElementType.CONSTRUCTOR; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; -import static java.lang.annotation.ElementType.*; -import static java.lang.annotation.RetentionPolicy.RUNTIME; +import javax.validation.Constraint; +import javax.validation.Payload; @Constraint(validatedBy = ConsistentDateParameterValidator.class) @Target({ METHOD, CONSTRUCTOR }) diff --git a/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/constraints/ValidReservation.java b/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/constraints/ValidReservation.java index f9cdea1483..842f9e0621 100644 --- a/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/constraints/ValidReservation.java +++ b/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/constraints/ValidReservation.java @@ -1,15 +1,16 @@ package org.baeldung.javaxval.methodvalidation.constraints; -import javax.validation.Constraint; -import javax.validation.Payload; -import java.lang.annotation.Documented; -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.RUNTIME; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import javax.validation.Constraint; +import javax.validation.Payload; + @Constraint(validatedBy = ValidReservationValidator.class) @Target({ METHOD, CONSTRUCTOR }) @Retention(RUNTIME) diff --git a/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/constraints/ValidReservationValidator.java b/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/constraints/ValidReservationValidator.java index 7b730480ed..c139d1affc 100644 --- a/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/constraints/ValidReservationValidator.java +++ b/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/constraints/ValidReservationValidator.java @@ -1,10 +1,11 @@ package org.baeldung.javaxval.methodvalidation.constraints; -import org.baeldung.javaxval.methodvalidation.model.Reservation; +import java.time.LocalDate; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; -import java.time.LocalDate; + +import org.baeldung.javaxval.methodvalidation.model.Reservation; public class ValidReservationValidator implements ConstraintValidator { diff --git a/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/model/Customer.java b/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/model/Customer.java index fe9ad7080e..99a32d6277 100644 --- a/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/model/Customer.java +++ b/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/model/Customer.java @@ -1,10 +1,10 @@ package org.baeldung.javaxval.methodvalidation.model; -import org.springframework.validation.annotation.Validated; - import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; +import org.springframework.validation.annotation.Validated; + @Validated public class Customer { diff --git a/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/model/Reservation.java b/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/model/Reservation.java index a8c01d2be1..5775bdd66b 100644 --- a/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/model/Reservation.java +++ b/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/model/Reservation.java @@ -1,13 +1,14 @@ package org.baeldung.javaxval.methodvalidation.model; +import java.time.LocalDate; + +import javax.validation.Valid; +import javax.validation.constraints.Positive; + import org.baeldung.javaxval.methodvalidation.constraints.ConsistentDateParameters; import org.baeldung.javaxval.methodvalidation.constraints.ValidReservation; import org.springframework.validation.annotation.Validated; -import javax.validation.Valid; -import javax.validation.constraints.Positive; -import java.time.LocalDate; - @Validated public class Reservation { diff --git a/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/model/ReservationManagement.java b/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/model/ReservationManagement.java index f6fec1a15d..e480e7912d 100644 --- a/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/model/ReservationManagement.java +++ b/javaxval/src/main/java/org/baeldung/javaxval/methodvalidation/model/ReservationManagement.java @@ -1,17 +1,20 @@ package org.baeldung.javaxval.methodvalidation.model; +import java.time.LocalDate; +import java.util.List; + +import javax.validation.Valid; +import javax.validation.constraints.Future; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + import org.baeldung.javaxval.methodvalidation.constraints.ConsistentDateParameters; -import org.baeldung.javaxval.methodvalidation.constraints.ValidReservation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Controller; import org.springframework.validation.annotation.Validated; -import javax.validation.Valid; -import javax.validation.constraints.*; -import java.time.LocalDate; -import java.util.List; - @Controller @Validated public class ReservationManagement { diff --git a/javaxval/src/main/java/org/baeldung/javaxval/validationgroup/AdvanceInfo.java b/javaxval/src/main/java/org/baeldung/javaxval/validationgroup/AdvanceInfo.java new file mode 100644 index 0000000000..9a398e9e7e --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javaxval/validationgroup/AdvanceInfo.java @@ -0,0 +1,5 @@ +package org.baeldung.javaxval.validationgroup; + +public interface AdvanceInfo { + +} diff --git a/javaxval/src/main/java/org/baeldung/javaxval/validationgroup/BasicInfo.java b/javaxval/src/main/java/org/baeldung/javaxval/validationgroup/BasicInfo.java new file mode 100644 index 0000000000..6959f52bfa --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javaxval/validationgroup/BasicInfo.java @@ -0,0 +1,5 @@ +package org.baeldung.javaxval.validationgroup; + +public interface BasicInfo { + +} diff --git a/javaxval/src/main/java/org/baeldung/javaxval/validationgroup/CompleteInfo.java b/javaxval/src/main/java/org/baeldung/javaxval/validationgroup/CompleteInfo.java new file mode 100644 index 0000000000..e34f318b5f --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javaxval/validationgroup/CompleteInfo.java @@ -0,0 +1,8 @@ +package org.baeldung.javaxval.validationgroup; + +import javax.validation.GroupSequence; + +@GroupSequence({ BasicInfo.class, AdvanceInfo.class }) +public interface CompleteInfo { + +} diff --git a/javaxval/src/main/java/org/baeldung/javaxval/validationgroup/RegistrationForm.java b/javaxval/src/main/java/org/baeldung/javaxval/validationgroup/RegistrationForm.java new file mode 100644 index 0000000000..190a0c1280 --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javaxval/validationgroup/RegistrationForm.java @@ -0,0 +1,110 @@ +package org.baeldung.javaxval.validationgroup; + +import javax.validation.constraints.Email; +import javax.validation.constraints.NotBlank; + +public class RegistrationForm { + @NotBlank(groups = BasicInfo.class) + private String firstName; + @NotBlank(groups = BasicInfo.class) + private String lastName; + @Email(groups = BasicInfo.class) + private String email; + @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) + private String houseNumber; + @NotBlank(groups = AdvanceInfo.class) + private String zipCode; + @NotBlank(groups = AdvanceInfo.class) + private String city; + @NotBlank(groups = AdvanceInfo.class) + private String country; + + public String getStreet() { + return street; + } + + public void setStreet(String street) { + this.street = street; + } + + public String getHouseNumber() { + return houseNumber; + } + + public void setHouseNumber(String houseNumber) { + this.houseNumber = houseNumber; + } + + public String getZipCode() { + return zipCode; + } + + public void setZipCode(String zipCode) { + this.zipCode = zipCode; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + 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 String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPhone() { + return phone; + } + + 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/main/resources/META-INF/services/javax.validation.valueextraction.ValueExtractor b/javaxval/src/main/resources/META-INF/services/javax.validation.valueextraction.ValueExtractor index e77a30cfe4..16bacf1097 100644 --- a/javaxval/src/main/resources/META-INF/services/javax.validation.valueextraction.ValueExtractor +++ b/javaxval/src/main/resources/META-INF/services/javax.validation.valueextraction.ValueExtractor @@ -1 +1 @@ -org.baeldung.valueextractors.ProfileValueExtractor \ No newline at end of file +org.baeldung.javaxval.container.validation.valueextractors.ProfileValueExtractor \ No newline at end of file diff --git a/javaxval/src/test/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationFormUnitTest.java b/javaxval/src/test/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationFormUnitTest.java deleted file mode 100644 index bd7034476e..0000000000 --- a/javaxval/src/test/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationFormUnitTest.java +++ /dev/null @@ -1,137 +0,0 @@ -package org.baeldung.javabeanconstraints.validationgroup; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.util.Set; - -import javax.validation.ConstraintViolation; -import javax.validation.Validation; -import javax.validation.Validator; - -import org.junit.BeforeClass; -import org.junit.Test; - -public class RegistrationFormUnitTest { - private static Validator validator; - - @BeforeClass - public static void setupValidatorInstance() { - validator = Validation.buildDefaultValidatorFactory().getValidator(); - } - - @Test - public void whenBasicInfoIsNotComplete_thenShouldGiveConstraintViolationsOnlyForBasicInfo() { - RegistrationForm form = buildRegistrationFormWithBasicInfo(); - form.setFirstName(""); - 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("firstName"); - }); - } - - @Test - public void whenAdvanceInfoIsNotComplete_thenShouldGiveConstraintViolationsOnlyForAdvanceInfo() { - RegistrationForm form = buildRegistrationFormWithAdvanceInfo(); - form.setZipCode(""); - 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("zipCode"); - }); - } - - @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(); - Set> violations = validator.validate(form); - assertThat(violations.size()).isEqualTo(0); - } - - private RegistrationForm buildRegistrationFormWithBasicInfo() { - RegistrationForm form = new RegistrationForm(); - form.setFirstName("devender"); - form.setLastName("kumar"); - form.setEmail("anyemail@yopmail.com"); - form.setPhone("12345"); - form.setCaptcha("Y2HAhU5T"); - return form; - } - - private RegistrationForm buildRegistrationFormWithAdvanceInfo() { - RegistrationForm form = new RegistrationForm(); - return populateAdvanceInfo(form); - } - - private RegistrationForm populateAdvanceInfo(RegistrationForm form) { - form.setCity("Berlin"); - form.setContry("DE"); - form.setStreet("alexa str."); - form.setZipCode("19923"); - form.setHouseNumber("2a"); - form.setCaptcha("Y2HAhU5T"); - return form; - } - - private RegistrationForm buildRegistrationFormWithBasicAndAdvanceInfo() { - RegistrationForm form = buildRegistrationFormWithBasicInfo(); - return populateAdvanceInfo(form); - } -} diff --git a/javaxval/src/test/java/org/baeldung/javaxval/LocaleAwareUnitTest.java b/javaxval/src/test/java/org/baeldung/javaxval/LocaleAwareUnitTest.java new file mode 100644 index 0000000000..5623b50a72 --- /dev/null +++ b/javaxval/src/test/java/org/baeldung/javaxval/LocaleAwareUnitTest.java @@ -0,0 +1,23 @@ +package org.baeldung.javaxval; + +import java.util.Locale; + +import org.junit.AfterClass; +import org.junit.BeforeClass; + +public abstract class LocaleAwareUnitTest { + private static Locale previousDefault; + + @BeforeClass + public static void setupLocale() { + previousDefault = Locale.getDefault(); + + Locale.setDefault(Locale.US); + } + + @AfterClass + public static void resetLocale() { + Locale.setDefault(previousDefault); + } + +} diff --git a/javaxval/src/test/java/org/baeldung/javaxval/beanvalidation/ValidationIntegrationTest.java b/javaxval/src/test/java/org/baeldung/javaxval/beanvalidation/ValidationIntegrationTest.java index 6639d60ac6..3d54955177 100644 --- a/javaxval/src/test/java/org/baeldung/javaxval/beanvalidation/ValidationIntegrationTest.java +++ b/javaxval/src/test/java/org/baeldung/javaxval/beanvalidation/ValidationIntegrationTest.java @@ -94,7 +94,7 @@ public class ValidationIntegrationTest { Set> violations = validator.validate(user); assertEquals(1, violations.size()); } - + @Test public void givenBlankPreference_thenValidationFails() { User user = createUser(); @@ -107,18 +107,18 @@ public class ValidationIntegrationTest { @Test public void givenEmptyOptional_thenValidationSucceeds() { User user = createUser(); - - Set> violations = validator.validate(user); - assertEquals(0, violations.size()); - } - - @Test - public void givenPastDateOfBirth_thenValidationSuccess() { - User user = createUser(); - user.setDateOfBirth(LocalDate.of(1980, 5, 20)); Set> violations = validator.validate(user); assertEquals(0, violations.size()); - + } + + @Test + public void givenPastDateOfBirth_thenValidationSuccess() { + User user = createUser(); + user.setDateOfBirth(LocalDate.of(1980, 5, 20)); + + Set> violations = validator.validate(user); + assertEquals(0, violations.size()); + } } diff --git a/javaxval/src/test/java/org/baeldung/javabeanconstraints/bigdecimal/InvoiceUnitTest.java b/javaxval/src/test/java/org/baeldung/javaxval/bigdecimal/InvoiceUnitTest.java similarity index 59% rename from javaxval/src/test/java/org/baeldung/javabeanconstraints/bigdecimal/InvoiceUnitTest.java rename to javaxval/src/test/java/org/baeldung/javaxval/bigdecimal/InvoiceUnitTest.java index 860177f4c9..6a53d67f30 100644 --- a/javaxval/src/test/java/org/baeldung/javabeanconstraints/bigdecimal/InvoiceUnitTest.java +++ b/javaxval/src/test/java/org/baeldung/javaxval/bigdecimal/InvoiceUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.javabeanconstraints.bigdecimal; +package org.baeldung.javaxval.bigdecimal; import static org.assertj.core.api.Assertions.assertThat; @@ -9,55 +9,54 @@ import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; +import org.baeldung.javaxval.LocaleAwareUnitTest; import org.junit.BeforeClass; import org.junit.Test; -public class InvoiceUnitTest { - - private static Validator validator; +public class InvoiceUnitTest extends LocaleAwareUnitTest { + + private static Validator validator; @BeforeClass public static void setupValidatorInstance() { - validator = Validation.buildDefaultValidatorFactory().getValidator(); + validator = Validation.buildDefaultValidatorFactory() + .getValidator(); } - + @Test public void whenPriceIntegerDigitLessThanThreeWithDecimalValue_thenShouldGiveConstraintViolations() { - Invoice invoice = new Invoice(new BigDecimal(10.21), "Book purchased"); + Invoice invoice = new Invoice(new BigDecimal(10.21), "Book purchased"); Set> violations = validator.validate(invoice); assertThat(violations.size()).isEqualTo(1); - violations.forEach(action-> assertThat(action.getMessage()) - .isEqualTo("numeric value out of bounds (<3 digits>.<2 digits> expected)")); + violations.forEach(action -> assertThat(action.getMessage()).isEqualTo("numeric value out of bounds (<3 digits>.<2 digits> expected)")); } - + @Test public void whenPriceIntegerDigitLessThanThreeWithIntegerValue_thenShouldNotGiveConstraintViolations() { - Invoice invoice = new Invoice(new BigDecimal(10), "Book purchased"); + Invoice invoice = new Invoice(new BigDecimal(10), "Book purchased"); Set> violations = validator.validate(invoice); assertThat(violations.size()).isEqualTo(0); } - + @Test public void whenPriceIntegerDigitGreaterThanThree_thenShouldGiveConstraintViolations() { - Invoice invoice = new Invoice(new BigDecimal(1021.21), "Book purchased"); + Invoice invoice = new Invoice(new BigDecimal(1021.21), "Book purchased"); Set> violations = validator.validate(invoice); assertThat(violations.size()).isEqualTo(1); - violations.forEach(action-> assertThat(action.getMessage()) - .isEqualTo("numeric value out of bounds (<3 digits>.<2 digits> expected)")); + violations.forEach(action -> assertThat(action.getMessage()).isEqualTo("numeric value out of bounds (<3 digits>.<2 digits> expected)")); } - + @Test public void whenPriceIsZero_thenShouldGiveConstraintViolations() { - Invoice invoice = new Invoice(new BigDecimal(000.00), "Book purchased"); + Invoice invoice = new Invoice(new BigDecimal(000.00), "Book purchased"); Set> violations = validator.validate(invoice); assertThat(violations.size()).isEqualTo(1); - violations.forEach(action-> assertThat(action.getMessage()) - .isEqualTo("must be greater than 0.0")); + violations.forEach(action -> assertThat(action.getMessage()).isEqualTo("must be greater than 0.0")); } - + @Test public void whenPriceIsGreaterThanZero_thenShouldNotGiveConstraintViolations() { - Invoice invoice = new Invoice(new BigDecimal(100.50), "Book purchased"); + Invoice invoice = new Invoice(new BigDecimal(100.50), "Book purchased"); Set> violations = validator.validate(invoice); assertThat(violations.size()).isEqualTo(0); } diff --git a/javaxval/src/test/java/org/baeldung/ContainerValidationIntegrationTest.java b/javaxval/src/test/java/org/baeldung/javaxval/container/validation/ContainerValidationIntegrationTest.java similarity index 91% rename from javaxval/src/test/java/org/baeldung/ContainerValidationIntegrationTest.java rename to javaxval/src/test/java/org/baeldung/javaxval/container/validation/ContainerValidationIntegrationTest.java index dff02ff13d..25c8111732 100644 --- a/javaxval/src/test/java/org/baeldung/ContainerValidationIntegrationTest.java +++ b/javaxval/src/test/java/org/baeldung/javaxval/container/validation/ContainerValidationIntegrationTest.java @@ -1,4 +1,4 @@ -package org.baeldung; +package org.baeldung.javaxval.container.validation; import static org.junit.Assert.assertEquals; @@ -10,8 +10,8 @@ import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import javax.validation.ValidatorFactory; -import org.baeldung.valueextractors.ProfileValueExtractor; +import org.baeldung.javaxval.container.validation.valueextractors.ProfileValueExtractor; import org.junit.Before; import org.junit.Test; @@ -20,8 +20,10 @@ public class ContainerValidationIntegrationTest { @Before public void setup() { - ValidatorFactory factory = Validation.byDefaultProvider().configure() - .addValueExtractor(new ProfileValueExtractor()).buildValidatorFactory(); + ValidatorFactory factory = Validation.byDefaultProvider() + .configure() + .addValueExtractor(new ProfileValueExtractor()) + .buildValidatorFactory(); validator = factory.getValidator(); } @@ -74,7 +76,7 @@ public class ContainerValidationIntegrationTest { assertEquals(0, violations.size()); } - //@Test + @Test public void whenProfileCompanyNameBlank_thenValidationFails() { Customer customer = new Customer(); customer.setName("John"); diff --git a/javaxval/src/test/java/org/baeldung/javaxval/enums/CustomerTypeSubSetValidatorUnitTest.java b/javaxval/src/test/java/org/baeldung/javaxval/enums/CustomerTypeSubSetValidatorUnitTest.java new file mode 100644 index 0000000000..5aae504b23 --- /dev/null +++ b/javaxval/src/test/java/org/baeldung/javaxval/enums/CustomerTypeSubSetValidatorUnitTest.java @@ -0,0 +1,45 @@ +package org.baeldung.javaxval.enums; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Set; + +import javax.validation.ConstraintViolation; +import javax.validation.Validation; +import javax.validation.Validator; + +import org.baeldung.javaxval.enums.demo.Customer; +import org.baeldung.javaxval.enums.demo.CustomerType; +import org.baeldung.javaxval.enums.demo.CustomerUnitTest; +import org.junit.BeforeClass; +import org.junit.Test; + +public class CustomerTypeSubSetValidatorUnitTest { + + private static Validator validator; + + @BeforeClass + public static void setupValidatorInstance() { + validator = Validation.buildDefaultValidatorFactory() + .getValidator(); + } + + @Test + public void whenEnumAnyOfSubset_thenShouldNotReportConstraintViolations() { + Customer customer = new Customer.Builder().withCustomerTypeOfSubset(CustomerType.NEW) + .build(); + Set> violations = validator.validate(customer); + assertThat(violations.isEmpty()).isTrue(); + } + + @Test + public void whenEnumNotAnyOfSubset_thenShouldGiveOccurrenceOfConstraintViolations() { + Customer customer = new Customer.Builder().withCustomerTypeOfSubset(CustomerType.DEFAULT) + .build(); + Set> violations = validator.validate(customer); + assertThat(violations.size()).isEqualTo(1); + + assertThat(violations).anyMatch(CustomerUnitTest.havingPropertyPath("customerTypeOfSubset") + .and(CustomerUnitTest.havingMessage("must be any of [NEW, OLD]"))); + } +} \ No newline at end of file diff --git a/javaxval/src/test/java/org/baeldung/javaxval/enums/EnumNamePatternValidatorUnitTest.java b/javaxval/src/test/java/org/baeldung/javaxval/enums/EnumNamePatternValidatorUnitTest.java new file mode 100644 index 0000000000..48f7de2c34 --- /dev/null +++ b/javaxval/src/test/java/org/baeldung/javaxval/enums/EnumNamePatternValidatorUnitTest.java @@ -0,0 +1,54 @@ +package org.baeldung.javaxval.enums; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.baeldung.javaxval.enums.demo.CustomerType.DEFAULT; +import static org.baeldung.javaxval.enums.demo.CustomerType.OLD; + +import java.util.Set; + +import javax.validation.ConstraintViolation; +import javax.validation.Validation; +import javax.validation.Validator; + +import org.baeldung.javaxval.enums.demo.Customer; +import org.baeldung.javaxval.enums.demo.CustomerUnitTest; +import org.junit.BeforeClass; +import org.junit.Test; + +public class EnumNamePatternValidatorUnitTest { + + private static Validator validator; + + @BeforeClass + public static void setupValidatorInstance() { + validator = Validation.buildDefaultValidatorFactory() + .getValidator(); + } + + @Test + public void whenEnumMatchesRegex_thenShouldNotReportConstraintViolations() { + Customer customer = new Customer.Builder().withCustomerTypeMatchesPattern(DEFAULT) + .build(); + Set> violations = validator.validate(customer); + assertThat(violations.isEmpty()).isTrue(); + } + + @Test + public void whenEnumNull_thenShouldNotReportConstraintViolations() { + Customer customer = new Customer.Builder().withCustomerTypeMatchesPattern(null) + .build(); + Set> violations = validator.validate(customer); + assertThat(violations.isEmpty()).isTrue(); + } + + @Test + public void whenEnumDoesNotMatchRegex_thenShouldGiveOccurrenceOfConstraintViolations() { + Customer customer = new Customer.Builder().withCustomerTypeMatchesPattern(OLD) + .build(); + Set> violations = validator.validate(customer); + assertThat(violations.size()).isEqualTo(1); + + assertThat(violations).anyMatch(CustomerUnitTest.havingPropertyPath("customerTypeMatchesPattern") + .and(CustomerUnitTest.havingMessage("must match \"NEW|DEFAULT\""))); + } +} \ No newline at end of file diff --git a/javaxval/src/test/java/org/baeldung/javaxval/enums/ValueOfEnumValidatorUnitTest.java b/javaxval/src/test/java/org/baeldung/javaxval/enums/ValueOfEnumValidatorUnitTest.java new file mode 100644 index 0000000000..0784b58b77 --- /dev/null +++ b/javaxval/src/test/java/org/baeldung/javaxval/enums/ValueOfEnumValidatorUnitTest.java @@ -0,0 +1,52 @@ +package org.baeldung.javaxval.enums; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Set; + +import javax.validation.ConstraintViolation; +import javax.validation.Validation; +import javax.validation.Validator; + +import org.baeldung.javaxval.enums.demo.Customer; +import org.baeldung.javaxval.enums.demo.CustomerUnitTest; +import org.junit.BeforeClass; +import org.junit.Test; + +public class ValueOfEnumValidatorUnitTest { + + private static Validator validator; + + @BeforeClass + public static void setupValidatorInstance() { + validator = Validation.buildDefaultValidatorFactory() + .getValidator(); + } + + @Test + public void whenStringAnyOfEnum_thenShouldNotReportConstraintViolations() { + Customer customer = new Customer.Builder().withCustomerTypeString("DEFAULT") + .build(); + Set> violations = validator.validate(customer); + assertThat(violations.isEmpty()).isTrue(); + } + + @Test + public void whenStringNull_thenShouldNotReportConstraintViolations() { + Customer customer = new Customer.Builder().withCustomerTypeString(null) + .build(); + Set> violations = validator.validate(customer); + assertThat(violations.isEmpty()).isTrue(); + } + + @Test + public void whenStringNotAnyOfEnum_thenShouldGiveOccurrenceOfConstraintViolations() { + Customer customer = new Customer.Builder().withCustomerTypeString("test") + .build(); + Set> violations = validator.validate(customer); + assertThat(violations.size()).isEqualTo(1); + + assertThat(violations).anyMatch(CustomerUnitTest.havingPropertyPath("customerTypeString") + .and(CustomerUnitTest.havingMessage("must be any of enum class org.baeldung.javaxval.enums.demo.CustomerType"))); + } +} \ No newline at end of file diff --git a/javaxval/src/test/java/org/baeldung/javaxval/enums/demo/CustomerUnitTest.java b/javaxval/src/test/java/org/baeldung/javaxval/enums/demo/CustomerUnitTest.java new file mode 100644 index 0000000000..6a064b640f --- /dev/null +++ b/javaxval/src/test/java/org/baeldung/javaxval/enums/demo/CustomerUnitTest.java @@ -0,0 +1,66 @@ +package org.baeldung.javaxval.enums.demo; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Set; +import java.util.function.Predicate; + +import javax.validation.ConstraintViolation; +import javax.validation.Validation; +import javax.validation.Validator; + +import org.baeldung.javaxval.LocaleAwareUnitTest; +import org.junit.BeforeClass; +import org.junit.Test; + +public class CustomerUnitTest extends LocaleAwareUnitTest { + + private static Validator validator; + + @BeforeClass + public static void setupValidatorInstance() { + validator = Validation.buildDefaultValidatorFactory() + .getValidator(); + } + + @Test + public void whenAllAcceptable_thenShouldNotGiveConstraintViolations() { + Customer customer = new Customer(); + customer.setCustomerTypeOfSubset(CustomerType.NEW); + Set> violations = validator.validate(customer); + assertThat(violations).isEmpty(); + } + + @Test + public void whenAllNull_thenOnlyNotNullShouldGiveConstraintViolations() { + Customer customer = new Customer(); + Set> violations = validator.validate(customer); + assertThat(violations.size()).isEqualTo(1); + + assertThat(violations).anyMatch(havingPropertyPath("customerTypeOfSubset").and(havingMessage("must not be null"))); + } + + @Test + public void whenAllInvalid_thenViolationsShouldBeReported() { + Customer customer = new Customer(); + customer.setCustomerTypeString("invalid"); + customer.setCustomerTypeOfSubset(CustomerType.DEFAULT); + customer.setCustomerTypeMatchesPattern(CustomerType.OLD); + + Set> violations = validator.validate(customer); + assertThat(violations.size()).isEqualTo(3); + + assertThat(violations).anyMatch(havingPropertyPath("customerTypeString").and(havingMessage("must be any of enum class org.baeldung.javaxval.enums.demo.CustomerType"))); + assertThat(violations).anyMatch(havingPropertyPath("customerTypeOfSubset").and(havingMessage("must be any of [NEW, OLD]"))); + assertThat(violations).anyMatch(havingPropertyPath("customerTypeMatchesPattern").and(havingMessage("must match \"NEW|DEFAULT\""))); + } + + public static Predicate> havingMessage(String message) { + return l -> message.equals(l.getMessage()); + } + + public static Predicate> havingPropertyPath(String propertyPath) { + return l -> propertyPath.equals(l.getPropertyPath() + .toString()); + } +} \ No newline at end of file diff --git a/javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotBlankUnitTest.java b/javaxval/src/test/java/org/baeldung/javaxval/javabeanconstraints/test/UserNotBlankUnitTest.java similarity index 82% rename from javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotBlankUnitTest.java rename to javaxval/src/test/java/org/baeldung/javaxval/javabeanconstraints/test/UserNotBlankUnitTest.java index 954833fef1..e3a51d4e27 100644 --- a/javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotBlankUnitTest.java +++ b/javaxval/src/test/java/org/baeldung/javaxval/javabeanconstraints/test/UserNotBlankUnitTest.java @@ -1,63 +1,67 @@ -package org.baeldung.javabeanconstraints.test; - -import java.util.Set; -import javax.validation.ConstraintViolation; -import javax.validation.Validation; -import javax.validation.Validator; -import static org.assertj.core.api.Assertions.assertThat; -import org.baeldung.javabeanconstraints.entities.UserNotBlank; -import org.junit.BeforeClass; -import org.junit.Test; - -public class UserNotBlankUnitTest { - - private static Validator validator; - - @BeforeClass - public static void setupValidatorInstance() { - validator = Validation.buildDefaultValidatorFactory().getValidator(); - } - - @Test - public void whenNotBlankName_thenNoConstraintViolations() { - UserNotBlank user = new UserNotBlank("John"); - - Set> violations = validator.validate(user); - - assertThat(violations.size()).isEqualTo(0); - } - - @Test - public void whenBlankName_thenOneConstraintViolation() { - UserNotBlank user = new UserNotBlank(" "); - - Set> violations = validator.validate(user); - - assertThat(violations.size()).isEqualTo(1); - } - - @Test - public void whenEmptyName_thenOneConstraintViolation() { - UserNotBlank user = new UserNotBlank(""); - - Set> violations = validator.validate(user); - - assertThat(violations.size()).isEqualTo(1); - } - - @Test - public void whenNullName_thenOneConstraintViolation() { - UserNotBlank user = new UserNotBlank(null); - - Set> violations = validator.validate(user); - - assertThat(violations.size()).isEqualTo(1); - } - - @Test - public void whenToString_thenCorrect() { - UserNotBlank user = new UserNotBlank("John"); - - assertThat(user.toString()).isEqualTo("User{name=John}"); - } -} +package org.baeldung.javaxval.javabeanconstraints.test; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Set; + +import javax.validation.ConstraintViolation; +import javax.validation.Validation; +import javax.validation.Validator; + +import org.baeldung.javaxval.javabeanconstraints.entities.UserNotBlank; +import org.junit.BeforeClass; +import org.junit.Test; + +public class UserNotBlankUnitTest { + + private static Validator validator; + + @BeforeClass + public static void setupValidatorInstance() { + validator = Validation.buildDefaultValidatorFactory() + .getValidator(); + } + + @Test + public void whenNotBlankName_thenNoConstraintViolations() { + UserNotBlank user = new UserNotBlank("John"); + + Set> violations = validator.validate(user); + + assertThat(violations.size()).isEqualTo(0); + } + + @Test + public void whenBlankName_thenOneConstraintViolation() { + UserNotBlank user = new UserNotBlank(" "); + + Set> violations = validator.validate(user); + + assertThat(violations.size()).isEqualTo(1); + } + + @Test + public void whenEmptyName_thenOneConstraintViolation() { + UserNotBlank user = new UserNotBlank(""); + + Set> violations = validator.validate(user); + + assertThat(violations.size()).isEqualTo(1); + } + + @Test + public void whenNullName_thenOneConstraintViolation() { + UserNotBlank user = new UserNotBlank(null); + + Set> violations = validator.validate(user); + + assertThat(violations.size()).isEqualTo(1); + } + + @Test + public void whenToString_thenCorrect() { + UserNotBlank user = new UserNotBlank("John"); + + assertThat(user.toString()).isEqualTo("User{name=John}"); + } +} diff --git a/javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotEmptyUnitTest.java b/javaxval/src/test/java/org/baeldung/javaxval/javabeanconstraints/test/UserNotEmptyUnitTest.java similarity index 80% rename from javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotEmptyUnitTest.java rename to javaxval/src/test/java/org/baeldung/javaxval/javabeanconstraints/test/UserNotEmptyUnitTest.java index c2675ed8b6..22fbab6997 100644 --- a/javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotEmptyUnitTest.java +++ b/javaxval/src/test/java/org/baeldung/javaxval/javabeanconstraints/test/UserNotEmptyUnitTest.java @@ -1,54 +1,58 @@ -package org.baeldung.javabeanconstraints.test; - -import java.util.Set; -import javax.validation.ConstraintViolation; -import javax.validation.Validation; -import javax.validation.Validator; -import static org.assertj.core.api.Assertions.assertThat; -import org.baeldung.javabeanconstraints.entities.UserNotEmpty; -import org.junit.BeforeClass; -import org.junit.Test; - -public class UserNotEmptyUnitTest { - - private static Validator validator; - - @BeforeClass - public static void setupValidatorInstance() { - validator = Validation.buildDefaultValidatorFactory().getValidator(); - } - - @Test - public void whenNotEmptyName_thenNoConstraintViolations() { - UserNotEmpty user = new UserNotEmpty("John"); - - Set> violations = validator.validate(user); - - assertThat(violations.size()).isEqualTo(0); - } - - @Test - public void whenEmptyName_thenOneConstraintViolation() { - UserNotEmpty user = new UserNotEmpty(""); - - Set> violations = validator.validate(user); - - assertThat(violations.size()).isEqualTo(1); - } - - @Test - public void whenNullName_thenOneConstraintViolation() { - UserNotEmpty user = new UserNotEmpty(null); - - Set> violations = validator.validate(user); - - assertThat(violations.size()).isEqualTo(1); - } - - @Test - public void whenToString_thenCorrect() { - UserNotEmpty user = new UserNotEmpty("John"); - - assertThat(user.toString()).isEqualTo("User{name=John}"); - } -} +package org.baeldung.javaxval.javabeanconstraints.test; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Set; + +import javax.validation.ConstraintViolation; +import javax.validation.Validation; +import javax.validation.Validator; + +import org.baeldung.javaxval.javabeanconstraints.entities.UserNotEmpty; +import org.junit.BeforeClass; +import org.junit.Test; + +public class UserNotEmptyUnitTest { + + private static Validator validator; + + @BeforeClass + public static void setupValidatorInstance() { + validator = Validation.buildDefaultValidatorFactory() + .getValidator(); + } + + @Test + public void whenNotEmptyName_thenNoConstraintViolations() { + UserNotEmpty user = new UserNotEmpty("John"); + + Set> violations = validator.validate(user); + + assertThat(violations.size()).isEqualTo(0); + } + + @Test + public void whenEmptyName_thenOneConstraintViolation() { + UserNotEmpty user = new UserNotEmpty(""); + + Set> violations = validator.validate(user); + + assertThat(violations.size()).isEqualTo(1); + } + + @Test + public void whenNullName_thenOneConstraintViolation() { + UserNotEmpty user = new UserNotEmpty(null); + + Set> violations = validator.validate(user); + + assertThat(violations.size()).isEqualTo(1); + } + + @Test + public void whenToString_thenCorrect() { + UserNotEmpty user = new UserNotEmpty("John"); + + assertThat(user.toString()).isEqualTo("User{name=John}"); + } +} diff --git a/javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotNullUnitTest.java b/javaxval/src/test/java/org/baeldung/javaxval/javabeanconstraints/test/UserNotNullUnitTest.java similarity index 81% rename from javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotNullUnitTest.java rename to javaxval/src/test/java/org/baeldung/javaxval/javabeanconstraints/test/UserNotNullUnitTest.java index 3dd1811947..a684668ae3 100644 --- a/javaxval/src/test/java/org/baeldung/javabeanconstraints/test/UserNotNullUnitTest.java +++ b/javaxval/src/test/java/org/baeldung/javaxval/javabeanconstraints/test/UserNotNullUnitTest.java @@ -1,54 +1,58 @@ -package org.baeldung.javabeanconstraints.test; - -import java.util.Set; -import javax.validation.ConstraintViolation; -import javax.validation.Validation; -import javax.validation.Validator; -import static org.assertj.core.api.Assertions.assertThat; -import org.baeldung.javabeanconstraints.entities.UserNotNull; -import org.junit.BeforeClass; -import org.junit.Test; - -public class UserNotNullUnitTest { - - private static Validator validator; - - @BeforeClass - public static void setupValidatorInstance() { - validator = Validation.buildDefaultValidatorFactory().getValidator(); - } - - @Test - public void whenNotNullName_thenNoConstraintViolations() { - UserNotNull user = new UserNotNull("John"); - - Set> violations = validator.validate(user); - - assertThat(violations.size()).isEqualTo(0); - } - - @Test - public void whenNullName_thenOneConstraintViolation() { - UserNotNull user = new UserNotNull(null); - - Set> violations = validator.validate(user); - - assertThat(violations.size()).isEqualTo(1); - } - - @Test - public void whenEmptyName_thenNoConstraintViolations() { - UserNotNull user = new UserNotNull(""); - - Set> violations = validator.validate(user); - - assertThat(violations.size()).isEqualTo(0); - } - - @Test - public void whenToString_thenCorrect() { - UserNotNull user = new UserNotNull("John"); - - assertThat(user.toString()).isEqualTo("User{name=John}"); - } -} +package org.baeldung.javaxval.javabeanconstraints.test; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Set; + +import javax.validation.ConstraintViolation; +import javax.validation.Validation; +import javax.validation.Validator; + +import org.baeldung.javaxval.javabeanconstraints.entities.UserNotNull; +import org.junit.BeforeClass; +import org.junit.Test; + +public class UserNotNullUnitTest { + + private static Validator validator; + + @BeforeClass + public static void setupValidatorInstance() { + validator = Validation.buildDefaultValidatorFactory() + .getValidator(); + } + + @Test + public void whenNotNullName_thenNoConstraintViolations() { + UserNotNull user = new UserNotNull("John"); + + Set> violations = validator.validate(user); + + assertThat(violations.size()).isEqualTo(0); + } + + @Test + public void whenNullName_thenOneConstraintViolation() { + UserNotNull user = new UserNotNull(null); + + Set> violations = validator.validate(user); + + assertThat(violations.size()).isEqualTo(1); + } + + @Test + public void whenEmptyName_thenNoConstraintViolations() { + UserNotNull user = new UserNotNull(""); + + Set> violations = validator.validate(user); + + assertThat(violations.size()).isEqualTo(0); + } + + @Test + public void whenToString_thenCorrect() { + UserNotNull user = new UserNotNull("John"); + + assertThat(user.toString()).isEqualTo("User{name=John}"); + } +} diff --git a/javaxval/src/test/java/org/baeldung/javaxval/methodvalidation/ContainerValidationIntegrationTest.java b/javaxval/src/test/java/org/baeldung/javaxval/methodvalidation/ContainerValidationIntegrationTest.java index 2363bf8f5d..8febdca0ee 100644 --- a/javaxval/src/test/java/org/baeldung/javaxval/methodvalidation/ContainerValidationIntegrationTest.java +++ b/javaxval/src/test/java/org/baeldung/javaxval/methodvalidation/ContainerValidationIntegrationTest.java @@ -1,5 +1,10 @@ package org.baeldung.javaxval.methodvalidation; +import java.time.LocalDate; +import java.util.List; + +import javax.validation.ConstraintViolationException; + import org.baeldung.javaxval.methodvalidation.model.Customer; import org.baeldung.javaxval.methodvalidation.model.Reservation; import org.baeldung.javaxval.methodvalidation.model.ReservationManagement; @@ -12,10 +17,6 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import javax.validation.ConstraintViolationException; -import java.time.LocalDate; -import java.util.List; - @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { MethodValidationConfig.class }, loader = AnnotationConfigContextLoader.class) public class ContainerValidationIntegrationTest { diff --git a/javaxval/src/test/java/org/baeldung/javaxval/methodvalidation/ValidationIntegrationTest.java b/javaxval/src/test/java/org/baeldung/javaxval/methodvalidation/ValidationIntegrationTest.java index 6b53d3a107..9baeba7189 100644 --- a/javaxval/src/test/java/org/baeldung/javaxval/methodvalidation/ValidationIntegrationTest.java +++ b/javaxval/src/test/java/org/baeldung/javaxval/methodvalidation/ValidationIntegrationTest.java @@ -1,21 +1,23 @@ package org.baeldung.javaxval.methodvalidation; +import static org.junit.Assert.assertEquals; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; +import java.time.LocalDate; +import java.util.Collections; +import java.util.Set; + +import javax.validation.ConstraintViolation; +import javax.validation.Validation; +import javax.validation.ValidatorFactory; +import javax.validation.executable.ExecutableValidator; + import org.baeldung.javaxval.methodvalidation.model.Customer; import org.baeldung.javaxval.methodvalidation.model.Reservation; import org.baeldung.javaxval.methodvalidation.model.ReservationManagement; import org.junit.Before; import org.junit.Test; -import static org.junit.Assert.*; - -import javax.validation.ConstraintViolation; -import javax.validation.Validation; -import javax.validation.ValidatorFactory; -import javax.validation.executable.ExecutableValidator; -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import java.time.LocalDate; -import java.util.Collections; -import java.util.Set; public class ValidationIntegrationTest { diff --git a/javaxval/src/test/java/org/baeldung/javaxval/validationgroup/RegistrationFormUnitTest.java b/javaxval/src/test/java/org/baeldung/javaxval/validationgroup/RegistrationFormUnitTest.java new file mode 100644 index 0000000000..df70ca0bce --- /dev/null +++ b/javaxval/src/test/java/org/baeldung/javaxval/validationgroup/RegistrationFormUnitTest.java @@ -0,0 +1,145 @@ +package org.baeldung.javaxval.validationgroup; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Set; + +import javax.validation.ConstraintViolation; +import javax.validation.Validation; +import javax.validation.Validator; + +import org.baeldung.javaxval.LocaleAwareUnitTest; +import org.junit.BeforeClass; +import org.junit.Test; + +public class RegistrationFormUnitTest extends LocaleAwareUnitTest { + private static Validator validator; + + @BeforeClass + public static void setupValidatorInstance() { + validator = Validation.buildDefaultValidatorFactory() + .getValidator(); + } + + @Test + public void whenBasicInfoIsNotComplete_thenShouldGiveConstraintViolationsOnlyForBasicInfo() { + RegistrationForm form = buildRegistrationFormWithBasicInfo(); + form.setFirstName(""); + 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("firstName"); + }); + } + + @Test + public void whenAdvanceInfoIsNotComplete_thenShouldGiveConstraintViolationsOnlyForAdvanceInfo() { + RegistrationForm form = buildRegistrationFormWithAdvanceInfo(); + form.setZipCode(""); + 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("zipCode"); + }); + } + + @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(); + Set> violations = validator.validate(form); + assertThat(violations.size()).isEqualTo(0); + } + + private RegistrationForm buildRegistrationFormWithBasicInfo() { + RegistrationForm form = new RegistrationForm(); + form.setFirstName("devender"); + form.setLastName("kumar"); + form.setEmail("anyemail@yopmail.com"); + form.setPhone("12345"); + form.setCaptcha("Y2HAhU5T"); + return form; + } + + private RegistrationForm buildRegistrationFormWithAdvanceInfo() { + RegistrationForm form = new RegistrationForm(); + return populateAdvanceInfo(form); + } + + private RegistrationForm populateAdvanceInfo(RegistrationForm form) { + form.setCity("Berlin"); + form.setCountry("DE"); + form.setStreet("alexa str."); + form.setZipCode("19923"); + form.setHouseNumber("2a"); + form.setCaptcha("Y2HAhU5T"); + return form; + } + + private RegistrationForm buildRegistrationFormWithBasicAndAdvanceInfo() { + RegistrationForm form = buildRegistrationFormWithBasicInfo(); + return populateAdvanceInfo(form); + } +} diff --git a/jaxb/README.md b/jaxb/README.md index 4b603fca00..aca078af15 100644 --- a/jaxb/README.md +++ b/jaxb/README.md @@ -1,2 +1,6 @@ +## JAXB + +This module contains articles about JAXB. + ### Relevant Articles: -- [Guide to JAXB](http://www.baeldung.com/jaxb) +- [Guide to JAXB](https://www.baeldung.com/jaxb) diff --git a/jee-7-security/README.md b/jee-7-security/README.md index 314de6d957..ced2beec46 100644 --- a/jee-7-security/README.md +++ b/jee-7-security/README.md @@ -1,2 +1,6 @@ +## JEE 7 Security + +This module contains articles about security in JEE 7. + ### Relevant Articles: -- [Securing Java EE with Spring Security](http://www.baeldung.com/java-ee-spring-security) +- [Securing Java EE with Spring Security](https://www.baeldung.com/java-ee-spring-security) diff --git a/jee-7/README.md b/jee-7/README.md index c57863651d..2c45fe2c67 100644 --- a/jee-7/README.md +++ b/jee-7/README.md @@ -1,9 +1,13 @@ +## JEE 7 + +This module contains articles about JEE 7. + ### Relevant Articles: -- [Scheduling in Java EE](http://www.baeldung.com/scheduling-in-java-enterprise-edition) -- [JSON Processing in Java EE 7](http://www.baeldung.com/jee7-json) -- [Converters, Listeners and Validators in Java EE 7](http://www.baeldung.com/java-ee7-converter-listener-validator) -- [Introduction to JAX-WS](http://www.baeldung.com/jax-ws) -- [A Guide to Java EE Web-Related Annotations](http://www.baeldung.com/javaee-web-annotations) -- [Introduction to Testing with Arquillian](http://www.baeldung.com/arquillian) +- [Scheduling in Java EE](https://www.baeldung.com/scheduling-in-java-enterprise-edition) +- [JSON Processing in Java EE 7](https://www.baeldung.com/jee7-json) +- [Converters, Listeners and Validators in Java EE 7](https://www.baeldung.com/java-ee7-converter-listener-validator) +- [Introduction to JAX-WS](https://www.baeldung.com/jax-ws) +- [A Guide to Java EE Web-Related Annotations](https://www.baeldung.com/javaee-web-annotations) +- [Introduction to Testing with Arquillian](https://www.baeldung.com/arquillian) - [Java EE 7 Batch Processing](https://www.baeldung.com/java-ee-7-batch-processing) - [The Difference Between CDI and EJB Singleton](https://www.baeldung.com/jee-cdi-vs-ejb-singleton) diff --git a/jee-kotlin/README.md b/jee-kotlin/README.md index 43dcd992ca..aa3aa58b4e 100644 --- a/jee-kotlin/README.md +++ b/jee-kotlin/README.md @@ -1,2 +1,6 @@ +## JEE in Kotlin + +This module contains articles about Java EE with Kotlin. + ### Relevant Articles: - [Java EE Application with Kotlin](https://www.baeldung.com/java-ee-kotlin-app) diff --git a/jenkins/README.md b/jenkins/README.md index 6b28b61277..ba3e13cc95 100644 --- a/jenkins/README.md +++ b/jenkins/README.md @@ -1,2 +1,3 @@ +## Jenkins This is an aggregator modules for Jenkins-related modules. diff --git a/jenkins/hello-world/README.md b/jenkins/hello-world/README.md deleted file mode 100644 index da60e556df..0000000000 --- a/jenkins/hello-world/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Relevant articles: - -- [Writing a Jenkins Plugin](http://www.baeldung.com/jenkins-custom-plugin) diff --git a/jenkins/plugins/README.md b/jenkins/plugins/README.md new file mode 100644 index 0000000000..cf7aa3dba8 --- /dev/null +++ b/jenkins/plugins/README.md @@ -0,0 +1,7 @@ +## Jenkins plugins + +This module contains articles about various Jenkins plugins. + +### Relevant articles: + +- [Writing a Jenkins Plugin](https://www.baeldung.com/jenkins-custom-plugin) diff --git a/jenkins/hello-world/pom.xml b/jenkins/plugins/pom.xml similarity index 98% rename from jenkins/hello-world/pom.xml rename to jenkins/plugins/pom.xml index f00a551173..1db7cec394 100644 --- a/jenkins/hello-world/pom.xml +++ b/jenkins/plugins/pom.xml @@ -2,9 +2,9 @@ 4.0.0 - hello-world + plugins 1.0-SNAPSHOT - hello-world + plugins hpi A sample Jenkins Hello World plugin diff --git a/jenkins/hello-world/src/main/java/com/baeldung/jenkins/helloworld/ProjectStats.java b/jenkins/plugins/src/main/java/com/baeldung/jenkins/plugins/ProjectStats.java similarity index 90% rename from jenkins/hello-world/src/main/java/com/baeldung/jenkins/helloworld/ProjectStats.java rename to jenkins/plugins/src/main/java/com/baeldung/jenkins/plugins/ProjectStats.java index 67af636bb4..46899c49d1 100644 --- a/jenkins/hello-world/src/main/java/com/baeldung/jenkins/helloworld/ProjectStats.java +++ b/jenkins/plugins/src/main/java/com/baeldung/jenkins/plugins/ProjectStats.java @@ -1,4 +1,4 @@ -package com.baeldung.jenkins.helloworld; +package com.baeldung.jenkins.plugins; public class ProjectStats { diff --git a/jenkins/hello-world/src/main/java/com/baeldung/jenkins/helloworld/ProjectStatsBuildWrapper.java b/jenkins/plugins/src/main/java/com/baeldung/jenkins/plugins/ProjectStatsBuildWrapper.java similarity index 99% rename from jenkins/hello-world/src/main/java/com/baeldung/jenkins/helloworld/ProjectStatsBuildWrapper.java rename to jenkins/plugins/src/main/java/com/baeldung/jenkins/plugins/ProjectStatsBuildWrapper.java index 9a7213c76f..39500a42cb 100644 --- a/jenkins/hello-world/src/main/java/com/baeldung/jenkins/helloworld/ProjectStatsBuildWrapper.java +++ b/jenkins/plugins/src/main/java/com/baeldung/jenkins/plugins/ProjectStatsBuildWrapper.java @@ -1,4 +1,4 @@ -package com.baeldung.jenkins.helloworld; +package com.baeldung.jenkins.plugins; import hudson.Extension; import hudson.FilePath; diff --git a/jenkins/hello-world/src/main/resources/logback.xml b/jenkins/plugins/src/main/resources/logback.xml similarity index 100% rename from jenkins/hello-world/src/main/resources/logback.xml rename to jenkins/plugins/src/main/resources/logback.xml diff --git a/jenkins/hello-world/src/main/resources/stats.html b/jenkins/plugins/src/main/resources/stats.html similarity index 100% rename from jenkins/hello-world/src/main/resources/stats.html rename to jenkins/plugins/src/main/resources/stats.html diff --git a/jersey/README.md b/jersey/README.md index 126dc542ba..09de7051ca 100644 --- a/jersey/README.md +++ b/jersey/README.md @@ -1,4 +1,9 @@ -- [Jersey Filters and Interceptors](http://www.baeldung.com/jersey-filters-interceptors) +## Jersey + +This module contains articles about Jersey. + +### Relevant Articles +- [Jersey Filters and Interceptors](https://www.baeldung.com/jersey-filters-interceptors) - [Jersey MVC Support](https://www.baeldung.com/jersey-mvc) - [Bean Validation in Jersey](https://www.baeldung.com/jersey-bean-validation) - [Set a Response Body in JAX-RS](https://www.baeldung.com/jax-rs-response) diff --git a/jgit/README.md b/jgit/README.md index 5c65f1101b..b48f3c7a87 100644 --- a/jgit/README.md +++ b/jgit/README.md @@ -1,3 +1,7 @@ -## Relevant articles: +## JGit -- [A Guide to JGit](http://www.baeldung.com/jgit) +This module contains articles about JGit. + +### Relevant articles: + +- [A Guide to JGit](https://www.baeldung.com/jgit) diff --git a/jgroups/README.md b/jgroups/README.md index 0921fa98a1..046ac89c1f 100644 --- a/jgroups/README.md +++ b/jgroups/README.md @@ -1,15 +1,12 @@ ## Reliable Messaging with JGroups Tutorial Project +This module contains articles about JGroups. + ### Relevant Article: -- [Reliable Messaging with JGroups](http://www.baeldung.com/jgroups) +- [Reliable Messaging with JGroups](https://www.baeldung.com/jgroups) ### Overview This Maven project contains the Java code for the article linked above. ### Package Organization Java classes for the intro tutorial are in the org.baeldung.jgroups package. - - -### Running the tests - -``` diff --git a/jhipster-5/README.md b/jhipster-5/README.md index 2731281b3e..ba05641af0 100644 --- a/jhipster-5/README.md +++ b/jhipster-5/README.md @@ -1,2 +1,3 @@ +## JHipster 5 -This is an aggregator module for JHipster 5 modules. +This module contains articles about JHipster 5. This is an aggregator module, articles are in the relevant submodules. diff --git a/jhipster/README.md b/jhipster/README.md new file mode 100644 index 0000000000..1bb31951f0 --- /dev/null +++ b/jhipster/README.md @@ -0,0 +1,9 @@ +## JHipster + +This module contains articles about JHipster. + +### Relevant articles: + +- [JHipster with a Microservice Architecture](https://www.baeldung.com/jhipster-microservices) +- [Intro to JHipster](https://www.baeldung.com/jhipster) +- [Building a Basic UAA-Secured JHipster Microservice](https://www.baeldung.com/jhipster-uaa-secured-micro-service) diff --git a/jhipster/jhipster-monolithic/README.md b/jhipster/jhipster-monolithic/README.md index 65cc51ad88..de7c6ded74 100644 --- a/jhipster/jhipster-monolithic/README.md +++ b/jhipster/jhipster-monolithic/README.md @@ -1,6 +1,7 @@ ## Relevant Articles - [Intro to JHipster](https://www.baeldung.com/jhipster) +- [Creating New Roles and Authorities in JHipster](https://www.baeldung.com/jhipster-new-roles) # baeldung diff --git a/jib/README.md b/jib/README.md index 82bd2fed42..e0ff7c4058 100644 --- a/jib/README.md +++ b/jib/README.md @@ -1,3 +1,7 @@ +## Jib + +This module contains articles about Jib. + ### Relevant Articles: - [Dockerizing Java Apps using Jib](https://www.baeldung.com/jib-dockerizing) diff --git a/jjwt/README.md b/jjwt/README.md index ed18363dfc..25f5a8f6f0 100644 --- a/jjwt/README.md +++ b/jjwt/README.md @@ -1,5 +1,6 @@ ## JWT Fun +This module contains articles about JJWT. This tutorial walks you through the various features supported by the [JJWT](https://github.com/jwtk/jjwt) library - a fluent interface Java JWT building and parsing library. ### Build and Run @@ -45,4 +46,4 @@ Available commands (assumes httpie - https://github.com/jkbrzt/httpie): ## Relevant articles: -- [Supercharge Java Authentication with JSON Web Tokens (JWTs)](http://www.baeldung.com/java-json-web-tokens-jjwt) +- [Supercharge Java Authentication with JSON Web Tokens (JWTs)](https://www.baeldung.com/java-json-web-tokens-jjwt) diff --git a/jmeter/README.md b/jmeter/README.md index e3f9d1a4db..81300afe7c 100644 --- a/jmeter/README.md +++ b/jmeter/README.md @@ -1,7 +1,7 @@ -BASIC CRUD API with Spring Boot -================================ +## JMeter -This is the code of a simple API for some CRUD operations build using Spring Boot. +This module contains articles about JMeter. +It contains the code of a simple API for some CRUD operations built using Spring Boot. ### Requirements @@ -42,5 +42,5 @@ Enjoy it :) ### Relevant Articles: -- [Intro to Performance Testing using JMeter](http://www.baeldung.com/jmeter) -- [Configure Jenkins to Run and Show JMeter Tests](http://www.baeldung.com/jenkins-and-jmeter) +- [Intro to Performance Testing using JMeter](https://www.baeldung.com/jmeter) +- [Configure Jenkins to Run and Show JMeter Tests](https://www.baeldung.com/jenkins-and-jmeter) diff --git a/jmh/README.md b/jmh/README.md index 9c5a70e3c2..3a5370c9f2 100644 --- a/jmh/README.md +++ b/jmh/README.md @@ -1,4 +1,8 @@ -## Relevant articles: +## Java Microbenchmark Harness -- [Microbenchmarking with Java](http://www.baeldung.com/java-microbenchmark-harness) +This module contains articles about the Java Microbenchmark Harness (JMH). + +### Relevant articles: + +- [Microbenchmarking with Java](https://www.baeldung.com/java-microbenchmark-harness) diff --git a/jni/README.md b/jni/README.md index 663cafb0c0..6b984e6590 100644 --- a/jni/README.md +++ b/jni/README.md @@ -1,4 +1,7 @@ +## JNI + +This module contains articles about the Java Native Interface (JNI). ### Relevant Articles: -- [Guide to JNI (Java Native Interface)](http://www.baeldung.com/jni) +- [Guide to JNI (Java Native Interface)](https://www.baeldung.com/jni) diff --git a/jooby/README.md b/jooby/README.md index aa867b2c56..a2fe1985ba 100644 --- a/jooby/README.md +++ b/jooby/README.md @@ -1,3 +1,7 @@ -## Relevant articles: +## Jooby -- [Introduction to Jooby](http://www.baeldung.com/jooby) +This module contains articles about Jooby. + +### Relevant articles: + +- [Introduction to Jooby](https://www.baeldung.com/jooby) diff --git a/jsf/README.md b/jsf/README.md index d96c1eb8e3..7d586f9872 100644 --- a/jsf/README.md +++ b/jsf/README.md @@ -1,5 +1,9 @@ +## JSF + +This module contains articles about JavaServer Faces (JSF). + ### Relevant Articles: -- [Guide to JSF Expression Language 3.0](http://www.baeldung.com/jsf-expression-language-el-3) -- [Introduction to JSF EL 2](http://www.baeldung.com/intro-to-jsf-expression-language) -- [JavaServer Faces (JSF) with Spring](http://www.baeldung.com/spring-jsf) -- [Introduction to Primefaces](http://www.baeldung.com/jsf-primefaces) +- [Guide to JSF Expression Language 3.0](https://www.baeldung.com/jsf-expression-language-el-3) +- [Introduction to JSF EL 2](https://www.baeldung.com/intro-to-jsf-expression-language) +- [JavaServer Faces (JSF) with Spring](https://www.baeldung.com/spring-jsf) +- [Introduction to Primefaces](https://www.baeldung.com/jsf-primefaces) diff --git a/json-path/README.md b/json-path/README.md index 7a84ea7bde..e3f81e827b 100644 --- a/json-path/README.md +++ b/json-path/README.md @@ -1,4 +1,8 @@ -## Relevant articles: +## JsonPath -- [Introduction to JsonPath](http://www.baeldung.com/guide-to-jayway-jsonpath) -- [Count with JsonPath](http://www.baeldung.com/jsonpath-count) +This module contains articles about JsonPath. + +### Relevant articles: + +- [Introduction to JsonPath](https://www.baeldung.com/guide-to-jayway-jsonpath) +- [Count with JsonPath](https://www.baeldung.com/jsonpath-count) diff --git a/json/README.md b/json/README.md index 7ef4cc9b01..0e50dcfddb 100644 --- a/json/README.md +++ b/json/README.md @@ -1,15 +1,15 @@ -========= +## JSON -## Fast-Json +This module contains articles about JSON. ### Relevant Articles: -- [Introduction to JSON Schema in Java](http://www.baeldung.com/introduction-to-json-schema-in-java) -- [A Guide to FastJson](http://www.baeldung.com/fastjson) -- [Introduction to JSONForms](http://www.baeldung.com/introduction-to-jsonforms) -- [Introduction to JsonPath](http://www.baeldung.com/guide-to-jayway-jsonpath) -- [Introduction to JSON-Java (org.json)](http://www.baeldung.com/java-org-json) +- [Introduction to JSON Schema in Java](https://www.baeldung.com/introduction-to-json-schema-in-java) +- [A Guide to FastJson](https://www.baeldung.com/fastjson) +- [Introduction to JSONForms](https://www.baeldung.com/introduction-to-jsonforms) +- [Introduction to JsonPath](https://www.baeldung.com/guide-to-jayway-jsonpath) +- [Introduction to JSON-Java (org.json)](https://www.baeldung.com/java-org-json) - [Overview of JSON Pointer](https://www.baeldung.com/json-pointer) -- [Introduction to the JSON Binding API (JSR 367) in Java](http://www.baeldung.com/java-json-binding-api) +- [Introduction to the JSON Binding API (JSR 367) in Java](https://www.baeldung.com/java-json-binding-api) - [Get a Value by Key in a JSONArray](https://www.baeldung.com/java-jsonarray-get-value-by-key) - [Iterating Over an Instance of org.json.JSONObject](https://www.baeldung.com/jsonobject-iteration) - [Escape JSON String in Java](https://www.baeldung.com/java-json-escaping) diff --git a/jsoup/README.md b/jsoup/README.md index 8728cc7c4e..271d04194d 100644 --- a/jsoup/README.md +++ b/jsoup/README.md @@ -1,9 +1,9 @@ -========= +## jsoup -## jsoup Example Project +This module contains articles about jsoup. ### Relevant Articles: -- [Parsing HTML in Java with Jsoup](http://www.baeldung.com/java-with-jsoup) +- [Parsing HTML in Java with Jsoup](https://www.baeldung.com/java-with-jsoup) ### Build the Project diff --git a/jta/README.md b/jta/README.md index 445a291c8f..0351177a0d 100644 --- a/jta/README.md +++ b/jta/README.md @@ -1,2 +1,6 @@ +## JTA + +This module contains articles about the Java Transaction API (JTA). + ### Relevant Articles: - [Guide to Java EE JTA](https://www.baeldung.com/jee-jta) diff --git a/jws/README.md b/jws/README.md index 428d8b650d..c7cddb11ac 100644 --- a/jws/README.md +++ b/jws/README.md @@ -1,3 +1,7 @@ +## Java Web Start + +This module contains articles about Java Web Start. + ### Relevant articles -- [A Guide to the Java Web Start](http://www.baeldung.com/java-web-start) +- [A Guide to the Java Web Start](https://www.baeldung.com/java-web-start) diff --git a/kotlin-js/README.md b/kotlin-js/README.md index 445ad6da9a..2ec50bad78 100644 --- a/kotlin-js/README.md +++ b/kotlin-js/README.md @@ -1,3 +1,7 @@ +## JavaScript in Kotlin + +This module contains articles about JavaScript in Kotlin. + ### Relevant Articles: -- [Kotlin and Javascript](http://www.baeldung.com/kotlin-javascript) +- [Kotlin and Javascript](https://www.baeldung.com/kotlin-javascript) diff --git a/kotlin-libraries-2/README.md b/kotlin-libraries-2/README.md index 0b9f238d51..188f99dc16 100644 --- a/kotlin-libraries-2/README.md +++ b/kotlin-libraries-2/README.md @@ -1,4 +1,9 @@ -## Relevant articles: +## Kotlin Libraries + +This module contains articles about Kotlin Libraries. + +### Relevant articles: - [Jackson Support for Kotlin](https://www.baeldung.com/jackson-kotlin) - [Introduction to RxKotlin](https://www.baeldung.com/rxkotlin) +- More articles: [[<-- prev]](/kotlin-libraries) diff --git a/kotlin-libraries/README.md b/kotlin-libraries/README.md index 94359193b6..e4b0a35d28 100644 --- a/kotlin-libraries/README.md +++ b/kotlin-libraries/README.md @@ -1,14 +1,19 @@ -## Relevant articles: +## Kotlin Libraries -- [Kotlin with Mockito](http://www.baeldung.com/kotlin-mockito) -- [HTTP Requests with Kotlin and khttp](http://www.baeldung.com/kotlin-khttp) -- [Kotlin Dependency Injection with Kodein](http://www.baeldung.com/kotlin-kodein-dependency-injection) -- [Writing Specifications with Kotlin and Spek](http://www.baeldung.com/kotlin-spek) -- [Processing JSON with Kotlin and Klaxson](http://www.baeldung.com/kotlin-json-klaxson) +This module contains articles about Kotlin Libraries. + +### Relevant articles: + +- [Kotlin with Mockito](https://www.baeldung.com/kotlin-mockito) +- [HTTP Requests with Kotlin and khttp](https://www.baeldung.com/kotlin-khttp) +- [Kotlin Dependency Injection with Kodein](https://www.baeldung.com/kotlin-kodein-dependency-injection) +- [Writing Specifications with Kotlin and Spek](https://www.baeldung.com/kotlin-spek) +- [Processing JSON with Kotlin and Klaxson](https://www.baeldung.com/kotlin-json-klaxson) - [Guide to the Kotlin Exposed Framework](https://www.baeldung.com/kotlin-exposed-persistence) - [Working with Dates in Kotlin](https://www.baeldung.com/kotlin-dates) - [Introduction to Arrow in Kotlin](https://www.baeldung.com/kotlin-arrow) - [Kotlin with Ktor](https://www.baeldung.com/kotlin-ktor) - [REST API With Kotlin and Kovert](https://www.baeldung.com/kotlin-kovert) - [MockK: A Mocking Library for Kotlin](https://www.baeldung.com/kotlin-mockk) -- [Kotlin Immutable Collections](https://www.baeldung.com/kotlin-immutable-collections) \ No newline at end of file +- [Kotlin Immutable Collections](https://www.baeldung.com/kotlin-immutable-collections) +- More articles: [[next -->]](/kotlin-libraries-2) diff --git a/lagom/README.md b/lagom/README.md index 909fe0dff4..1453b511e8 100644 --- a/lagom/README.md +++ b/lagom/README.md @@ -1,11 +1,12 @@ +## Lagom + +This module contains articles about the Lagom framework. + ### Relevant articles -- [Guide to Reactive Microservices Using Lagom Framework](http://www.baeldung.com/lagom-reactive-microservices) +- [Guide to Reactive Microservices Using Lagom Framework](https://www.baeldung.com/lagom-reactive-microservices) - - - -Steps to setup from scratch +### Steps to setup from scratch 1) Create sbt build file "build.sbt" 2) Create plugins file project/plugins.sbt @@ -35,13 +36,13 @@ Steps to setup from scratch 10) Run project: sbt lagom:runAll -Sample Run: -curl http://localhost:9000/api/greeting/Nikhil; +### Sample Run: +``` +$ curl http://localhost:9000/api/greeting/Nikhil; Hello Nikhil! Today's weather stats: Going to be very humid, Take Water -curl http://localhost:9000/api/greeting/Nikhil; +$ curl http://localhost:9000/api/greeting/Nikhil; Hello Again Nikhil! Today's weather stats: Going to Rain, Take Umbrella - - +``` diff --git a/libraries-2/README.md b/libraries-2/README.md index 7d7fc67fa7..fd1f73c386 100644 --- a/libraries-2/README.md +++ b/libraries-2/README.md @@ -1,5 +1,13 @@ -## Relevant Articles: +## Libraries +This module contains articles about various Java libraries. +These are small libraries that are relatively easy to use and do not require any separate module of their own. + +The code examples related to different libraries are each in their own module. + +Remember, for advanced libraries like [Jackson](/jackson) and [JUnit](/testing-modules) we already have separate modules. Please make sure to have a look at the existing modules in such cases. + +### Relevant articles - [A Guide to jBPM with Java](https://www.baeldung.com/jbpm-java) - [Guide to Classgraph Library](https://www.baeldung.com/classgraph) - [Create a Java Command Line Program with Picocli](https://www.baeldung.com/java-picocli-create-command-line-program) @@ -10,3 +18,6 @@ - [Key Value Store with Chronicle Map](https://www.baeldung.com/java-chronicle-map) - [Guide to MapDB](https://www.baeldung.com/mapdb) - [A Guide to Apache Mesos](https://www.baeldung.com/apache-mesos) +- [JasperReports with Spring](https://www.baeldung.com/spring-jasper) +- More articles [[<-- prev]](/libraries) + diff --git a/libraries-2/pom.xml b/libraries-2/pom.xml index 708006fa15..1ffaf0bbd7 100644 --- a/libraries-2/pom.xml +++ b/libraries-2/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 libraries-2 libraries-2 @@ -112,10 +112,36 @@ mesos ${mesos.library.version} + + net.sf.jasperreports + jasperreports + ${jasperreports.version} + + + commons-logging + commons-logging + + + + + org.hsqldb + hsqldb + ${hsqldb.version} + + + org.springframework + spring-context + ${spring.version} + + + org.springframework + spring-jdbc + ${spring.version} + - 3.0.7 + 3.0.7 3.6.2 4.8.28 6.0.0.Final @@ -129,5 +155,8 @@ 2.8.5 3.14.2 4.1.2 + 6.6.0 + 5.1.9.RELEASE + 2.5.0 diff --git a/spring-all/src/main/java/org/baeldung/jasperreports/Main.java b/libraries-2/src/main/java/com/baeldung/jasperreports/Main.java similarity index 93% rename from spring-all/src/main/java/org/baeldung/jasperreports/Main.java rename to libraries-2/src/main/java/com/baeldung/jasperreports/Main.java index 79aee100a6..1c75c161fb 100644 --- a/spring-all/src/main/java/org/baeldung/jasperreports/Main.java +++ b/libraries-2/src/main/java/com/baeldung/jasperreports/Main.java @@ -1,9 +1,10 @@ -package org.baeldung.jasperreports; +package com.baeldung.jasperreports; + +import com.baeldung.jasperreports.config.JasperRerportsSimpleConfig; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; import java.util.HashMap; import java.util.Map; -import org.baeldung.jasperreports.config.JasperRerportsSimpleConfig; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Main { public static void main(String[] args) { diff --git a/spring-all/src/main/java/org/baeldung/jasperreports/SimpleReportExporter.java b/libraries-2/src/main/java/com/baeldung/jasperreports/SimpleReportExporter.java similarity index 87% rename from spring-all/src/main/java/org/baeldung/jasperreports/SimpleReportExporter.java rename to libraries-2/src/main/java/com/baeldung/jasperreports/SimpleReportExporter.java index 103bb37eb4..fa4b25707b 100644 --- a/spring-all/src/main/java/org/baeldung/jasperreports/SimpleReportExporter.java +++ b/libraries-2/src/main/java/com/baeldung/jasperreports/SimpleReportExporter.java @@ -1,22 +1,17 @@ -package org.baeldung.jasperreports; +package com.baeldung.jasperreports; -import java.util.logging.Level; -import java.util.logging.Logger; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.export.HtmlExporter; import net.sf.jasperreports.engine.export.JRCsvExporter; import net.sf.jasperreports.engine.export.JRPdfExporter; import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter; -import net.sf.jasperreports.export.SimpleExporterInput; -import net.sf.jasperreports.export.SimpleHtmlExporterOutput; -import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput; -import net.sf.jasperreports.export.SimplePdfExporterConfiguration; -import net.sf.jasperreports.export.SimplePdfReportConfiguration; -import net.sf.jasperreports.export.SimpleWriterExporterOutput; -import net.sf.jasperreports.export.SimpleXlsxReportConfiguration; +import net.sf.jasperreports.export.*; import org.springframework.stereotype.Component; +import java.util.logging.Level; +import java.util.logging.Logger; + @Component public class SimpleReportExporter { diff --git a/spring-all/src/main/java/org/baeldung/jasperreports/SimpleReportFiller.java b/libraries-2/src/main/java/com/baeldung/jasperreports/SimpleReportFiller.java similarity index 88% rename from spring-all/src/main/java/org/baeldung/jasperreports/SimpleReportFiller.java rename to libraries-2/src/main/java/com/baeldung/jasperreports/SimpleReportFiller.java index 08891d940a..5f0f7e1345 100644 --- a/spring-all/src/main/java/org/baeldung/jasperreports/SimpleReportFiller.java +++ b/libraries-2/src/main/java/com/baeldung/jasperreports/SimpleReportFiller.java @@ -1,20 +1,17 @@ -package org.baeldung.jasperreports; +package com.baeldung.jasperreports; +import net.sf.jasperreports.engine.*; +import net.sf.jasperreports.engine.util.JRSaver; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; import java.io.InputStream; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; -import javax.sql.DataSource; -import net.sf.jasperreports.engine.JRException; -import net.sf.jasperreports.engine.JasperCompileManager; -import net.sf.jasperreports.engine.JasperFillManager; -import net.sf.jasperreports.engine.JasperPrint; -import net.sf.jasperreports.engine.JasperReport; -import net.sf.jasperreports.engine.util.JRSaver; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; @Component public class SimpleReportFiller { diff --git a/spring-all/src/main/java/org/baeldung/jasperreports/config/JasperRerportsSimpleConfig.java b/libraries-2/src/main/java/com/baeldung/jasperreports/config/JasperRerportsSimpleConfig.java similarity index 83% rename from spring-all/src/main/java/org/baeldung/jasperreports/config/JasperRerportsSimpleConfig.java rename to libraries-2/src/main/java/com/baeldung/jasperreports/config/JasperRerportsSimpleConfig.java index 5cc2d894c9..10bae0052f 100644 --- a/spring-all/src/main/java/org/baeldung/jasperreports/config/JasperRerportsSimpleConfig.java +++ b/libraries-2/src/main/java/com/baeldung/jasperreports/config/JasperRerportsSimpleConfig.java @@ -1,13 +1,14 @@ -package org.baeldung.jasperreports.config; +package com.baeldung.jasperreports.config; -import javax.sql.DataSource; -import org.baeldung.jasperreports.SimpleReportExporter; -import org.baeldung.jasperreports.SimpleReportFiller; +import com.baeldung.jasperreports.SimpleReportExporter; +import com.baeldung.jasperreports.SimpleReportFiller; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; +import javax.sql.DataSource; + @Configuration public class JasperRerportsSimpleConfig { diff --git a/libraries-2/src/main/resources/META-INF/kmodule.xml b/libraries-2/src/main/resources/META-INF/kmodule.xml index 1b9ce1ce71..9e2597d5de 100644 --- a/libraries-2/src/main/resources/META-INF/kmodule.xml +++ b/libraries-2/src/main/resources/META-INF/kmodule.xml @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/spring-all/src/main/resources/employee-schema.sql b/libraries-2/src/main/resources/employee-schema.sql similarity index 100% rename from spring-all/src/main/resources/employee-schema.sql rename to libraries-2/src/main/resources/employee-schema.sql diff --git a/libraries-2/src/main/resources/employeeEmailReport.jrxml b/libraries-2/src/main/resources/employeeEmailReport.jrxml new file mode 100644 index 0000000000..1e60344e47 --- /dev/null +++ b/libraries-2/src/main/resources/employeeEmailReport.jrxml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + diff --git a/spring-all/src/main/resources/employeeReport.jrxml b/libraries-2/src/main/resources/employeeReport.jrxml similarity index 78% rename from spring-all/src/main/resources/employeeReport.jrxml rename to libraries-2/src/main/resources/employeeReport.jrxml index 3d2be226fb..434c3e1338 100644 --- a/spring-all/src/main/resources/employeeReport.jrxml +++ b/libraries-2/src/main/resources/employeeReport.jrxml @@ -1,12 +1,16 @@ - + - = $P{minSalary} AND $P!{condition}]]> + = $P{minSalary} AND $P!{condition}]]> @@ -44,7 +48,8 @@ - + + diff --git a/libraries-apache-commons/README.md b/libraries-apache-commons/README.md index ae424cb6c5..439587266b 100644 --- a/libraries-apache-commons/README.md +++ b/libraries-apache-commons/README.md @@ -1,3 +1,7 @@ +## Apache Commons + +This module contains articles about Apache Commons libraries. + ### Relevant articles - [Array Processing with Apache Commons Lang 3](https://www.baeldung.com/array-processing-commons-lang) @@ -8,4 +12,4 @@ - [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 +- [An Introduction to Apache Commons Lang 3](https://www.baeldung.com/java-commons-lang-3) diff --git a/libraries-data-2/README.md b/libraries-data-2/README.md index 8101138c0e..25d9fe177e 100644 --- a/libraries-data-2/README.md +++ b/libraries-data-2/README.md @@ -1,11 +1,16 @@ -### Relevant articles -- [Introduction to Apache Flink with Java](http://www.baeldung.com/apache-flink) -- [Guide to the HyperLogLog Algorithm](http://www.baeldung.com/java-hyperloglog) -- [Introduction to Conflict-Free Replicated Data Types](http://www.baeldung.com/java-conflict-free-replicated-data-types) -- [Introduction to javax.measure](http://www.baeldung.com/javax-measure) -- [Introduction To Docx4J](http://www.baeldung.com/docx4j) -- [Interact with Google Sheets from Java](http://www.baeldung.com/google-sheets-java-client) -- [Introduction To OpenCSV](http://www.baeldung.com/opencsv) -- [Introduction to Smooks](http://www.baeldung.com/smooks) -- [A Guide to Infinispan in Java](http://www.baeldung.com/infinispan) +## Data Libraries + +This module contains articles about libraries for data processing in Java. + +### Relevant articles +- [Introduction to Apache Flink with Java](https://www.baeldung.com/apache-flink) +- [Guide to the HyperLogLog Algorithm](https://www.baeldung.com/java-hyperloglog) +- [Introduction to Conflict-Free Replicated Data Types](https://www.baeldung.com/java-conflict-free-replicated-data-types) +- [Introduction to javax.measure](https://www.baeldung.com/javax-measure) +- [Introduction To Docx4J](https://www.baeldung.com/docx4j) +- [Interact with Google Sheets from Java](https://www.baeldung.com/google-sheets-java-client) +- [Introduction To OpenCSV](https://www.baeldung.com/opencsv) +- [Introduction to Smooks](https://www.baeldung.com/smooks) +- [A Guide to Infinispan in Java](https://www.baeldung.com/infinispan) +- More articles: [[<-- prev>]](/libraries-data) diff --git a/libraries-data-3/README.md b/libraries-data-3/README.md index 7f939e7909..6be6eae4a8 100644 --- a/libraries-data-3/README.md +++ b/libraries-data-3/README.md @@ -1,5 +1,5 @@ ### Relevant articles -- [Parsing YAML with SnakeYAML](http://www.baeldung.com/java-snake-yaml) +- [Parsing YAML with SnakeYAML](https://www.baeldung.com/java-snake-yaml) - [Guide to JMapper](https://www.baeldung.com/jmapper) - [An Introduction to SuanShu](https://www.baeldung.com/suanshu) - [Intro to Derive4J](https://www.baeldung.com/derive4j) diff --git a/libraries-data/README.md b/libraries-data/README.md index 92c546c258..be8f2b2525 100644 --- a/libraries-data/README.md +++ b/libraries-data/README.md @@ -1,16 +1,22 @@ +## Data Libraries + +This module contains articles about libraries for data processing in Java. + ### Relevant articles -- [Introduction to Reladomo](http://www.baeldung.com/reladomo) -- [Introduction to ORMLite](http://www.baeldung.com/ormlite) -- [Introduction To Kryo](http://www.baeldung.com/kryo) -- [Introduction to KafkaStreams in Java](http://www.baeldung.com/java-kafka-streams) -- [Guide to Java Data Objects](http://www.baeldung.com/jdo) -- [Intro to JDO Queries 2/2](http://www.baeldung.com/jdo-queries) -- [Introduction to HikariCP](http://www.baeldung.com/hikaricp) -- [Introduction to JCache](http://www.baeldung.com/jcache) -- [A Guide to Apache Ignite](http://www.baeldung.com/apache-ignite) -- [Apache Ignite with Spring Data](http://www.baeldung.com/apache-ignite-spring-data) +- [Introduction to Reladomo](https://www.baeldung.com/reladomo) +- [Introduction to ORMLite](https://www.baeldung.com/ormlite) +- [Introduction To Kryo](https://www.baeldung.com/kryo) +- [Introduction to KafkaStreams in Java](https://www.baeldung.com/java-kafka-streams) +- [Guide to Java Data Objects](https://www.baeldung.com/jdo) +- [Intro to JDO Queries 2/2](https://www.baeldung.com/jdo-queries) +- [Introduction to HikariCP](https://www.baeldung.com/hikaricp) +- [Introduction to JCache](https://www.baeldung.com/jcache) +- [A Guide to Apache Ignite](https://www.baeldung.com/apache-ignite) +- [Apache Ignite with Spring Data](https://www.baeldung.com/apache-ignite-spring-data) - [A Guide to Apache Crunch](https://www.baeldung.com/apache-crunch) - [Intro to Apache Storm](https://www.baeldung.com/apache-storm) - [Guide to Ebean ORM](https://www.baeldung.com/ebean-orm) - [Introduction to Kafka Connectors](https://www.baeldung.com/kafka-connectors-guide) - [Kafka Connect Example with MQTT and MongoDB](https://www.baeldung.com/kafka-connect-mqtt-mongodb) +- [Building a Data Pipeline with Flink and Kafka](https://www.baeldung.com/kafka-flink-data-pipeline) +- More articles: [[next -->]](/libraries-data-2) diff --git a/libraries-http/README.md b/libraries-http/README.md index d5eaed0736..f5afb2d277 100644 --- a/libraries-http/README.md +++ b/libraries-http/README.md @@ -1,11 +1,14 @@ +## HTTP + +This module contains articles about HTTP libraries. ### Relevant Articles: -- [A Guide to OkHttp](http://www.baeldung.com/guide-to-okhttp) -- [A Guide to Google-Http-Client](http://www.baeldung.com/google-http-client) -- [Asynchronous HTTP with async-http-client in Java](http://www.baeldung.com/async-http-client) -- [WebSockets with AsyncHttpClient](http://www.baeldung.com/async-http-client-websockets) -- [Integrating Retrofit with RxJava](http://www.baeldung.com/retrofit-rxjava) -- [Introduction to Retrofit](http://www.baeldung.com/retrofit) -- [A Guide to Unirest](http://www.baeldung.com/unirest) -- [Creating REST Microservices with Javalin](http://www.baeldung.com/javalin-rest-microservices) \ No newline at end of file +- [A Guide to OkHttp](https://www.baeldung.com/guide-to-okhttp) +- [A Guide to Google-Http-Client](https://www.baeldung.com/google-http-client) +- [Asynchronous HTTP with async-http-client in Java](https://www.baeldung.com/async-http-client) +- [WebSockets with AsyncHttpClient](https://www.baeldung.com/async-http-client-websockets) +- [Integrating Retrofit with RxJava](https://www.baeldung.com/retrofit-rxjava) +- [Introduction to Retrofit](https://www.baeldung.com/retrofit) +- [A Guide to Unirest](https://www.baeldung.com/unirest) +- [Creating REST Microservices with Javalin](https://www.baeldung.com/javalin-rest-microservices) diff --git a/libraries-security/README.md b/libraries-security/README.md index 96f3fcdac6..68badcf12d 100644 --- a/libraries-security/README.md +++ b/libraries-security/README.md @@ -1,3 +1,7 @@ +## Security + +This module contains articles about security libraries. + ### Relevant Articles: - [Guide to ScribeJava](https://www.baeldung.com/scribejava) diff --git a/libraries-server/README.md b/libraries-server/README.md index b5392f5883..d9e6b8b206 100644 --- a/libraries-server/README.md +++ b/libraries-server/README.md @@ -1,11 +1,15 @@ -## Relevant Articles: +## Server -- [Embedded Jetty Server in Java](http://www.baeldung.com/jetty-embedded) -- [Introduction to Netty](http://www.baeldung.com/netty) -- [Exceptions in Netty](http://www.baeldung.com/netty-exception-handling) -- [Programmatically Create, Configure and Run a Tomcat Server](http://www.baeldung.com/tomcat-programmatic-setup) -- [Creating and Configuring Jetty 9 Server in Java](http://www.baeldung.com/jetty-java-programmatic) -- [Testing Netty with EmbeddedChannel](http://www.baeldung.com/testing-netty-embedded-channel) +This module contains articles about server libraries. + +### Relevant Articles: + +- [Embedded Jetty Server in Java](https://www.baeldung.com/jetty-embedded) +- [Introduction to Netty](https://www.baeldung.com/netty) +- [Exceptions in Netty](https://www.baeldung.com/netty-exception-handling) +- [Programmatically Create, Configure and Run a Tomcat Server](https://www.baeldung.com/tomcat-programmatic-setup) +- [Creating and Configuring Jetty 9 Server in Java](https://www.baeldung.com/jetty-java-programmatic) +- [Testing Netty with EmbeddedChannel](https://www.baeldung.com/testing-netty-embedded-channel) - [MQTT Client in Java](https://www.baeldung.com/java-mqtt-client) - [Guide to XMPP Smack Client](https://www.baeldung.com/xmpp-smack-chat-client) - [A Guide to NanoHTTPD](https://www.baeldung.com/nanohttpd) diff --git a/libraries-testing/README.md b/libraries-testing/README.md index fb2c7123a3..332debfe18 100644 --- a/libraries-testing/README.md +++ b/libraries-testing/README.md @@ -1,9 +1,13 @@ +## Testing + +This module contains articles about test libraries. + ### Relevant articles -- [Introduction to Serenity BDD](http://www.baeldung.com/serenity-bdd) -- [Introduction to JSONassert](http://www.baeldung.com/jsonassert) -- [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) -- [Testing with Hamcrest](http://www.baeldung.com/java-junit-hamcrest-guide) \ No newline at end of file +- [Introduction to Serenity BDD](https://www.baeldung.com/serenity-bdd) +- [Introduction to JSONassert](https://www.baeldung.com/jsonassert) +- [Serenity BDD and Screenplay](https://www.baeldung.com/serenity-screenplay) +- [Serenity BDD with Spring and JBehave](https://www.baeldung.com/serenity-spring-jbehave) +- [Introduction to Awaitlity](https://www.baeldung.com/awaitlity-testing) +- [Introduction to Hoverfly in Java](https://www.baeldung.com/hoverfly) +- [Testing with Hamcrest](https://www.baeldung.com/java-junit-hamcrest-guide) diff --git a/libraries/README.md b/libraries/README.md index ebf087ccd8..627c30e75a 100644 --- a/libraries/README.md +++ b/libraries/README.md @@ -1,45 +1,49 @@ +## Libraries + +This module contains articles about various Java libraries. +These are small libraries that are relatively easy to use and do not require any separate module of their own. + +The code examples related to different libraries are each in their own module. + +Remember, for advanced libraries like [Jackson](/jackson) and [JUnit](/testing-modules) we already have separate modules. Please make sure to have a look at the existing modules in such cases. + ### Relevant articles -- [Introduction to Javatuples](http://www.baeldung.com/java-tuples) -- [Introduction to Javassist](http://www.baeldung.com/javassist) -- [Introduction to Apache Flink with Java](http://www.baeldung.com/apache-flink) -- [Intro to JaVers](http://www.baeldung.com/javers) -- [Merging Streams in Java](http://www.baeldung.com/java-merge-streams) -- [Introduction to Quartz](http://www.baeldung.com/quartz) -- [How to Warm Up the JVM](http://www.baeldung.com/java-jvm-warmup) -- [Software Transactional Memory in Java Using Multiverse](http://www.baeldung.com/java-multiverse-stm) -- [Locality-Sensitive Hashing in Java Using Java-LSH](http://www.baeldung.com/locality-sensitive-hashing) -- [Introduction to Neuroph](http://www.baeldung.com/neuroph) -- [Quick Guide to RSS with Rome](http://www.baeldung.com/rome-rss) -- [Introduction to PCollections](http://www.baeldung.com/java-pcollections) -- [Introduction to Eclipse Collections](http://www.baeldung.com/eclipse-collections) -- [DistinctBy in the Java Stream API](http://www.baeldung.com/java-streams-distinct-by) -- [Introduction to NoException](http://www.baeldung.com/no-exception) -- [Spring Yarg Integration](http://www.baeldung.com/spring-yarg) -- [Delete a Directory Recursively in Java](http://www.baeldung.com/java-delete-directory) -- [Guide to JDeferred](http://www.baeldung.com/jdeferred) -- [Introduction to MBassador](http://www.baeldung.com/mbassador) -- [Using Pairs in Java](http://www.baeldung.com/java-pairs) -- [Introduction to Caffeine](http://www.baeldung.com/java-caching-caffeine) -- [Introduction to StreamEx](http://www.baeldung.com/streamex) -- [A Docker Guide for Java](http://www.baeldung.com/docker-java-api) -- [Introduction to Akka Actors in Java](http://www.baeldung.com/akka-actors-java) -- [A Guide to Byte Buddy](http://www.baeldung.com/byte-buddy) -- [Introduction to jOOL](http://www.baeldung.com/jool) -- [Consumer Driven Contracts with Pact](http://www.baeldung.com/pact-junit-consumer-driven-contracts) -- [Introduction to Atlassian Fugue](http://www.baeldung.com/java-fugue) -- [Publish and Receive Messages with Nats Java Client](http://www.baeldung.com/nats-java-client) -- [Java Concurrency Utility with JCTools](http://www.baeldung.com/java-concurrency-jc-tools) -- [Introduction to JavaPoet](http://www.baeldung.com/java-poet) -- [Convert String to Date in Java](http://www.baeldung.com/java-string-to-date) -- [Guide to Resilience4j](http://www.baeldung.com/resilience4j) +- [Introduction to Javatuples](https://www.baeldung.com/java-tuples) +- [Introduction to Javassist](https://www.baeldung.com/javassist) +- [Introduction to Apache Flink with Java](https://www.baeldung.com/apache-flink) +- [Intro to JaVers](https://www.baeldung.com/javers) +- [Merging Streams in Java](https://www.baeldung.com/java-merge-streams) +- [Introduction to Quartz](https://www.baeldung.com/quartz) +- [How to Warm Up the JVM](https://www.baeldung.com/java-jvm-warmup) +- [Software Transactional Memory in Java Using Multiverse](https://www.baeldung.com/java-multiverse-stm) +- [Locality-Sensitive Hashing in Java Using Java-LSH](https://www.baeldung.com/locality-sensitive-hashing) +- [Introduction to Neuroph](https://www.baeldung.com/neuroph) +- [Quick Guide to RSS with Rome](https://www.baeldung.com/rome-rss) +- [Introduction to PCollections](https://www.baeldung.com/java-pcollections) +- [Introduction to Eclipse Collections](https://www.baeldung.com/eclipse-collections) +- [DistinctBy in the Java Stream API](https://www.baeldung.com/java-streams-distinct-by) +- [Introduction to NoException](https://www.baeldung.com/no-exception) +- [Spring Yarg Integration](https://www.baeldung.com/spring-yarg) +- [Delete a Directory Recursively in Java](https://www.baeldung.com/java-delete-directory) +- [Guide to JDeferred](https://www.baeldung.com/jdeferred) +- [Introduction to MBassador](https://www.baeldung.com/mbassador) +- [Using Pairs in Java](https://www.baeldung.com/java-pairs) +- [Introduction to Caffeine](https://www.baeldung.com/java-caching-caffeine) +- [Introduction to StreamEx](https://www.baeldung.com/streamex) +- [A Docker Guide for Java](https://www.baeldung.com/docker-java-api) +- [Introduction to Akka Actors in Java](https://www.baeldung.com/akka-actors-java) +- [A Guide to Byte Buddy](https://www.baeldung.com/byte-buddy) +- [Introduction to jOOL](https://www.baeldung.com/jool) +- [Consumer Driven Contracts with Pact](https://www.baeldung.com/pact-junit-consumer-driven-contracts) +- [Introduction to Atlassian Fugue](https://www.baeldung.com/java-fugue) +- [Publish and Receive Messages with Nats Java Client](https://www.baeldung.com/nats-java-client) +- [Java Concurrency Utility with JCTools](https://www.baeldung.com/java-concurrency-jc-tools) +- [Introduction to JavaPoet](https://www.baeldung.com/java-poet) +- [Convert String to Date in Java](https://www.baeldung.com/java-string-to-date) +- [Guide to Resilience4j](https://www.baeldung.com/resilience4j) - [Exactly Once Processing in Kafka](https://www.baeldung.com/kafka-exactly-once) -- [Implementing a FTP-Client in Java](http://www.baeldung.com/java-ftp-client) +- [Implementing a FTP-Client in Java](https://www.baeldung.com/java-ftp-client) - [Introduction to Functional Java](https://www.baeldung.com/java-functional-library) - [A Guide to the Reflections Library](https://www.baeldung.com/reflections-library) - -The libraries module contains examples related to small libraries that are relatively easy to use and does not require any separate module of its own. - -The code examples related to different libraries should go in a new package. - -Remember, for advanced libraries like JUnit, Jackson, etc. we already have separate modules. Please make sure to have a look at the existing modules in such cases. +- More articles [[next -->]](/libraries-2) diff --git a/linkrest/README.md b/linkrest/README.md index 33cf930b18..5402d9db96 100644 --- a/linkrest/README.md +++ b/linkrest/README.md @@ -1,3 +1,7 @@ -## Relevant articles: +## LinkRest -- [Guide to LinkRest](http://www.baeldung.com/linkrest) +This module contains articles about LinkRest. + +### Relevant articles: + +- [Guide to LinkRest](https://www.baeldung.com/linkrest) diff --git a/logging-modules/README.md b/logging-modules/README.md index 17405847b1..b763f6baaf 100644 --- a/logging-modules/README.md +++ b/logging-modules/README.md @@ -1,7 +1,8 @@ - ## Logging Modules +This module contains articles about logging libraries. + ### Relevant Articles: -- [Creating a Custom Logback Appender](http://www.baeldung.com/custom-logback-appender) -- [A Guide To Logback](http://www.baeldung.com/logback) +- [Creating a Custom Logback Appender](https://www.baeldung.com/custom-logback-appender) +- [A Guide To Logback](https://www.baeldung.com/logback) diff --git a/logging-modules/log4j2/src/main/java/com/baeldung/logging/log4j2/Log4j2ComparisonSysout.java b/logging-modules/log4j2/src/main/java/com/baeldung/logging/log4j2/Log4j2ComparisonSysout.java new file mode 100644 index 0000000000..53592082b6 --- /dev/null +++ b/logging-modules/log4j2/src/main/java/com/baeldung/logging/log4j2/Log4j2ComparisonSysout.java @@ -0,0 +1,18 @@ +package com.baeldung.logging.log4j2; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.PrintStream; + +public class Log4j2ComparisonSysout { + + public static void main(String[] args) throws FileNotFoundException { + PrintStream outStream = new PrintStream(new File("outFile.txt")); + System.setOut(outStream); + System.out.println("This is a baeldung article"); + + PrintStream errStream = new PrintStream(new File("errFile.txt")); + System.setErr(errStream); + System.err.println("This is a baeldung article error"); + } +} diff --git a/logging-modules/log4j2/src/main/java/com/baeldung/logging/log4j2/Log4j2Example.java b/logging-modules/log4j2/src/main/java/com/baeldung/logging/log4j2/Log4j2Example.java new file mode 100644 index 0000000000..b870924cf3 --- /dev/null +++ b/logging-modules/log4j2/src/main/java/com/baeldung/logging/log4j2/Log4j2Example.java @@ -0,0 +1,19 @@ +package com.baeldung.logging.log4j2; + +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Log4j2Example { + + private static final Logger logger = LogManager.getLogger(Log4j2Example.class); + + public static void main(String[] args) { + logger.debug("Debug log message"); + logger.info("Info log message"); + logger.error("Error log message"); + logger.warn("Warn log message"); + logger.fatal("Fatal log message"); + logger.trace("Trace log message"); + } + +} diff --git a/logging-modules/log4j2/src/test/resources/log4j2.xml b/logging-modules/log4j2/src/test/resources/log4j2.xml index 246ffb0707..ee26bcecf2 100644 --- a/logging-modules/log4j2/src/test/resources/log4j2.xml +++ b/logging-modules/log4j2/src/test/resources/log4j2.xml @@ -5,8 +5,7 @@ - + diff --git a/lombok/README.md b/lombok/README.md index 4ff7ca7921..39d3cd6b05 100644 --- a/lombok/README.md +++ b/lombok/README.md @@ -1,6 +1,10 @@ -## Relevant Articles: -- [Introduction to Project Lombok](http://www.baeldung.com/intro-to-project-lombok) -- [Using Lombok’s @Builder Annotation](http://www.baeldung.com/lombok-builder) +## Project Lombok + +This module contains articles about Project Lombok. + +### Relevant Articles: +- [Introduction to Project Lombok](https://www.baeldung.com/intro-to-project-lombok) +- [Using Lombok’s @Builder Annotation](https://www.baeldung.com/lombok-builder) - [Using Lombok’s @Getter for Boolean Fields](https://www.baeldung.com/lombok-getter-boolean) - [Lombok @Builder with Inheritance](https://www.baeldung.com/lombok-builder-inheritance) - [Lombok Builder with Default Value](https://www.baeldung.com/lombok-builder-default-value) diff --git a/lucene/README.md b/lucene/README.md index ea7f715480..ad83f26386 100644 --- a/lucene/README.md +++ b/lucene/README.md @@ -1,5 +1,9 @@ +## Apache Lucene + +This module contains articles about Apache Lucene. + ### Relevant Articles: -- [Introduction to Apache Lucene](http://www.baeldung.com/lucene) -- [A Simple File Search with Lucene](http://www.baeldung.com/lucene-file-search) +- [Introduction to Apache Lucene](https://www.baeldung.com/lucene) +- [A Simple File Search with Lucene](https://www.baeldung.com/lucene-file-search) - [Guide to Lucene Analyzers](https://www.baeldung.com/lucene-analyzers) diff --git a/mapstruct/README.md b/mapstruct/README.md index e279a48f7a..b784820b98 100644 --- a/mapstruct/README.md +++ b/mapstruct/README.md @@ -1,2 +1,6 @@ +## MapStruct + +This module contains articles about MapStruct. + ###Relevant Articles: -- [Quick Guide to MapStruct](http://www.baeldung.com/mapstruct) +- [Quick Guide to MapStruct](https://www.baeldung.com/mapstruct) diff --git a/mapstruct/pom.xml b/mapstruct/pom.xml index 2613dcf083..e98c4a318b 100644 --- a/mapstruct/pom.xml +++ b/mapstruct/pom.xml @@ -35,6 +35,12 @@ lombok ${org.projectlombok.version} + + org.assertj + assertj-core + ${assertj.version} + test + @@ -70,6 +76,7 @@ 1.8 1.8 1.18.4 + 3.11.1 diff --git a/mapstruct/src/main/java/com/baeldung/unmappedproperties/dto/CarDTO.java b/mapstruct/src/main/java/com/baeldung/unmappedproperties/dto/CarDTO.java new file mode 100644 index 0000000000..8f324f5a15 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/unmappedproperties/dto/CarDTO.java @@ -0,0 +1,23 @@ +package com.baeldung.unmappedproperties.dto; + +public class CarDTO { + private int id; + private String name; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/unmappedproperties/dto/DocumentDTO.java b/mapstruct/src/main/java/com/baeldung/unmappedproperties/dto/DocumentDTO.java new file mode 100644 index 0000000000..8df306eb13 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/unmappedproperties/dto/DocumentDTO.java @@ -0,0 +1,52 @@ +package com.baeldung.unmappedproperties.dto; + +import java.util.List; + +public class DocumentDTO { + private int id; + private String title; + private String text; + private List comments; + private String author; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public List getComments() { + return comments; + } + + public void setComments(List comments) { + this.comments = comments; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + +} \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/unmappedproperties/entity/Car.java b/mapstruct/src/main/java/com/baeldung/unmappedproperties/entity/Car.java new file mode 100644 index 0000000000..c23ced3a6a --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/unmappedproperties/entity/Car.java @@ -0,0 +1,23 @@ +package com.baeldung.unmappedproperties.entity; + +public class Car { + private int id; + private String name; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/unmappedproperties/entity/Document.java b/mapstruct/src/main/java/com/baeldung/unmappedproperties/entity/Document.java new file mode 100644 index 0000000000..89457133a3 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/unmappedproperties/entity/Document.java @@ -0,0 +1,42 @@ +package com.baeldung.unmappedproperties.entity; + +import java.util.Date; + +public class Document { + private int id; + private String title; + private String text; + private Date modificationTime; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public Date getModificationTime() { + return modificationTime; + } + + public void setModificationTime(Date modificationTime) { + this.modificationTime = modificationTime; + } +} \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/CarMapper.java b/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/CarMapper.java new file mode 100644 index 0000000000..714301b811 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/CarMapper.java @@ -0,0 +1,13 @@ +package com.baeldung.unmappedproperties.mapper; + +import com.baeldung.unmappedproperties.dto.CarDTO; +import com.baeldung.unmappedproperties.entity.Car; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface CarMapper { + CarMapper INSTANCE = Mappers.getMapper(CarMapper.class); + + CarDTO carToCarDTO(Car car); +} \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/DocumentMapper.java b/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/DocumentMapper.java new file mode 100644 index 0000000000..fe233ed172 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/DocumentMapper.java @@ -0,0 +1,16 @@ +package com.baeldung.unmappedproperties.mapper; + +import com.baeldung.unmappedproperties.dto.DocumentDTO; +import com.baeldung.unmappedproperties.entity.Document; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface DocumentMapper { + + DocumentMapper INSTANCE = Mappers.getMapper(DocumentMapper.class); + + DocumentDTO documentToDocumentDTO(Document entity); + + Document documentDTOToDocument(DocumentDTO dto); +} \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/DocumentMapperMappingIgnore.java b/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/DocumentMapperMappingIgnore.java new file mode 100644 index 0000000000..bf3b0b49c4 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/DocumentMapperMappingIgnore.java @@ -0,0 +1,20 @@ +package com.baeldung.unmappedproperties.mapper; + +import com.baeldung.unmappedproperties.dto.DocumentDTO; +import com.baeldung.unmappedproperties.entity.Document; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface DocumentMapperMappingIgnore { + + DocumentMapperMappingIgnore INSTANCE = Mappers.getMapper(DocumentMapperMappingIgnore.class); + + @Mapping(target = "comments", ignore = true) + DocumentDTO documentToDocumentDTO(Document entity); + + @Mapping(target = "modificationTime", ignore = true) + Document documentDTOToDocument(DocumentDTO dto); + +} \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/DocumentMapperUnmappedPolicy.java b/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/DocumentMapperUnmappedPolicy.java new file mode 100644 index 0000000000..b44f714774 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/DocumentMapperUnmappedPolicy.java @@ -0,0 +1,17 @@ +package com.baeldung.unmappedproperties.mapper; + +import com.baeldung.unmappedproperties.dto.DocumentDTO; +import com.baeldung.unmappedproperties.entity.Document; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; +import org.mapstruct.factory.Mappers; + +@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface DocumentMapperUnmappedPolicy { + + DocumentMapperUnmappedPolicy INSTANCE = Mappers.getMapper(DocumentMapperUnmappedPolicy.class); + + DocumentDTO documentToDocumentDTO(Document entity); + + Document documentDTOToDocument(DocumentDTO dto); +} \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/DocumentMapperWithConfig.java b/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/DocumentMapperWithConfig.java new file mode 100644 index 0000000000..dfaab7e1a1 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/DocumentMapperWithConfig.java @@ -0,0 +1,16 @@ +package com.baeldung.unmappedproperties.mapper; + +import com.baeldung.unmappedproperties.dto.DocumentDTO; +import com.baeldung.unmappedproperties.entity.Document; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper(config = IgnoreUnmappedMapperConfig.class) +public interface DocumentMapperWithConfig { + + DocumentMapperWithConfig INSTANCE = Mappers.getMapper(DocumentMapperWithConfig.class); + + DocumentDTO documentToDocumentDTO(Document entity); + + Document documentDTOToDocument(DocumentDTO dto); +} \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/IgnoreUnmappedMapperConfig.java b/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/IgnoreUnmappedMapperConfig.java new file mode 100644 index 0000000000..804ce9c03a --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/unmappedproperties/mapper/IgnoreUnmappedMapperConfig.java @@ -0,0 +1,8 @@ +package com.baeldung.unmappedproperties.mapper; + +import org.mapstruct.MapperConfig; +import org.mapstruct.ReportingPolicy; + +@MapperConfig(unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface IgnoreUnmappedMapperConfig { +} \ No newline at end of file diff --git a/mapstruct/src/test/java/com/baeldung/mapper/DeliveryAddressMapperUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapper/DeliveryAddressMapperUnitTest.java index e2c12fcba3..7d1e432546 100644 --- a/mapstruct/src/test/java/com/baeldung/mapper/DeliveryAddressMapperUnitTest.java +++ b/mapstruct/src/test/java/com/baeldung/mapper/DeliveryAddressMapperUnitTest.java @@ -17,48 +17,51 @@ public class DeliveryAddressMapperUnitTest { @Test public void testGivenCustomerAndAddress_mapsToDeliveryAddress() { - // given + // given a customer Customer customer = new Customer().setFirstName("Max") .setLastName("Powers"); + // and some address Address homeAddress = new Address().setStreet("123 Some Street") .setCounty("Nevada") .setPostalcode("89123"); - // when + // when calling DeliveryAddressMapper::from DeliveryAddress deliveryAddress = deliveryAddressMapper.from(customer, homeAddress); - // then + // then a new DeliveryAddress is created, based on the given customer and his home address assertEquals(deliveryAddress.getForename(), customer.getFirstName()); assertEquals(deliveryAddress.getSurname(), customer.getLastName()); assertEquals(deliveryAddress.getStreet(), homeAddress.getStreet()); assertEquals(deliveryAddress.getCounty(), homeAddress.getCounty()); assertEquals(deliveryAddress.getPostalcode(), homeAddress.getPostalcode()); + } @Test public void testGivenDeliveryAddressAndSomeOtherAddress_updatesDeliveryAddress() { - // given - Customer customer = new Customer().setFirstName("Max") - .setLastName("Powers"); - - DeliveryAddress deliveryAddress = new DeliveryAddress().setStreet("123 Some Street") + // given a delivery address + DeliveryAddress deliveryAddress = new DeliveryAddress().setForename("Max") + .setSurname("Powers") + .setStreet("123 Some Street") .setCounty("Nevada") .setPostalcode("89123"); - Address otherAddress = new Address().setStreet("456 Some other street") + // and some new address + Address newAddress = new Address().setStreet("456 Some other street") .setCounty("Arizona") .setPostalcode("12345"); - // when - DeliveryAddress updatedDeliveryAddress = deliveryAddressMapper.updateAddress(deliveryAddress, otherAddress); + // when calling DeliveryAddressMapper::updateAddress + DeliveryAddress updatedDeliveryAddress = deliveryAddressMapper.updateAddress(deliveryAddress, newAddress); - // then + // then the *existing* delivery address is updated assertSame(deliveryAddress, updatedDeliveryAddress); - assertEquals(deliveryAddress.getStreet(), otherAddress.getStreet()); - assertEquals(deliveryAddress.getCounty(), otherAddress.getCounty()); - assertEquals(deliveryAddress.getPostalcode(), otherAddress.getPostalcode()); + assertEquals(deliveryAddress.getStreet(), newAddress.getStreet()); + assertEquals(deliveryAddress.getCounty(), newAddress.getCounty()); + assertEquals(deliveryAddress.getPostalcode(), newAddress.getPostalcode()); + } } diff --git a/mapstruct/src/test/java/com/baeldung/mapper/unmappedproperties/CarMapperUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapper/unmappedproperties/CarMapperUnitTest.java new file mode 100644 index 0000000000..4ce04015f1 --- /dev/null +++ b/mapstruct/src/test/java/com/baeldung/mapper/unmappedproperties/CarMapperUnitTest.java @@ -0,0 +1,23 @@ +package com.baeldung.mapper.unmappedproperties; + +import com.baeldung.unmappedproperties.dto.CarDTO; +import com.baeldung.unmappedproperties.entity.Car; +import com.baeldung.unmappedproperties.mapper.CarMapper; +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class CarMapperUnitTest { + + @Test + public void givenCarEntitytoCar_whenMaps_thenCorrect() { + Car entity = new Car(); + entity.setId(1); + entity.setName("Toyota"); + + CarDTO carDto = CarMapper.INSTANCE.carToCarDTO(entity); + + assertThat(carDto.getId()).isEqualTo(entity.getId()); + assertThat(carDto.getName()).isEqualTo(entity.getName()); + } +} diff --git a/mapstruct/src/test/java/com/baeldung/mapper/unmappedproperties/DocumentMapperMappingIgnoreUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapper/unmappedproperties/DocumentMapperMappingIgnoreUnitTest.java new file mode 100644 index 0000000000..493c7f8686 --- /dev/null +++ b/mapstruct/src/test/java/com/baeldung/mapper/unmappedproperties/DocumentMapperMappingIgnoreUnitTest.java @@ -0,0 +1,45 @@ +package com.baeldung.mapper.unmappedproperties; + +import com.baeldung.unmappedproperties.dto.DocumentDTO; +import com.baeldung.unmappedproperties.entity.Document; +import com.baeldung.unmappedproperties.mapper.DocumentMapperMappingIgnore; +import org.junit.Test; + +import java.util.Arrays; +import java.util.Date; + +import static org.assertj.core.api.Assertions.assertThat; + +public class DocumentMapperMappingIgnoreUnitTest { + + @Test + public void givenDocumentEntityToDocumentDto_whenMaps_thenCorrect() { + Document entity = new Document(); + entity.setId(1); + entity.setTitle("Price 13-42"); + entity.setText("List of positions......."); + entity.setModificationTime(new Date()); + + DocumentDTO dto = DocumentMapperMappingIgnore.INSTANCE.documentToDocumentDTO(entity); + + assertThat(dto.getId()).isEqualTo(entity.getId()); + assertThat(dto.getTitle()).isEqualTo(entity.getTitle()); + assertThat(dto.getText()).isEqualTo(entity.getText()); + } + + @Test + public void givenDocumentDtoToDocumentEntity_whenMaps_thenCorrect() { + DocumentDTO dto = new DocumentDTO(); + dto.setId(1); + dto.setTitle("Price 13-42"); + dto.setText("List of positions......."); + dto.setComments(Arrays.asList("Not all positions", "Wrong price values")); + dto.setAuthor("Author1"); + + Document entity = DocumentMapperMappingIgnore.INSTANCE.documentDTOToDocument(dto); + + assertThat(entity.getId()).isEqualTo(dto.getId()); + assertThat(entity.getTitle()).isEqualTo(dto.getTitle()); + assertThat(entity.getText()).isEqualTo(dto.getText()); + } +} \ No newline at end of file diff --git a/mapstruct/src/test/java/com/baeldung/mapper/unmappedproperties/DocumentMapperUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapper/unmappedproperties/DocumentMapperUnitTest.java new file mode 100644 index 0000000000..1d3645ca96 --- /dev/null +++ b/mapstruct/src/test/java/com/baeldung/mapper/unmappedproperties/DocumentMapperUnitTest.java @@ -0,0 +1,45 @@ +package com.baeldung.mapper.unmappedproperties; + +import com.baeldung.unmappedproperties.dto.DocumentDTO; +import com.baeldung.unmappedproperties.entity.Document; +import com.baeldung.unmappedproperties.mapper.DocumentMapper; +import org.junit.Test; + +import java.util.Arrays; +import java.util.Date; + +import static org.assertj.core.api.Assertions.assertThat; + +public class DocumentMapperUnitTest { + + @Test + public void givenDocumentEntityToDocumentDto_whenMaps_thenCorrect() { + Document entity = new Document(); + entity.setId(1); + entity.setTitle("Price 13-42"); + entity.setText("List of positions......."); + entity.setModificationTime(new Date()); + + DocumentDTO dto = DocumentMapper.INSTANCE.documentToDocumentDTO(entity); + + assertThat(dto.getId()).isEqualTo(entity.getId()); + assertThat(dto.getTitle()).isEqualTo(entity.getTitle()); + assertThat(dto.getText()).isEqualTo(entity.getText()); + } + + @Test + public void givenDocumentDtoToDocumentEntity_whenMaps_thenCorrect() { + DocumentDTO dto = new DocumentDTO(); + dto.setId(1); + dto.setTitle("Price 13-42"); + dto.setText("List of positions......."); + dto.setComments(Arrays.asList("Not all positions", "Wrong price values")); + dto.setAuthor("Author1"); + + Document entity = DocumentMapper.INSTANCE.documentDTOToDocument(dto); + + assertThat(entity.getId()).isEqualTo(dto.getId()); + assertThat(entity.getTitle()).isEqualTo(dto.getTitle()); + assertThat(entity.getText()).isEqualTo(dto.getText()); + } +} \ No newline at end of file diff --git a/mapstruct/src/test/java/com/baeldung/mapper/unmappedproperties/DocumentMapperUnmappedPolicyUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapper/unmappedproperties/DocumentMapperUnmappedPolicyUnitTest.java new file mode 100644 index 0000000000..f6666a52ec --- /dev/null +++ b/mapstruct/src/test/java/com/baeldung/mapper/unmappedproperties/DocumentMapperUnmappedPolicyUnitTest.java @@ -0,0 +1,45 @@ +package com.baeldung.mapper.unmappedproperties; + +import com.baeldung.unmappedproperties.dto.DocumentDTO; +import com.baeldung.unmappedproperties.entity.Document; +import com.baeldung.unmappedproperties.mapper.DocumentMapperUnmappedPolicy; +import org.junit.Test; + +import java.util.Arrays; +import java.util.Date; + +import static org.assertj.core.api.Assertions.assertThat; + +public class DocumentMapperUnmappedPolicyUnitTest { + + @Test + public void givenDocumentEntityToDocumentDto_whenMaps_thenCorrect() { + Document entity = new Document(); + entity.setId(1); + entity.setTitle("Price 13-42"); + entity.setText("List of positions......."); + entity.setModificationTime(new Date()); + + DocumentDTO dto = DocumentMapperUnmappedPolicy.INSTANCE.documentToDocumentDTO(entity); + + assertThat(dto.getId()).isEqualTo(entity.getId()); + assertThat(dto.getTitle()).isEqualTo(entity.getTitle()); + assertThat(dto.getText()).isEqualTo(entity.getText()); + } + + @Test + public void givenDocumentDtoToDocumentEntity_whenMaps_thenCorrect() { + DocumentDTO dto = new DocumentDTO(); + dto.setId(1); + dto.setTitle("Price 13-42"); + dto.setText("List of positions......."); + dto.setComments(Arrays.asList("Not all positions", "Wrong price values")); + dto.setAuthor("Author1"); + + Document entity = DocumentMapperUnmappedPolicy.INSTANCE.documentDTOToDocument(dto); + + assertThat(entity.getId()).isEqualTo(dto.getId()); + assertThat(entity.getTitle()).isEqualTo(dto.getTitle()); + assertThat(entity.getText()).isEqualTo(dto.getText()); + } +} \ No newline at end of file diff --git a/mapstruct/src/test/java/com/baeldung/mapper/unmappedproperties/DocumentMapperWithConfigUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapper/unmappedproperties/DocumentMapperWithConfigUnitTest.java new file mode 100644 index 0000000000..c9409225f5 --- /dev/null +++ b/mapstruct/src/test/java/com/baeldung/mapper/unmappedproperties/DocumentMapperWithConfigUnitTest.java @@ -0,0 +1,45 @@ +package com.baeldung.mapper.unmappedproperties; + +import com.baeldung.unmappedproperties.dto.DocumentDTO; +import com.baeldung.unmappedproperties.entity.Document; +import com.baeldung.unmappedproperties.mapper.DocumentMapperWithConfig; +import org.junit.Test; + +import java.util.Arrays; +import java.util.Date; + +import static org.assertj.core.api.Assertions.assertThat; + +public class DocumentMapperWithConfigUnitTest { + + @Test + public void givenDocumentEntityToDocumentDto_whenMaps_thenCorrect() { + Document entity = new Document(); + entity.setId(1); + entity.setTitle("Price 13-42"); + entity.setText("List of positions......."); + entity.setModificationTime(new Date()); + + DocumentDTO dto = DocumentMapperWithConfig.INSTANCE.documentToDocumentDTO(entity); + + assertThat(dto.getId()).isEqualTo(entity.getId()); + assertThat(dto.getTitle()).isEqualTo(entity.getTitle()); + assertThat(dto.getText()).isEqualTo(entity.getText()); + } + + @Test + public void givenDocumentDtoToDocumentEntity_whenMaps_thenCorrect() { + DocumentDTO dto = new DocumentDTO(); + dto.setId(1); + dto.setTitle("Price 13-42"); + dto.setText("List of positions......."); + dto.setComments(Arrays.asList("Not all positions", "Wrong price values")); + dto.setAuthor("Author1"); + + Document entity = DocumentMapperWithConfig.INSTANCE.documentDTOToDocument(dto); + + assertThat(entity.getId()).isEqualTo(dto.getId()); + assertThat(entity.getTitle()).isEqualTo(dto.getTitle()); + assertThat(entity.getText()).isEqualTo(dto.getText()); + } +} \ No newline at end of file diff --git a/maven-all/README.md b/maven-all/README.md index d014f323d2..b20d944b14 100644 --- a/maven-all/README.md +++ b/maven-all/README.md @@ -1,3 +1,7 @@ +## Apache Maven + +This module contains articles about Apache Maven. Please refer to its submodules. + ### Relevant Articles -- [Apache Maven Tutorial](https://www.baeldung.com/maven) \ No newline at end of file +- [Apache Maven Tutorial](https://www.baeldung.com/maven) diff --git a/maven-all/maven-war-plugin/README.md b/maven-all/maven-war-plugin/README.md index d559fea80b..09d33772f0 100644 --- a/maven-all/maven-war-plugin/README.md +++ b/maven-all/maven-war-plugin/README.md @@ -1,3 +1,7 @@ +## Maven WAR Plugin + +This module contains articles about the Maven WAR Plugin. + ### 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 +- [Eclipse Error: web.xml is missing and failOnMissingWebXml is set to true](https://www.baeldung.com/eclipse-error-web-xml-missing) diff --git a/maven-all/maven/README.md b/maven-all/maven/README.md index abe7fc4a80..ced4a52703 100644 --- a/maven-all/maven/README.md +++ b/maven-all/maven/README.md @@ -1,13 +1,18 @@ +## Apache Maven + +This module contains articles about core Apache Maven. Articles about other Maven plugins (such as the Maven WAR Plugin) +have their own dedicated modules. + ### Relevant Articles -- [Guide to the Core Maven Plugins](http://www.baeldung.com/core-maven-plugins) -- [Maven Resources Plugin](http://www.baeldung.com/maven-resources-plugin) -- [Maven Compiler Plugin](http://www.baeldung.com/maven-compiler-plugin) -- [Quick Guide to the Maven Surefire Plugin](http://www.baeldung.com/maven-surefire-plugin) -- [The Maven Failsafe Plugin](http://www.baeldung.com/maven-failsafe-plugin) -- [The Maven Verifier Plugin](http://www.baeldung.com/maven-verifier-plugin) -- [The Maven Clean Plugin](http://www.baeldung.com/maven-clean-plugin) -- [Build a Jar with Maven and Ignore the Test Results](http://www.baeldung.com/maven-ignore-test-results) +- [Guide to the Core Maven Plugins](https://www.baeldung.com/core-maven-plugins) +- [Maven Resources Plugin](https://www.baeldung.com/maven-resources-plugin) +- [Maven Compiler Plugin](https://www.baeldung.com/maven-compiler-plugin) +- [Quick Guide to the Maven Surefire Plugin](https://www.baeldung.com/maven-surefire-plugin) +- [The Maven Failsafe Plugin](https://www.baeldung.com/maven-failsafe-plugin) +- [The Maven Verifier Plugin](https://www.baeldung.com/maven-verifier-plugin) +- [The Maven Clean Plugin](https://www.baeldung.com/maven-clean-plugin) +- [Build a Jar with Maven and Ignore the Test Results](https://www.baeldung.com/maven-ignore-test-results) - [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) diff --git a/maven-all/profiles/README.md b/maven-all/profiles/README.md index 22d5d7f70c..cfbe5c397f 100644 --- a/maven-all/profiles/README.md +++ b/maven-all/profiles/README.md @@ -1,3 +1,7 @@ +## Maven Profiles + +This module contains articles about Maven profiles. + ### Relevant Articles -- [Guide to Maven Profiles](https://www.baeldung.com/maven-profiles) \ No newline at end of file +- [Guide to Maven Profiles](https://www.baeldung.com/maven-profiles) diff --git a/maven-all/versions-maven-plugin/README.md b/maven-all/versions-maven-plugin/README.md index 8f5670f802..19414a2a4b 100644 --- a/maven-all/versions-maven-plugin/README.md +++ b/maven-all/versions-maven-plugin/README.md @@ -1,3 +1,7 @@ +## Versions Maven Plugin + +This module contains articles about the Versions Maven Plugin. + ### 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 +- [Use the Latest Version of a Dependency in Maven](https://www.baeldung.com/maven-dependency-latest-version) diff --git a/maven-archetype/README.md b/maven-archetype/README.md index 71821e3348..ba5a83fe14 100644 --- a/maven-archetype/README.md +++ b/maven-archetype/README.md @@ -1,4 +1,7 @@ -### Relevant Articles: -================================ +## Maven Archetype -- [Guide to Maven Archetype](http://www.baeldung.com/maven-archetype) +This module contains articles about the Maven Archetype Plugin. + +### Relevant Articles: + +- [Guide to Maven Archetype](https://www.baeldung.com/maven-archetype) diff --git a/maven-java-11/README.md b/maven-java-11/README.md new file mode 100644 index 0000000000..fcb6ea3f06 --- /dev/null +++ b/maven-java-11/README.md @@ -0,0 +1,7 @@ +## Maven and Java 11 + +This module contains articles about Maven with Java 11+. + +### Relevant Articles: + +- [Multi-Module Maven Application with Java Modules](https://www.baeldung.com/maven-multi-module-project-java-jpms) diff --git a/maven-polyglot/README.md b/maven-polyglot/README.md index 8635c8eddf..037b921ae7 100644 --- a/maven-polyglot/README.md +++ b/maven-polyglot/README.md @@ -1,3 +1,7 @@ +## Maven Polyglot + +This module contains articles about Maven Polyglot. + To run the maven-polyglot-json-app successfully, you first have to build the maven-polyglot-json-extension module using: mvn clean install. ### Relevant Articles: diff --git a/mesos-marathon/README.md b/mesos-marathon/README.md index 1d4d4995a8..65b2361698 100644 --- a/mesos-marathon/README.md +++ b/mesos-marathon/README.md @@ -1,5 +1,9 @@ +## Marathon and Mesos + +This module contains articles about Marathon and Mesos. + ### Relevant articles -- [Simple Jenkins Pipeline with Marathon and Mesos](http://www.baeldung.com/jenkins-pipeline-with-marathon-mesos) +- [Simple Jenkins Pipeline with Marathon and Mesos](https://www.baeldung.com/jenkins-pipeline-with-marathon-mesos) To run the pipeline, please modify the dockerise.sh file with your own useranema and password for docker login. diff --git a/metrics/README.md b/metrics/README.md index c7772bffa0..d344a2707f 100644 --- a/metrics/README.md +++ b/metrics/README.md @@ -1,5 +1,5 @@ ## Relevant articles: -- [Intro to Dropwizard Metrics](http://www.baeldung.com/dropwizard-metrics) -- [Introduction to Netflix Servo](http://www.baeldung.com/netflix-servo) -- [Quick Guide to Micrometer](http://www.baeldung.com/micrometer) +- [Intro to Dropwizard Metrics](https://www.baeldung.com/dropwizard-metrics) +- [Introduction to Netflix Servo](https://www.baeldung.com/netflix-servo) +- [Quick Guide to Micrometer](https://www.baeldung.com/micrometer) diff --git a/micronaut/README.md b/micronaut/README.md index 10a68ff2f8..0a39cf9e33 100644 --- a/micronaut/README.md +++ b/micronaut/README.md @@ -1,2 +1,2 @@ ### Relevant Articles: -- [Introduction to Micronaut Framework](http://www.baeldung.com/micronaut) +- [Introduction to Micronaut Framework](https://www.baeldung.com/micronaut) diff --git a/microprofile/README.md b/microprofile/README.md index 1a28487e89..7525ee5bff 100644 --- a/microprofile/README.md +++ b/microprofile/README.md @@ -1,3 +1,3 @@ ### Relevant articles: -- [Building Microservices with Eclipse MicroProfile](http://www.baeldung.com/eclipse-microprofile) +- [Building Microservices with Eclipse MicroProfile](https://www.baeldung.com/eclipse-microprofile) diff --git a/ml/README.md b/ml/README.md index f4712a94da..1362f2840c 100644 --- a/ml/README.md +++ b/ml/README.md @@ -2,4 +2,4 @@ This is a soft introduction to ML using [deeplearning4j](https://deeplearning4j.org) library ### Relevant Articles: -- [Logistic Regression in Java](http://www.baeldung.com/) +- [Logistic Regression in Java](https://www.baeldung.com/) diff --git a/msf4j/README.md b/msf4j/README.md index 7c66b8dc5f..b7f2c5a546 100644 --- a/msf4j/README.md +++ b/msf4j/README.md @@ -1,3 +1,3 @@ ### Relevant Articles: -- [Introduction to Java Microservices with MSF4J](http://www.baeldung.com/msf4j) +- [Introduction to Java Microservices with MSF4J](https://www.baeldung.com/msf4j) diff --git a/muleesb/README.md b/muleesb/README.md index 8da4e595e3..555a10b5cc 100644 --- a/muleesb/README.md +++ b/muleesb/README.md @@ -1,3 +1,3 @@ ### Relevant Articles: -- [Getting Started With Mule ESB](http://www.baeldung.com/mule-esb) +- [Getting Started With Mule ESB](https://www.baeldung.com/mule-esb) diff --git a/mustache/README.md b/mustache/README.md index fa41eb4f4d..c36080b56f 100644 --- a/mustache/README.md +++ b/mustache/README.md @@ -1,3 +1,3 @@ ### Relevant Articles: -- [Introduction to Mustache](http://www.baeldung.com/mustache) -- [Guide to Mustache with Spring Boot](http://www.baeldung.com/spring-boot-mustache) +- [Introduction to Mustache](https://www.baeldung.com/mustache) +- [Guide to Mustache with Spring Boot](https://www.baeldung.com/spring-boot-mustache) diff --git a/mybatis/README.md b/mybatis/README.md index 7c366aeab6..57687d3da1 100644 --- a/mybatis/README.md +++ b/mybatis/README.md @@ -1,2 +1,2 @@ ### Relevant Articles: -- [Quick Guide to MyBatis](http://www.baeldung.com/mybatis) +- [Quick Guide to MyBatis](https://www.baeldung.com/mybatis) diff --git a/oauth2-framework-impl/README.md b/oauth2-framework-impl/README.md index 60fefe3415..ea9686b451 100644 --- a/oauth2-framework-impl/README.md +++ b/oauth2-framework-impl/README.md @@ -1,3 +1,7 @@ +## OAuth 2.0 Implementation + +This module contains articles about the implementation of OAuth2 with Java EE. + ### Relevant Articles - [Implementing The OAuth 2.0 Authorization Framework Using Java EE](https://www.baeldung.com/java-ee-oauth2-implementation) diff --git a/orika/README.md b/orika/README.md index 4ed033c170..0096793507 100644 --- a/orika/README.md +++ b/orika/README.md @@ -1,2 +1,2 @@ ### Relevant Articles: -- [Mapping with Orika](http://www.baeldung.com/orika-mapping) +- [Mapping with Orika](https://www.baeldung.com/orika-mapping) diff --git a/osgi/readme.md b/osgi/README.md similarity index 90% rename from osgi/readme.md rename to osgi/README.md index e380ae06c3..732f624302 100644 --- a/osgi/readme.md +++ b/osgi/README.md @@ -1,5 +1,9 @@ -OSGi -==== +## OSGi + +This module contains articles about OSGi. + +### Relevant articles: + - [Introduction to OSGi](https://www.baeldung.com/osgi) Info --- @@ -84,11 +88,7 @@ Oxygen.1 Wed, 6 Sep 2017 -- 17:00 (-0400) org.eclipse.osgi_3.12.1.v20170821-1548.jar - = = NOT GOOD = = - - ## Relevant articles: - - [Introduction to OSGi](http://www.baeldung.com/osgi) - + = = NOT GOOD = = diff --git a/patterns/README.md b/patterns/README.md new file mode 100644 index 0000000000..bbc48e3f34 --- /dev/null +++ b/patterns/README.md @@ -0,0 +1,3 @@ +## Patterns + +This module contains articles about design patterns. diff --git a/patterns/backoff-jitter/README.md b/patterns/design-patterns-cloud/README.md similarity index 100% rename from patterns/backoff-jitter/README.md rename to patterns/design-patterns-cloud/README.md diff --git a/patterns/backoff-jitter/pom.xml b/patterns/design-patterns-cloud/pom.xml similarity index 95% rename from patterns/backoff-jitter/pom.xml rename to patterns/design-patterns-cloud/pom.xml index 739aa87873..b5265a1f94 100644 --- a/patterns/backoff-jitter/pom.xml +++ b/patterns/design-patterns-cloud/pom.xml @@ -4,10 +4,10 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.baeldung - backoff-jitter + design-patterns-cloud 1.0.0-SNAPSHOT pom - backoff-jitter + design-patterns-cloud @@ -52,4 +52,4 @@ 0.16.0 - \ No newline at end of file + diff --git a/patterns/backoff-jitter/src/test/java/com/baeldung/backoff/jitter/BackoffWithJitterTest.java b/patterns/design-patterns-cloud/src/test/java/com/baeldung/backoff/jitter/BackoffWithJitterTest.java similarity index 100% rename from patterns/backoff-jitter/src/test/java/com/baeldung/backoff/jitter/BackoffWithJitterTest.java rename to patterns/design-patterns-cloud/src/test/java/com/baeldung/backoff/jitter/BackoffWithJitterTest.java diff --git a/patterns/dipmodular/README.md b/patterns/dipmodular/README.md new file mode 100644 index 0000000000..ba46158b8c --- /dev/null +++ b/patterns/dipmodular/README.md @@ -0,0 +1,3 @@ +## Relevant Articles: + +- [The Dependency Inversion Principle in Java](https://www.baeldung.com/java-dependency-inversion-principle) diff --git a/patterns/pom.xml b/patterns/pom.xml index 196c3c3319..331415bf5b 100644 --- a/patterns/pom.xml +++ b/patterns/pom.xml @@ -24,7 +24,7 @@ design-patterns-structural solid dip - backoff-jitter + design-patterns-cloud diff --git a/pdf/README.md b/pdf/README.md index 5454d2b2de..8c7bd1fa26 100644 --- a/pdf/README.md +++ b/pdf/README.md @@ -1,3 +1,7 @@ +## PDF + +This module contains articles about PDF files. + ### Relevant Articles: -- [PDF Conversions in Java](http://www.baeldung.com/pdf-conversions-java) -- [Creating PDF Files in Java](http://www.baeldung.com/java-pdf-creation) +- [PDF Conversions in Java](https://www.baeldung.com/pdf-conversions-java) +- [Creating PDF Files in Java](https://www.baeldung.com/java-pdf-creation) diff --git a/performance-tests/README.md b/performance-tests/README.md index 0064157966..09ed26ae19 100644 --- a/performance-tests/README.md +++ b/performance-tests/README.md @@ -1,10 +1,14 @@ +## Performance Tests + +This module contains articles about performance testing. + ### Relevant Articles: -- [Performance of Java Mapping Frameworks](http://www.baeldung.com/java-performance-mapping-frameworks) +- [Performance of Java Mapping Frameworks](https://www.baeldung.com/java-performance-mapping-frameworks) ### Running To run the performance benchmarks: 1: `mvn clean install` -2: `java -jar target/benchmarks.jar` \ No newline at end of file +2: `java -jar target/benchmarks.jar` diff --git a/persistence-modules/README.md b/persistence-modules/README.md new file mode 100644 index 0000000000..f6abc5782a --- /dev/null +++ b/persistence-modules/README.md @@ -0,0 +1,3 @@ +## Persistence Modules + +This module contains articles about persistence. Actual articles go into its submodules. diff --git a/persistence-modules/hibernate-mapping/README.md b/persistence-modules/hibernate-mapping/README.md index 99374f9135..3271f0c1b6 100644 --- a/persistence-modules/hibernate-mapping/README.md +++ b/persistence-modules/hibernate-mapping/README.md @@ -1,7 +1,10 @@ +## Hibernate Mapping + +This module contains articles about Object-relational Mapping (ORM) with Hibernate. ### Relevant Articles: - [Persisting Maps with Hibernate](https://www.baeldung.com/hibernate-persisting-maps) - [Difference Between @Size, @Length, and @Column(length=value)](https://www.baeldung.com/jpa-size-length-column-differences) - [Hibernate Validator Specific Constraints](https://www.baeldung.com/hibernate-validator-constraints) -- [Hibernate One to Many Annotation Tutorial](http://www.baeldung.com/hibernate-one-to-many) \ No newline at end of file +- [Hibernate One to Many Annotation Tutorial](http://www.baeldung.com/hibernate-one-to-many) diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/wherejointable/Group.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/wherejointable/Group.java new file mode 100644 index 0000000000..04684eceac --- /dev/null +++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/wherejointable/Group.java @@ -0,0 +1,56 @@ +package com.baeldung.hibernate.wherejointable; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.ManyToMany; + +@Entity(name = "e_group") +public class Group { + + @Id + @GeneratedValue + private Long id; + + private String name; + + @ManyToMany(mappedBy = "groups") + private List users = new ArrayList<>(); + + public Group(String name) { + this.name = name; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getUsers() { + return users; + } + + public void setUsers(List users) { + this.users = users; + } + + @Override + public String toString() { + return "Group [name=" + name + "]"; + } + +} diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/wherejointable/User.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/wherejointable/User.java new file mode 100644 index 0000000000..7fc077eeb2 --- /dev/null +++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/wherejointable/User.java @@ -0,0 +1,74 @@ +package com.baeldung.hibernate.wherejointable; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; + +import org.hibernate.annotations.WhereJoinTable; + +@Entity +public class User { + + @Id + @GeneratedValue + private Long id; + + private String name; + + @ManyToMany + @JoinTable(name = "r_user_group", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "group_id")) + private List groups = new ArrayList<>(); + + @WhereJoinTable(clause = "role='MODERATOR'") + @ManyToMany + @JoinTable(name = "r_user_group", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "group_id")) + private List moderatorGroups = new ArrayList<>(); + + public User(String name) { + this.name = name; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getGroups() { + return groups; + } + + public void setGroups(List groups) { + this.groups = groups; + } + + public void setModeratorGroups(List moderatorGroups) { + this.moderatorGroups = moderatorGroups; + } + + public List getModeratorGroups() { + return moderatorGroups; + } + + @Override + public String toString() { + return "User [name=" + name + "]"; + } + +} diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/wherejointable/UserGroupRelation.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/wherejointable/UserGroupRelation.java new file mode 100644 index 0000000000..00dd19699c --- /dev/null +++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/wherejointable/UserGroupRelation.java @@ -0,0 +1,31 @@ +package com.baeldung.hibernate.wherejointable; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.Id; + +@Entity(name = "r_user_group") +public class UserGroupRelation implements Serializable { + + @Id + @Column(name = "user_id", insertable = false, updatable = false) + private final Long userId; + + @Id + @Column(name = "group_id", insertable = false, updatable = false) + private final Long groupId; + + @Enumerated(EnumType.STRING) + private final UserGroupRole role; + + public UserGroupRelation(Long userId, Long groupId, UserGroupRole role) { + this.userId = userId; + this.groupId = groupId; + this.role = role; + } + +} diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/wherejointable/UserGroupRole.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/wherejointable/UserGroupRole.java new file mode 100644 index 0000000000..62d9cb28ea --- /dev/null +++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/wherejointable/UserGroupRole.java @@ -0,0 +1,7 @@ +package com.baeldung.hibernate.wherejointable; + +public enum UserGroupRole { + + MEMBER, MODERATOR + +} diff --git a/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/wherejointable/HibernateWhereJoinTableIntegrationTest.java b/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/wherejointable/HibernateWhereJoinTableIntegrationTest.java new file mode 100644 index 0000000000..93783216ce --- /dev/null +++ b/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/wherejointable/HibernateWhereJoinTableIntegrationTest.java @@ -0,0 +1,118 @@ +package com.baeldung.hibernate.wherejointable; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.List; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.cfg.Configuration; +import org.hibernate.dialect.H2Dialect; +import org.hibernate.service.ServiceRegistry; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class HibernateWhereJoinTableIntegrationTest { + + private static SessionFactory sessionFactory; + + private Session session; + + /** + * Test data + */ + private User user1; + private User user2; + private User user3; + private Group group1; + private Group group2; + + @BeforeClass + public static void beforeTests() { + Configuration configuration = new Configuration().addAnnotatedClass(User.class) + .addAnnotatedClass(Group.class) + .addAnnotatedClass(UserGroupRelation.class) + .setProperty("hibernate.dialect", H2Dialect.class.getName()) + .setProperty("hibernate.connection.driver_class", org.h2.Driver.class.getName()) + .setProperty("hibernate.connection.url", "jdbc:h2:mem:test") + .setProperty("hibernate.connection.username", "sa") + .setProperty("hibernate.connection.password", "") + .setProperty("hibernate.hbm2ddl.auto", "update"); + + ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() + .applySettings(configuration.getProperties()) + .build(); + + sessionFactory = configuration.buildSessionFactory(serviceRegistry); + } + + @Before + public void setUp() { + session = sessionFactory.openSession(); + session.beginTransaction(); + + user1 = new User("user1"); + user2 = new User("user2"); + user3 = new User("user3"); + + group1 = new Group("group1"); + group2 = new Group("group2"); + + session.save(group1); + session.save(group2); + + session.save(user1); + session.save(user2); + session.save(user3); + + saveRelation(user1, group1, UserGroupRole.MODERATOR); + saveRelation(user2, group1, UserGroupRole.MODERATOR); + saveRelation(user3, group1, UserGroupRole.MEMBER); + + saveRelation(user1, group2, UserGroupRole.MEMBER); + saveRelation(user2, group2, UserGroupRole.MODERATOR); + } + + @After + public void tearDown() { + session.getTransaction().commit(); + session.close(); + } + + @AfterClass + public static void afterTests() { + sessionFactory.close(); + } + + @Test + public void givenUser1_getGroups_returnsAllGroups() { + List groups = user1.getGroups(); + assertEquals(2, groups.size()); + + assertTrue(groups.contains(group1)); + assertTrue(groups.contains(group2)); + } + + @Test + public void givenUser1_getModeratorGroups_returnsOnlyModeratorGroups() { + List groups = user1.getModeratorGroups(); + assertEquals(1, groups.size()); + + assertTrue(groups.contains(group1)); + } + + private void saveRelation(User user, Group group, UserGroupRole role) { + UserGroupRelation relation = new UserGroupRelation(user.getId(), group.getId(), role); + + session.save(relation); + session.flush(); + session.refresh(user); + session.refresh(group); + } + +} diff --git a/persistence-modules/hibernate5/README.md b/persistence-modules/hibernate5/README.md index 65322f0cea..a8e2eae38b 100644 --- a/persistence-modules/hibernate5/README.md +++ b/persistence-modules/hibernate5/README.md @@ -1,4 +1,8 @@ -## Relevant articles: +## Hibernate 5 + +This module contains articles about Hibernate 5. + +### Relevant articles: - [Dynamic Mapping with Hibernate](http://www.baeldung.com/hibernate-dynamic-mapping) - [An Overview of Identifiers in Hibernate](http://www.baeldung.com/hibernate-identifiers) diff --git a/persistence-modules/java-jpa-2/README.md b/persistence-modules/java-jpa-2/README.md index 0e1889c1fc..1b4a175008 100644 --- a/persistence-modules/java-jpa-2/README.md +++ b/persistence-modules/java-jpa-2/README.md @@ -1,4 +1,8 @@ -# Relevant Articles +## JPA in Java + +This module contains articles about the Java Persistence API (JPA) in Java. + +### Relevant Articles - [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) @@ -6,3 +10,4 @@ - [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) +- More articles: [[<-- prev]](/java-jpa) \ No newline at end of file diff --git a/persistence-modules/java-jpa/README.md b/persistence-modules/java-jpa/README.md index 670203f10d..be4c7fb79a 100644 --- a/persistence-modules/java-jpa/README.md +++ b/persistence-modules/java-jpa/README.md @@ -1,4 +1,8 @@ -# Relevant Articles +## JPA in Java + +This module contains articles about the Java Persistence API (JPA) in Java. + +### Relevant Articles - [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) @@ -10,3 +14,4 @@ - [Defining JPA Entities](https://www.baeldung.com/jpa-entities) - [JPA @Basic Annotation](https://www.baeldung.com/jpa-basic-annotation) - [Persisting Enums in JPA](https://www.baeldung.com/jpa-persisting-enums-in-jpa) +- More articles: [[next -->]](/java-jpa-2) diff --git a/persistence-modules/spring-data-dynamodb/README.MD b/persistence-modules/spring-data-dynamodb/README.MD index 9a6855ea0b..9f6cdfdb17 100644 --- a/persistence-modules/spring-data-dynamodb/README.MD +++ b/persistence-modules/spring-data-dynamodb/README.MD @@ -1,2 +1,6 @@ +## Spring Data with DynamoDB + +This module contains articles about Spring Data with DynamoDB. + ### Relevant Articles: - [DynamoDB in a Spring Boot Application Using Spring Data](http://www.baeldung.com/spring-data-dynamodb) diff --git a/persistence-modules/spring-data-eclipselink/README.md b/persistence-modules/spring-data-eclipselink/README.md index 7981470488..3bad63d7ef 100644 --- a/persistence-modules/spring-data-eclipselink/README.md +++ b/persistence-modules/spring-data-eclipselink/README.md @@ -1,3 +1,8 @@ +## Spring Data with EclipseLink + +This module contains articles about Spring Data with EclipseLink. + ### Relevant articles - [A Guide to EclipseLink with Spring](http://www.baeldung.com/spring-eclipselink) +- [Pessimistic Locking in JPA](https://www.baeldung.com/jpa-pessimistic-locking) diff --git a/persistence-modules/spring-data-keyvalue/README.md b/persistence-modules/spring-data-keyvalue/README.md index f76cf4d5ac..9f53a11b2c 100644 --- a/persistence-modules/spring-data-keyvalue/README.md +++ b/persistence-modules/spring-data-keyvalue/README.md @@ -1,2 +1,6 @@ +## Spring Data Key-Value + +This module contains articles about Spring Data Key-Value + ### Relevant Articles: - [A Guide to Spring Data Key Value](http://www.baeldung.com/spring-data-key-value) diff --git a/persistence-modules/spring-data-solr/README.md b/persistence-modules/spring-data-solr/README.md index fbce5280e3..c282fd2ce7 100644 --- a/persistence-modules/spring-data-solr/README.md +++ b/persistence-modules/spring-data-solr/README.md @@ -1,2 +1,6 @@ +## Spring Data with Solr + +This module contains articles about Spring Data with Solr. + ### Relevant Articles: - [Introduction to Spring Data Solr](http://www.baeldung.com/spring-data-solr) diff --git a/persistence-modules/spring-hibernate-3/README.md b/persistence-modules/spring-hibernate-3/README.md index ac840b6f66..898c6522a9 100644 --- a/persistence-modules/spring-hibernate-3/README.md +++ b/persistence-modules/spring-hibernate-3/README.md @@ -1,13 +1,12 @@ -========= +## Spring with Hibernate 3 -## Spring with Hibernate 3 Example Project +This module contains articles about Spring with Hibernate 3 + +### Relevant Articles: - -### Relevant ArticleS: - [Hibernate 3 with Spring](http://www.baeldung.com/hibernate3-spring) - [HibernateException: No Hibernate Session Bound to Thread in Hibernate 3](http://www.baeldung.com/no-hibernate-session-bound-to-thread-exception) - ### Quick Start ``` diff --git a/persistence-modules/spring-hibernate-5/README.md b/persistence-modules/spring-hibernate-5/README.md index 7a18761a7b..a74600a47f 100644 --- a/persistence-modules/spring-hibernate-5/README.md +++ b/persistence-modules/spring-hibernate-5/README.md @@ -1,3 +1,7 @@ +## Hibernate 5 with Spring + +This module contains articles about Hibernate 5 with Spring. + ### Relevant articles - [Hibernate Many to Many Annotation Tutorial](http://www.baeldung.com/hibernate-many-to-many) @@ -7,4 +11,4 @@ - [@DynamicUpdate with Spring Data JPA](https://www.baeldung.com/spring-data-jpa-dynamicupdate) - [Hibernate Second-Level Cache](http://www.baeldung.com/hibernate-second-level-cache) - [Deleting Objects with Hibernate](http://www.baeldung.com/delete-with-hibernate) -- [Spring, Hibernate and a JNDI Datasource](http://www.baeldung.com/spring-persistence-jpa-jndi-datasource) \ No newline at end of file +- [Spring, Hibernate and a JNDI Datasource](http://www.baeldung.com/spring-persistence-jpa-jndi-datasource) diff --git a/play-framework/README.md b/play-framework/README.md index 0fd13fba27..a28c3f7ad7 100644 --- a/play-framework/README.md +++ b/play-framework/README.md @@ -1,4 +1,8 @@ -###Relevant Articles: -- [REST API with Play Framework in Java](http://www.baeldung.com/rest-api-with-play) -- [Routing In Play Applications in Java](http://www.baeldung.com/routing-in-play) -- [Introduction To Play In Java](http://www.baeldung.com/java-intro-to-the-play-framework) +## Play Framework + +This module contains articles about the Play Framework. + +### Relevant Articles: +- [REST API with Play Framework in Java](https://www.baeldung.com/rest-api-with-play) +- [Routing In Play Applications in Java](https://www.baeldung.com/routing-in-play) +- [Introduction To Play In Java](https://www.baeldung.com/java-intro-to-the-play-framework) diff --git a/pom.xml b/pom.xml index cdc42906d3..02f4e720c0 100644 --- a/pom.xml +++ b/pom.xml @@ -366,7 +366,6 @@ asciidoctor asm atomix - autovalue aws aws-lambda axon @@ -381,6 +380,7 @@ checker-plugin cloud-foundry-uaa/cf-uaa-oauth2-client cloud-foundry-uaa/cf-uaa-oauth2-resource-server + code-generation core-groovy core-groovy-2 core-groovy-collections @@ -415,6 +415,7 @@ core-java-modules/core-java-io-files core-java-modules/core-java-nio core-java-modules/core-java-security + core-java-modules/core-java-exceptions core-java-modules/core-java-lang-syntax core-java-modules/core-java-lang-syntax-2 core-java-modules/core-java-lang @@ -458,6 +459,7 @@ guava guava-io guava-collections + guava-collections-map guava-collections-set guava-modules @@ -597,6 +599,7 @@ spring-boot-performance spring-boot-properties + spring-security-kerberos oauth2-framework-impl @@ -665,7 +668,6 @@ spring-activiti spring-akka - spring-all spring-amqp spring-aop spring-apache-camel @@ -684,17 +686,20 @@ spring-boot-crud spring-boot-ctx-fluent spring-boot-custom-starter - spring-boot-disable-console-logging spring-boot-jasypt spring-boot-keycloak spring-boot-kotlin spring-boot-logging-log4j2 - spring-boot-management spring-boot-mvc spring-boot-mvc-birt - spring-boot-ops - spring-boot-ops-2 + spring-boot-environment + spring-boot-deployment + spring-boot-runtime + spring-boot-runtime/disabling-console-jul + spring-boot-runtime/disabling-console-log4j2 + spring-boot-runtime/disabling-console-logback + spring-boot-artifacts spring-boot-rest spring-boot-data spring-boot-parent @@ -702,6 +707,7 @@ spring-boot-security spring-boot-testing spring-boot-vue + spring-caching spring-boot-libraries @@ -712,6 +718,7 @@ spring-core spring-core-2 + spring-core-3 spring-cucumber spring-data-rest @@ -743,6 +750,7 @@ spring-mobile spring-mockito + spring-mvc-basics-2 spring-mvc-forms-jsp spring-mvc-forms-thymeleaf spring-mvc-java @@ -771,6 +779,8 @@ spring-rest-simple spring-resttemplate spring-roo + + spring-scheduling spring-security-acl spring-security-angular/server spring-security-cache-control @@ -795,6 +805,7 @@ spring-security-thymeleaf spring-security-x509 spring-session + spring-shell spring-sleuth spring-soap spring-social-login @@ -878,7 +889,6 @@ spring-5-security-cognito spring-activiti spring-akka - spring-all spring-aop spring-apache-camel spring-batch @@ -1040,7 +1050,7 @@ core-kotlin-2 core-kotlin-io - jenkins/hello-world + jenkins/plugins jhipster jws @@ -1119,7 +1129,6 @@ asciidoctor asm atomix - autovalue aws aws-lambda axon @@ -1132,6 +1141,7 @@ checker-plugin cloud-foundry-uaa/cf-uaa-oauth2-client cloud-foundry-uaa/cf-uaa-oauth2-resource-server + code-generation core-groovy core-groovy-2 core-groovy-collections @@ -1164,6 +1174,7 @@ core-java-modules/core-java-io-files core-java-modules/core-java-nio core-java-modules/core-java-security + core-java-modules/core-java-exceptions core-java-modules/core-java-lang-syntax core-java-modules/core-java-lang-syntax-2 core-java-modules/core-java-lang @@ -1204,6 +1215,7 @@ guava guava-io guava-collections + guava-collections-map guava-collections-set guava-modules @@ -1388,7 +1400,6 @@ spring-5-security-cognito spring-activiti spring-akka - spring-all spring-amqp spring-aop spring-apache-camel @@ -1406,23 +1417,26 @@ spring-boot-crud spring-boot-ctx-fluent spring-boot-custom-starter - spring-boot-disable-console-logging spring-boot-jasypt spring-boot-keycloak spring-boot-logging-log4j2 - spring-boot-management spring-boot-mvc spring-boot-mvc-birt - spring-boot-ops - spring-boot-ops-2 + spring-boot-environment + spring-boot-deployment + spring-boot-runtime + spring-boot-runtime/disabling-console-jul + spring-boot-runtime/disabling-console-log4j2 + spring-boot-runtime/disabling-console-logback + spring-boot-artifacts spring-boot-rest spring-boot-data spring-boot-parent spring-boot-property-exp spring-boot-security spring-boot-vue - + spring-caching spring-cloud spring-cloud-bus @@ -1430,6 +1444,7 @@ spring-core spring-core-2 + spring-core-3 spring-cucumber spring-data-rest @@ -1461,6 +1476,7 @@ spring-mobile spring-mockito + spring-mvc-basics-2 spring-mvc-forms-jsp spring-mvc-forms-thymeleaf spring-mvc-java @@ -1490,6 +1506,7 @@ spring-resttemplate spring-roo + spring-scheduling spring-security-acl spring-security-angular/server spring-security-cache-control @@ -1512,6 +1529,7 @@ spring-security-thymeleaf spring-security-x509 spring-session + spring-shell spring-sleuth spring-soap spring-social-login @@ -1591,7 +1609,7 @@ core-kotlin core-kotlin-2 - jenkins/hello-world + jenkins/plugins jhipster jws diff --git a/protobuffer/README.md b/protobuffer/README.md index 4dcdb3cf52..329ad0e071 100644 --- a/protobuffer/README.md +++ b/protobuffer/README.md @@ -1,3 +1,7 @@ +## Google Protocol Buffer + +This module contains articles about Google Protocol Buffer. + ### Relevant articles -- [Introduction to Google Protocol Buffer](http://www.baeldung.com/google-protocol-buffer) +- [Introduction to Google Protocol Buffer](https://www.baeldung.com/google-protocol-buffer) diff --git a/rabbitmq/README.md b/rabbitmq/README.md index 11300b047f..218b1a4b14 100644 --- a/rabbitmq/README.md +++ b/rabbitmq/README.md @@ -1,3 +1,7 @@ -### Relevant articles -- [Introduction to RabbitMQ](http://www.baeldung.com/rabbitmq) +## RabbitMQ + +This module contains articles about RabbitMQ. + +### Relevant articles +- [Introduction to RabbitMQ](https://www.baeldung.com/rabbitmq) diff --git a/raml/README.MD b/raml/README.MD index 2a87b46021..2a3b9771be 100644 --- a/raml/README.MD +++ b/raml/README.MD @@ -1,2 +1,3 @@ -###The Course -The "REST With Spring" Classes: http://bit.ly/restwithspring +## RAML + +This module contains articles about the RESTful API Modeling Language (RAML). diff --git a/ratpack/README.md b/ratpack/README.md index 78e2f8ccfc..9c24670709 100644 --- a/ratpack/README.md +++ b/ratpack/README.md @@ -1,9 +1,13 @@ +## Ratpack + +This module contains articles about Ratpack. + ### Relevant articles -- [Introduction to Ratpack](http://www.baeldung.com/ratpack) -- [Ratpack Google Guice Integration](http://www.baeldung.com/ratpack-google-guice) +- [Introduction to Ratpack](https://www.baeldung.com/ratpack) +- [Ratpack Google Guice Integration](https://www.baeldung.com/ratpack-google-guice) - [Ratpack Integration with Spring Boot](http://www.baeldung.com/ratpack-spring-boot) -- [Ratpack with Hystrix](http://www.baeldung.com/ratpack-hystrix) +- [Ratpack with Hystrix](https://www.baeldung.com/ratpack-hystrix) - [Ratpack HTTP Client](https://www.baeldung.com/ratpack-http-client) - [Ratpack with RxJava](https://www.baeldung.com/ratpack-rxjava) - [Ratpack with Groovy](https://www.baeldung.com/ratpack-groovy) diff --git a/reactor-core/README.md b/reactor-core/README.md index 5f9d2d1bc2..e3cca35f86 100644 --- a/reactor-core/README.md +++ b/reactor-core/README.md @@ -1,5 +1,9 @@ +## Reactor Core + +This module contains articles about Reactor Core. + ### Relevant articles -- [Intro To Reactor Core](http://www.baeldung.com/reactor-core) -- [Combining Publishers in Project Reactor](http://www.baeldung.com/reactor-combine-streams) +- [Intro To Reactor Core](https://www.baeldung.com/reactor-core) +- [Combining Publishers in Project Reactor](https://www.baeldung.com/reactor-combine-streams) - [Programmatically Creating Sequences with Project Reactor](https://www.baeldung.com/flux-sequences-reactor) diff --git a/resteasy/README.md b/resteasy/README.md index 83051037d2..b576fbdf41 100644 --- a/resteasy/README.md +++ b/resteasy/README.md @@ -1,9 +1,8 @@ -========= - -## A Guide to RESTEasy +## RESTEasy +This module contains articles about RESTEasy. ### Relevant Articles: -- [A Guide to RESTEasy](http://www.baeldung.com/resteasy-tutorial) -- [RESTEasy Client API](http://www.baeldung.com/resteasy-client-tutorial) -- [CORS in JAX-RS](http://www.baeldung.com/cors-in-jax-rs) +- [A Guide to RESTEasy](https://www.baeldung.com/resteasy-tutorial) +- [RESTEasy Client API](https://www.baeldung.com/resteasy-client-tutorial) +- [CORS in JAX-RS](https://www.baeldung.com/cors-in-jax-rs) diff --git a/restx/README.md b/restx/README.md index 665f7ea82d..a8180c984d 100644 --- a/restx/README.md +++ b/restx/README.md @@ -1,4 +1,8 @@ -# Relevant Articles +## RESTX + +This module contains articles about RESTX. + +### Relevant Articles * [Introduction to RESTX](https://www.baeldung.com/java-restx) diff --git a/rsocket/README.md b/rsocket/README.md index fa232bc515..b859842bf3 100644 --- a/rsocket/README.md +++ b/rsocket/README.md @@ -1,3 +1,7 @@ -Relevant articles +## RSocket + +This module contains articles about RSocket. + +### Relevant articles - [Introduction to RSocket](https://www.baeldung.com/rsocket) diff --git a/rule-engines/README.md b/rule-engines/README.md index 6d3c0e93b4..64b1ec020d 100644 --- a/rule-engines/README.md +++ b/rule-engines/README.md @@ -1,3 +1,7 @@ -## Relevant articles: +## Rule Engines -- [List of Rules Engines in Java](http://www.baeldung.com/java-rule-engines) +This module contains articles about rule engines. Articles specific to a given rule engine go in the relevant submodule. + +### Relevant articles: + +- [List of Rules Engines in Java](https://www.baeldung.com/java-rule-engines) diff --git a/rxjava-2/README.md b/rxjava-2/README.md index 4182f3fa00..87f606a323 100644 --- a/rxjava-2/README.md +++ b/rxjava-2/README.md @@ -1,9 +1,14 @@ -## Relevant articles: +## RxJava -- [RxJava and Error Handling](http://www.baeldung.com/rxjava-error-handling) -- [RxJava 2 – Flowable](http://www.baeldung.com/rxjava-2-flowable) -- [RxJava Maybe](http://www.baeldung.com/rxjava-maybe) -- [Introduction to RxRelay for RxJava](http://www.baeldung.com/rx-relay) +This module contains articles about RxJava. + +### Relevant articles: + +- [RxJava and Error Handling](https://www.baeldung.com/rxjava-error-handling) +- [RxJava 2 – Flowable](https://www.baeldung.com/rxjava-2-flowable) +- [RxJava Maybe](https://www.baeldung.com/rxjava-maybe) +- [Introduction to RxRelay for RxJava](https://www.baeldung.com/rx-relay) - [Combining RxJava Completables](https://www.baeldung.com/rxjava-completable) - [Converting Synchronous and Asynchronous APIs to Observables using RxJava2](https://www.baeldung.com/rxjava-apis-to-observables) - [RxJava Hooks](https://www.baeldung.com/rxjava-hooks) +- More articles: [[<-- prev]](/rxjava) diff --git a/rxjava/README.md b/rxjava/README.md index f8a4ca1dbe..c9308ddcc6 100644 --- a/rxjava/README.md +++ b/rxjava/README.md @@ -1,15 +1,20 @@ -## Relevant articles: +## RxJava -- [Dealing with Backpressure with RxJava](http://www.baeldung.com/rxjava-backpressure) -- [How to Test RxJava?](http://www.baeldung.com/rxjava-testing) -- [Implementing Custom Operators in RxJava](http://www.baeldung.com/rxjava-custom-operators) -- [Introduction to RxJava](http://www.baeldung.com/rx-java) -- [Observable Utility Operators in RxJava](http://www.baeldung.com/rxjava-observable-operators) -- [Introduction to rxjava-jdbc](http://www.baeldung.com/rxjava-jdbc) -- [Schedulers in RxJava](http://www.baeldung.com/rxjava-schedulers) -- [Mathematical and Aggregate Operators in RxJava](http://www.baeldung.com/rxjava-math) -- [Combining Observables in RxJava](http://www.baeldung.com/rxjava-combine-observables) -- [RxJava StringObservable](http://www.baeldung.com/rxjava-string) -- [Filtering Observables in RxJava](http://www.baeldung.com/rxjava-filtering) -- [RxJava One Observable, Multiple Subscribers](http://www.baeldung.com/rxjava-multiple-subscribers-observable) +This module contains articles about RxJava. + +### Relevant articles: + +- [Dealing with Backpressure with RxJava](https://www.baeldung.com/rxjava-backpressure) +- [How to Test RxJava?](https://www.baeldung.com/rxjava-testing) +- [Implementing Custom Operators in RxJava](https://www.baeldung.com/rxjava-custom-operators) +- [Introduction to RxJava](https://www.baeldung.com/rx-java) +- [Observable Utility Operators in RxJava](https://www.baeldung.com/rxjava-observable-operators) +- [Introduction to rxjava-jdbc](https://www.baeldung.com/rxjava-jdbc) +- [Schedulers in RxJava](https://www.baeldung.com/rxjava-schedulers) +- [Mathematical and Aggregate Operators in RxJava](https://www.baeldung.com/rxjava-math) +- [Combining Observables in RxJava](https://www.baeldung.com/rxjava-combine-observables) +- [RxJava StringObservable](https://www.baeldung.com/rxjava-string) +- [Filtering Observables in RxJava](https://www.baeldung.com/rxjava-filtering) +- [RxJava One Observable, Multiple Subscribers](https://www.baeldung.com/rxjava-multiple-subscribers-observable) - [Difference Between Flatmap and Switchmap in RxJava](https://www.baeldung.com/rxjava-flatmap-switchmap) +- More articles: [[next -->]](/rxjava-2) diff --git a/saas/README.md b/saas/README.md index f537c7ff95..4effb2afa9 100644 --- a/saas/README.md +++ b/saas/README.md @@ -4,4 +4,4 @@ This module contains articles about software as a service (SAAS) ## Relevant articles: -- [JIRA REST API Integration](http://www.baeldung.com/jira-rest-api) +- [JIRA REST API Integration](https://www.baeldung.com/jira-rest-api) diff --git a/spark-java/README.md b/spark-java/README.md index 3f16b29b9f..b3ef62e631 100644 --- a/spark-java/README.md +++ b/spark-java/README.md @@ -3,4 +3,4 @@ This module contains articles about Spark ### Relevant Articles -- [Building an API With the Spark Java Framework](http://www.baeldung.com/spark-framework-rest-api) +- [Building an API With the Spark Java Framework](https://www.baeldung.com/spark-framework-rest-api) diff --git a/spf4j/README.md b/spf4j/README.md index a39cd01b5e..5c7bcf6116 100644 --- a/spf4j/README.md +++ b/spf4j/README.md @@ -1,3 +1,7 @@ -## Relevant articles: +## SPF4J + +This module contains articles about SPF4J. + +### Relevant articles: - [Introduction to SPF4J](https://www.baeldung.com/spf4j) diff --git a/spring-4/README.md b/spring-4/README.md index 5bc38d4a9d..46d9b71e5c 100644 --- a/spring-4/README.md +++ b/spring-4/README.md @@ -3,6 +3,7 @@ This module contains articles about Spring 4 ### Relevant Articles: -- [A Guide to Flips for Spring](http://www.baeldung.com/flips-spring) +- [A Guide to Flips for Spring](https://www.baeldung.com/flips-spring) - [Configuring a Hikari Connection Pool with Spring Boot](https://www.baeldung.com/spring-boot-hikari) -- [Spring JSON-P with Jackson](http://www.baeldung.com/spring-jackson-jsonp) +- [Spring JSON-P with Jackson](https://www.baeldung.com/spring-jackson-jsonp) +- [What’s New in Spring 4.3?](https://www.baeldung.com/whats-new-in-spring-4-3) diff --git a/spring-4/pom.xml b/spring-4/pom.xml index 59b74782ec..6c282b76a0 100644 --- a/spring-4/pom.xml +++ b/spring-4/pom.xml @@ -67,6 +67,27 @@ tomcat-embed-jasper provided + + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.easymock + easymock + ${easymock.version} + test + + + + org.hsqldb + hsqldb + ${hsqldb.version} + test + @@ -88,6 +109,8 @@ com.baeldung.flips.ApplicationConfig 1.0.1 + 3.6 + 2.4.0 diff --git a/spring-all/src/main/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationsTestController.java b/spring-4/src/main/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationsTestController.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationsTestController.java rename to spring-4/src/main/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationsTestController.java diff --git a/spring-all/src/main/java/org/baeldung/spring43/attributeannotations/ParamInterceptor.java b/spring-4/src/main/java/org/baeldung/spring43/attributeannotations/ParamInterceptor.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/attributeannotations/ParamInterceptor.java rename to spring-4/src/main/java/org/baeldung/spring43/attributeannotations/ParamInterceptor.java diff --git a/spring-all/src/main/java/org/baeldung/spring43/cache/Foo.java b/spring-4/src/main/java/org/baeldung/spring43/cache/Foo.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/cache/Foo.java rename to spring-4/src/main/java/org/baeldung/spring43/cache/Foo.java diff --git a/spring-all/src/main/java/org/baeldung/spring43/cache/FooService.java b/spring-4/src/main/java/org/baeldung/spring43/cache/FooService.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/cache/FooService.java rename to spring-4/src/main/java/org/baeldung/spring43/cache/FooService.java diff --git a/spring-all/src/main/java/org/baeldung/spring43/composedmapping/Appointment.java b/spring-4/src/main/java/org/baeldung/spring43/composedmapping/Appointment.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/composedmapping/Appointment.java rename to spring-4/src/main/java/org/baeldung/spring43/composedmapping/Appointment.java diff --git a/spring-all/src/main/java/org/baeldung/spring43/composedmapping/AppointmentService.java b/spring-4/src/main/java/org/baeldung/spring43/composedmapping/AppointmentService.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/composedmapping/AppointmentService.java rename to spring-4/src/main/java/org/baeldung/spring43/composedmapping/AppointmentService.java diff --git a/spring-all/src/main/java/org/baeldung/spring43/composedmapping/AppointmentsController.java b/spring-4/src/main/java/org/baeldung/spring43/composedmapping/AppointmentsController.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/composedmapping/AppointmentsController.java rename to spring-4/src/main/java/org/baeldung/spring43/composedmapping/AppointmentsController.java diff --git a/spring-all/src/main/java/org/baeldung/spring43/ctor/FooRepository.java b/spring-4/src/main/java/org/baeldung/spring43/ctor/FooRepository.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/ctor/FooRepository.java rename to spring-4/src/main/java/org/baeldung/spring43/ctor/FooRepository.java diff --git a/spring-all/src/main/java/org/baeldung/spring43/ctor/FooService.java b/spring-4/src/main/java/org/baeldung/spring43/ctor/FooService.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/ctor/FooService.java rename to spring-4/src/main/java/org/baeldung/spring43/ctor/FooService.java diff --git a/spring-all/src/main/java/org/baeldung/spring43/defaultmethods/DateHolder.java b/spring-4/src/main/java/org/baeldung/spring43/defaultmethods/DateHolder.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/defaultmethods/DateHolder.java rename to spring-4/src/main/java/org/baeldung/spring43/defaultmethods/DateHolder.java diff --git a/spring-all/src/main/java/org/baeldung/spring43/defaultmethods/IDateHolder.java b/spring-4/src/main/java/org/baeldung/spring43/defaultmethods/IDateHolder.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/defaultmethods/IDateHolder.java rename to spring-4/src/main/java/org/baeldung/spring43/defaultmethods/IDateHolder.java diff --git a/spring-all/src/main/java/org/baeldung/spring43/depresolution/FooRepository.java b/spring-4/src/main/java/org/baeldung/spring43/depresolution/FooRepository.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/depresolution/FooRepository.java rename to spring-4/src/main/java/org/baeldung/spring43/depresolution/FooRepository.java diff --git a/spring-all/src/main/java/org/baeldung/spring43/depresolution/FooService.java b/spring-4/src/main/java/org/baeldung/spring43/depresolution/FooService.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/depresolution/FooService.java rename to spring-4/src/main/java/org/baeldung/spring43/depresolution/FooService.java diff --git a/spring-all/src/main/java/org/baeldung/spring43/scopeannotations/AppPreferences.java b/spring-4/src/main/java/org/baeldung/spring43/scopeannotations/AppPreferences.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/scopeannotations/AppPreferences.java rename to spring-4/src/main/java/org/baeldung/spring43/scopeannotations/AppPreferences.java diff --git a/spring-all/src/main/java/org/baeldung/spring43/scopeannotations/InstanceCountingService.java b/spring-4/src/main/java/org/baeldung/spring43/scopeannotations/InstanceCountingService.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/scopeannotations/InstanceCountingService.java rename to spring-4/src/main/java/org/baeldung/spring43/scopeannotations/InstanceCountingService.java diff --git a/spring-all/src/main/java/org/baeldung/spring43/scopeannotations/LoginAction.java b/spring-4/src/main/java/org/baeldung/spring43/scopeannotations/LoginAction.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/scopeannotations/LoginAction.java rename to spring-4/src/main/java/org/baeldung/spring43/scopeannotations/LoginAction.java diff --git a/spring-all/src/main/java/org/baeldung/spring43/scopeannotations/ScopeTestController.java b/spring-4/src/main/java/org/baeldung/spring43/scopeannotations/ScopeTestController.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/scopeannotations/ScopeTestController.java rename to spring-4/src/main/java/org/baeldung/spring43/scopeannotations/ScopeTestController.java diff --git a/spring-all/src/main/java/org/baeldung/spring43/scopeannotations/UserPreferences.java b/spring-4/src/main/java/org/baeldung/spring43/scopeannotations/UserPreferences.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring43/scopeannotations/UserPreferences.java rename to spring-4/src/main/java/org/baeldung/spring43/scopeannotations/UserPreferences.java diff --git a/spring-all/src/main/resources/defaultmethods-context.xml b/spring-4/src/main/resources/defaultmethods-context.xml similarity index 100% rename from spring-all/src/main/resources/defaultmethods-context.xml rename to spring-4/src/main/resources/defaultmethods-context.xml diff --git a/spring-all/src/main/resources/implicit-ctor-context.xml b/spring-4/src/main/resources/implicit-ctor-context.xml similarity index 100% rename from spring-all/src/main/resources/implicit-ctor-context.xml rename to spring-4/src/main/resources/implicit-ctor-context.xml diff --git a/spring-all/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationConfiguration.java b/spring-4/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationConfiguration.java similarity index 91% rename from spring-all/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationConfiguration.java rename to spring-4/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationConfiguration.java index 347dd399e2..97ae651473 100644 --- a/spring-all/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationConfiguration.java +++ b/spring-4/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationConfiguration.java @@ -6,13 +6,13 @@ import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.view.InternalResourceViewResolver; @Configuration @ComponentScan @EnableWebMvc -public class AttributeAnnotationConfiguration implements WebMvcConfigurer { +public class AttributeAnnotationConfiguration extends WebMvcConfigurerAdapter { @Bean public ViewResolver viewResolver() { diff --git a/spring-all/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationIntegrationTest.java b/spring-4/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationIntegrationTest.java rename to spring-4/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/spring43/cache/CacheRefinementsConfiguration.java b/spring-4/src/test/java/org/baeldung/spring43/cache/CacheRefinementsConfiguration.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/spring43/cache/CacheRefinementsConfiguration.java rename to spring-4/src/test/java/org/baeldung/spring43/cache/CacheRefinementsConfiguration.java diff --git a/spring-all/src/test/java/org/baeldung/spring43/cache/CacheRefinementsIntegrationTest.java b/spring-4/src/test/java/org/baeldung/spring43/cache/CacheRefinementsIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/spring43/cache/CacheRefinementsIntegrationTest.java rename to spring-4/src/test/java/org/baeldung/spring43/cache/CacheRefinementsIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingConfiguration.java b/spring-4/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingConfiguration.java similarity index 97% rename from spring-all/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingConfiguration.java rename to spring-4/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingConfiguration.java index eddd56a11b..f1028ebefb 100644 --- a/spring-all/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingConfiguration.java +++ b/spring-4/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingConfiguration.java @@ -14,7 +14,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.context.annotation.Scope; -import static org.easymock.EasyMock.*; +import static org.easymock.EasyMock.replay; @Configuration @ComponentScan diff --git a/spring-all/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingIntegrationTest.java b/spring-4/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingIntegrationTest.java rename to spring-4/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/spring43/ctor/ConfigurationConstructorInjectionIntegrationTest.java b/spring-4/src/test/java/org/baeldung/spring43/ctor/ConfigurationConstructorInjectionIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/spring43/ctor/ConfigurationConstructorInjectionIntegrationTest.java rename to spring-4/src/test/java/org/baeldung/spring43/ctor/ConfigurationConstructorInjectionIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/spring43/ctor/FooRepositoryConfiguration.java b/spring-4/src/test/java/org/baeldung/spring43/ctor/FooRepositoryConfiguration.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/spring43/ctor/FooRepositoryConfiguration.java rename to spring-4/src/test/java/org/baeldung/spring43/ctor/FooRepositoryConfiguration.java diff --git a/spring-all/src/test/java/org/baeldung/spring43/ctor/FooServiceConfiguration.java b/spring-4/src/test/java/org/baeldung/spring43/ctor/FooServiceConfiguration.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/spring43/ctor/FooServiceConfiguration.java rename to spring-4/src/test/java/org/baeldung/spring43/ctor/FooServiceConfiguration.java diff --git a/spring-all/src/test/java/org/baeldung/spring43/ctor/ImplicitConstructorIntegrationTest.java b/spring-4/src/test/java/org/baeldung/spring43/ctor/ImplicitConstructorIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/spring43/ctor/ImplicitConstructorIntegrationTest.java rename to spring-4/src/test/java/org/baeldung/spring43/ctor/ImplicitConstructorIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/DefaultMethodsInjectionIntegrationTest.java b/spring-4/src/test/java/org/baeldung/spring43/defaultmethods/DefaultMethodsInjectionIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/spring43/defaultmethods/DefaultMethodsInjectionIntegrationTest.java rename to spring-4/src/test/java/org/baeldung/spring43/defaultmethods/DefaultMethodsInjectionIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/ITransactionalUnitTest.java b/spring-4/src/test/java/org/baeldung/spring43/defaultmethods/ITransactionalUnitTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/spring43/defaultmethods/ITransactionalUnitTest.java rename to spring-4/src/test/java/org/baeldung/spring43/defaultmethods/ITransactionalUnitTest.java diff --git a/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalIntegrationTest.java b/spring-4/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalIntegrationTest.java rename to spring-4/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalTestConfiguration.java b/spring-4/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalTestConfiguration.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalTestConfiguration.java rename to spring-4/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalTestConfiguration.java diff --git a/spring-all/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderConfiguration.java b/spring-4/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderConfiguration.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderConfiguration.java rename to spring-4/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderConfiguration.java diff --git a/spring-all/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderIntegrationTest.java b/spring-4/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderIntegrationTest.java rename to spring-4/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsConfiguration.java b/spring-4/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsConfiguration.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsConfiguration.java rename to spring-4/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsConfiguration.java diff --git a/spring-all/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsIntegrationTest.java b/spring-4/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsIntegrationTest.java rename to spring-4/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsIntegrationTest.java diff --git a/spring-5-data-reactive/README.md b/spring-5-data-reactive/README.md index 982704e11c..683b493317 100644 --- a/spring-5-data-reactive/README.md +++ b/spring-5-data-reactive/README.md @@ -6,7 +6,7 @@ This module contains articles about reactive Spring 5 Data The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles -- [Reactive Flow with MongoDB, Kotlin, and Spring WebFlux](http://www.baeldung.com/kotlin-mongodb-spring-webflux) -- [Spring Data Reactive Repositories with MongoDB](http://www.baeldung.com/spring-data-mongodb-reactive) +- [Reactive Flow with MongoDB, Kotlin, and Spring WebFlux](https://www.baeldung.com/kotlin-mongodb-spring-webflux) +- [Spring Data Reactive Repositories with MongoDB](https://www.baeldung.com/spring-data-mongodb-reactive) - [Spring Data MongoDB Tailable Cursors](https://www.baeldung.com/spring-data-mongodb-tailable-cursors) - [A Quick Look at R2DBC with Spring Data](https://www.baeldung.com/spring-data-r2dbc) diff --git a/spring-5-mvc/README.md b/spring-5-mvc/README.md index 2b57df3b71..e98012c047 100644 --- a/spring-5-mvc/README.md +++ b/spring-5-mvc/README.md @@ -3,5 +3,6 @@ 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 Boot and Kotlin](https://www.baeldung.com/spring-boot-kotlin) - [Spring MVC Streaming and SSE Request Processing](https://www.baeldung.com/spring-mvc-sse-streams) +- [Interface Driven Controllers in Spring](https://www.baeldung.com/spring-interface-driven-controllers) diff --git a/spring-5-reactive-2/README.md b/spring-5-reactive-2/README.md index 1d21425fb8..061c15b148 100644 --- a/spring-5-reactive-2/README.md +++ b/spring-5-reactive-2/README.md @@ -3,4 +3,10 @@ This module contains articles about reactive Spring 5 - [Spring WebClient vs. RestTemplate](https://www.baeldung.com/spring-webclient-resttemplate) +- [Validation for Functional Endpoints in Spring 5](https://www.baeldung.com/spring-functional-endpoints-validation) +- [Logging a Reactive Sequence](https://www.baeldung.com/spring-reactive-sequence-logging) +- [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) +- [Spring WebClient Filters](https://www.baeldung.com/spring-webclient-filters) - More articles: [[<-- prev]](/spring-5-reactive) diff --git a/spring-5-reactive-2/pom.xml b/spring-5-reactive-2/pom.xml index f1407ee1ad..37c9ad3579 100644 --- a/spring-5-reactive-2/pom.xml +++ b/spring-5-reactive-2/pom.xml @@ -23,22 +23,37 @@ org.springframework.boot - spring-boot-starter-test - test + spring-boot-starter-security + + org.projectreactor + reactor-spring + ${reactor-spring.version} + + org.projectlombok lombok - ${lombok.version} provided + + org.springframework.boot + spring-boot-starter-test + test + + com.github.tomakehurst wiremock-jre8 ${wiremock.version} test + + io.projectreactor + reactor-test + test + @@ -55,6 +70,7 @@ + 1.0.1.RELEASE 2.24.0 diff --git a/spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/ConsumerDebuggingApplication.java b/spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/ConsumerDebuggingApplication.java similarity index 97% rename from spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/ConsumerDebuggingApplication.java rename to spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/ConsumerDebuggingApplication.java index 486c5e77eb..3f01310006 100644 --- a/spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/ConsumerDebuggingApplication.java +++ b/spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/ConsumerDebuggingApplication.java @@ -28,6 +28,7 @@ public class ConsumerDebuggingApplication { http.authorizeExchange() .anyExchange() .permitAll(); + http.csrf().disable(); return http.build(); } } diff --git a/spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/chronjobs/ChronJobs.java b/spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/chronjobs/ChronJobs.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/chronjobs/ChronJobs.java rename to spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/chronjobs/ChronJobs.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/controllers/ReactiveConfigsToggleRestController.java b/spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/controllers/ReactiveConfigsToggleRestController.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/controllers/ReactiveConfigsToggleRestController.java rename to spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/controllers/ReactiveConfigsToggleRestController.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/model/Foo.java b/spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/model/Foo.java similarity index 89% rename from spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/model/Foo.java rename to spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/model/Foo.java index ac5093c261..916ca93bfc 100644 --- a/spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/model/Foo.java +++ b/spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/model/Foo.java @@ -2,10 +2,7 @@ package com.baeldung.debugging.consumer.model; import java.util.concurrent.ThreadLocalRandom; -import org.springframework.data.annotation.Id; - import lombok.AllArgsConstructor; -import lombok.Data; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -16,7 +13,6 @@ import lombok.Setter; @AllArgsConstructor public class Foo { - @Id private Integer id; private String formattedName; private Integer quantity; diff --git a/spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/model/FooDto.java b/spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/model/FooDto.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/model/FooDto.java rename to spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/model/FooDto.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/service/FooNameHelper.java b/spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/service/FooNameHelper.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/service/FooNameHelper.java rename to spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/service/FooNameHelper.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/service/FooQuantityHelper.java b/spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/service/FooQuantityHelper.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/service/FooQuantityHelper.java rename to spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/service/FooQuantityHelper.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/service/FooReporter.java b/spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/service/FooReporter.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/service/FooReporter.java rename to spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/service/FooReporter.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/service/FooService.java b/spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/service/FooService.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/debugging/consumer/service/FooService.java rename to spring-5-reactive-2/src/main/java/com/baeldung/debugging/consumer/service/FooService.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/debugging/server/ServerDebuggingApplication.java b/spring-5-reactive-2/src/main/java/com/baeldung/debugging/server/ServerDebuggingApplication.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/debugging/server/ServerDebuggingApplication.java rename to spring-5-reactive-2/src/main/java/com/baeldung/debugging/server/ServerDebuggingApplication.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/debugging/server/handlers/ServerHandler.java b/spring-5-reactive-2/src/main/java/com/baeldung/debugging/server/handlers/ServerHandler.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/debugging/server/handlers/ServerHandler.java rename to spring-5-reactive-2/src/main/java/com/baeldung/debugging/server/handlers/ServerHandler.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/debugging/server/model/Foo.java b/spring-5-reactive-2/src/main/java/com/baeldung/debugging/server/model/Foo.java similarity index 77% rename from spring-5-reactive/src/main/java/com/baeldung/debugging/server/model/Foo.java rename to spring-5-reactive-2/src/main/java/com/baeldung/debugging/server/model/Foo.java index a60e468e7f..2d9491f3dd 100644 --- a/spring-5-reactive/src/main/java/com/baeldung/debugging/server/model/Foo.java +++ b/spring-5-reactive-2/src/main/java/com/baeldung/debugging/server/model/Foo.java @@ -1,7 +1,5 @@ package com.baeldung.debugging.server.model; -import org.springframework.data.annotation.Id; - import lombok.AllArgsConstructor; import lombok.Data; @@ -9,7 +7,6 @@ import lombok.Data; @AllArgsConstructor public class Foo { - @Id private Long id; private String name; diff --git a/spring-5-reactive/src/main/java/com/baeldung/debugging/server/routers/ServerRouter.java b/spring-5-reactive-2/src/main/java/com/baeldung/debugging/server/routers/ServerRouter.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/debugging/server/routers/ServerRouter.java rename to spring-5-reactive-2/src/main/java/com/baeldung/debugging/server/routers/ServerRouter.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/staticcontent/StaticContentApplication.java b/spring-5-reactive-2/src/main/java/com/baeldung/staticcontent/StaticContentApplication.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/staticcontent/StaticContentApplication.java rename to spring-5-reactive-2/src/main/java/com/baeldung/staticcontent/StaticContentApplication.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/staticcontent/StaticContentConfig.java b/spring-5-reactive-2/src/main/java/com/baeldung/staticcontent/StaticContentConfig.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/staticcontent/StaticContentConfig.java rename to spring-5-reactive-2/src/main/java/com/baeldung/staticcontent/StaticContentConfig.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/validations/functional/FunctionalValidationsApplication.java b/spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/FunctionalValidationsApplication.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/validations/functional/FunctionalValidationsApplication.java rename to spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/FunctionalValidationsApplication.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/validations/functional/handlers/AbstractValidationHandler.java b/spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/handlers/AbstractValidationHandler.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/validations/functional/handlers/AbstractValidationHandler.java rename to spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/handlers/AbstractValidationHandler.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/validations/functional/handlers/FunctionalHandler.java b/spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/handlers/FunctionalHandler.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/validations/functional/handlers/FunctionalHandler.java rename to spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/handlers/FunctionalHandler.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/validations/functional/handlers/impl/AnnotatedRequestEntityValidationHandler.java b/spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/handlers/impl/AnnotatedRequestEntityValidationHandler.java similarity index 95% rename from spring-5-reactive/src/main/java/com/baeldung/validations/functional/handlers/impl/AnnotatedRequestEntityValidationHandler.java rename to spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/handlers/impl/AnnotatedRequestEntityValidationHandler.java index 2011679741..9fec15142e 100644 --- a/spring-5-reactive/src/main/java/com/baeldung/validations/functional/handlers/impl/AnnotatedRequestEntityValidationHandler.java +++ b/spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/handlers/impl/AnnotatedRequestEntityValidationHandler.java @@ -1,7 +1,6 @@ package com.baeldung.validations.functional.handlers.impl; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; import org.springframework.validation.Validator; diff --git a/spring-5-reactive/src/main/java/com/baeldung/validations/functional/handlers/impl/CustomRequestEntityValidationHandler.java b/spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/handlers/impl/CustomRequestEntityValidationHandler.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/validations/functional/handlers/impl/CustomRequestEntityValidationHandler.java rename to spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/handlers/impl/CustomRequestEntityValidationHandler.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/validations/functional/handlers/impl/OtherEntityValidationHandler.java b/spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/handlers/impl/OtherEntityValidationHandler.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/validations/functional/handlers/impl/OtherEntityValidationHandler.java rename to spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/handlers/impl/OtherEntityValidationHandler.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/validations/functional/model/AnnotatedRequestEntity.java b/spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/model/AnnotatedRequestEntity.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/validations/functional/model/AnnotatedRequestEntity.java rename to spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/model/AnnotatedRequestEntity.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/validations/functional/model/CustomRequestEntity.java b/spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/model/CustomRequestEntity.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/validations/functional/model/CustomRequestEntity.java rename to spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/model/CustomRequestEntity.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/validations/functional/model/OtherEntity.java b/spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/model/OtherEntity.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/validations/functional/model/OtherEntity.java rename to spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/model/OtherEntity.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/validations/functional/routers/ValidationsRouters.java b/spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/routers/ValidationsRouters.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/validations/functional/routers/ValidationsRouters.java rename to spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/routers/ValidationsRouters.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/validations/functional/validators/CustomRequestEntityValidator.java b/spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/validators/CustomRequestEntityValidator.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/validations/functional/validators/CustomRequestEntityValidator.java rename to spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/validators/CustomRequestEntityValidator.java diff --git a/spring-5-reactive/src/main/java/com/baeldung/validations/functional/validators/OtherEntityValidator.java b/spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/validators/OtherEntityValidator.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/validations/functional/validators/OtherEntityValidator.java rename to spring-5-reactive-2/src/main/java/com/baeldung/validations/functional/validators/OtherEntityValidator.java diff --git a/spring-5-reactive-2/src/main/java/com/baeldung/webclient/WebClientApplication.java b/spring-5-reactive-2/src/main/java/com/baeldung/webclient/WebClientApplication.java index 751e3a9487..3c53a2c1d3 100644 --- a/spring-5-reactive-2/src/main/java/com/baeldung/webclient/WebClientApplication.java +++ b/spring-5-reactive-2/src/main/java/com/baeldung/webclient/WebClientApplication.java @@ -2,10 +2,22 @@ package com.baeldung.webclient; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.security.config.web.server.ServerHttpSecurity; +import org.springframework.security.web.server.SecurityWebFilterChain; @SpringBootApplication public class WebClientApplication { public static void main(String[] args) { SpringApplication.run(WebClientApplication.class, args); } + + @Bean + public SecurityWebFilterChain functionalValidationsSpringSecurityFilterChain(ServerHttpSecurity http) { + http.authorizeExchange() + .anyExchange() + .permitAll(); + http.csrf().disable(); + return http.build(); + } } diff --git a/spring-5-reactive/src/main/java/com/baeldung/webflux/logging/WebFluxLoggingExample.java b/spring-5-reactive-2/src/main/java/com/baeldung/webflux/logging/WebFluxLoggingExample.java similarity index 100% rename from spring-5-reactive/src/main/java/com/baeldung/webflux/logging/WebFluxLoggingExample.java rename to spring-5-reactive-2/src/main/java/com/baeldung/webflux/logging/WebFluxLoggingExample.java diff --git a/spring-5-reactive/src/main/resources/application-assets-custom-location.properties b/spring-5-reactive-2/src/main/resources/application-assets-custom-location.properties similarity index 100% rename from spring-5-reactive/src/main/resources/application-assets-custom-location.properties rename to spring-5-reactive-2/src/main/resources/application-assets-custom-location.properties diff --git a/spring-5-reactive/src/test/java/com/baeldung/debugging/consumer/ConsumerFooServiceIntegrationTest.java b/spring-5-reactive-2/src/test/java/com/baeldung/debugging/consumer/ConsumerFooServiceIntegrationTest.java similarity index 100% rename from spring-5-reactive/src/test/java/com/baeldung/debugging/consumer/ConsumerFooServiceIntegrationTest.java rename to spring-5-reactive-2/src/test/java/com/baeldung/debugging/consumer/ConsumerFooServiceIntegrationTest.java diff --git a/spring-5-reactive/src/test/java/com/baeldung/debugging/consumer/ConsumerFooServiceLiveTest.java b/spring-5-reactive-2/src/test/java/com/baeldung/debugging/consumer/ConsumerFooServiceLiveTest.java similarity index 100% rename from spring-5-reactive/src/test/java/com/baeldung/debugging/consumer/ConsumerFooServiceLiveTest.java rename to spring-5-reactive-2/src/test/java/com/baeldung/debugging/consumer/ConsumerFooServiceLiveTest.java diff --git a/spring-5-reactive/src/test/java/com/baeldung/debugging/consumer/utils/ListAppender.java b/spring-5-reactive-2/src/test/java/com/baeldung/debugging/consumer/utils/ListAppender.java similarity index 100% rename from spring-5-reactive/src/test/java/com/baeldung/debugging/consumer/utils/ListAppender.java rename to spring-5-reactive-2/src/test/java/com/baeldung/debugging/consumer/utils/ListAppender.java diff --git a/spring-5-reactive/src/test/java/com/baeldung/staticcontent/StaticContentCustomLocationIntegrationTest.java b/spring-5-reactive-2/src/test/java/com/baeldung/staticcontent/StaticContentCustomLocationIntegrationTest.java similarity index 100% rename from spring-5-reactive/src/test/java/com/baeldung/staticcontent/StaticContentCustomLocationIntegrationTest.java rename to spring-5-reactive-2/src/test/java/com/baeldung/staticcontent/StaticContentCustomLocationIntegrationTest.java diff --git a/spring-5-reactive/src/test/java/com/baeldung/staticcontent/StaticContentDefaultLocationIntegrationTest.java b/spring-5-reactive-2/src/test/java/com/baeldung/staticcontent/StaticContentDefaultLocationIntegrationTest.java similarity index 100% rename from spring-5-reactive/src/test/java/com/baeldung/staticcontent/StaticContentDefaultLocationIntegrationTest.java rename to spring-5-reactive-2/src/test/java/com/baeldung/staticcontent/StaticContentDefaultLocationIntegrationTest.java diff --git a/spring-5-reactive/src/test/java/com/baeldung/stepverifier/PostExecutionUnitTest.java b/spring-5-reactive-2/src/test/java/com/baeldung/stepverifier/PostExecutionUnitTest.java similarity index 100% rename from spring-5-reactive/src/test/java/com/baeldung/stepverifier/PostExecutionUnitTest.java rename to spring-5-reactive-2/src/test/java/com/baeldung/stepverifier/PostExecutionUnitTest.java diff --git a/spring-5-reactive/src/test/java/com/baeldung/stepverifier/StepByStepUnitTest.java b/spring-5-reactive-2/src/test/java/com/baeldung/stepverifier/StepByStepUnitTest.java similarity index 100% rename from spring-5-reactive/src/test/java/com/baeldung/stepverifier/StepByStepUnitTest.java rename to spring-5-reactive-2/src/test/java/com/baeldung/stepverifier/StepByStepUnitTest.java diff --git a/spring-5-reactive/src/test/java/com/baeldung/stepverifier/TestingTestPublisherUnitTest.java b/spring-5-reactive-2/src/test/java/com/baeldung/stepverifier/TestingTestPublisherUnitTest.java similarity index 100% rename from spring-5-reactive/src/test/java/com/baeldung/stepverifier/TestingTestPublisherUnitTest.java rename to spring-5-reactive-2/src/test/java/com/baeldung/stepverifier/TestingTestPublisherUnitTest.java diff --git a/spring-5-reactive/src/test/java/com/baeldung/stepverifier/TimeBasedUnitTest.java b/spring-5-reactive-2/src/test/java/com/baeldung/stepverifier/TimeBasedUnitTest.java similarity index 100% rename from spring-5-reactive/src/test/java/com/baeldung/stepverifier/TimeBasedUnitTest.java rename to spring-5-reactive-2/src/test/java/com/baeldung/stepverifier/TimeBasedUnitTest.java diff --git a/spring-5-reactive/src/test/java/com/baeldung/validations/functional/FunctionalEndpointValidationsLiveTest.java b/spring-5-reactive-2/src/test/java/com/baeldung/validations/functional/FunctionalEndpointValidationsLiveTest.java similarity index 97% rename from spring-5-reactive/src/test/java/com/baeldung/validations/functional/FunctionalEndpointValidationsLiveTest.java rename to spring-5-reactive-2/src/test/java/com/baeldung/validations/functional/FunctionalEndpointValidationsLiveTest.java index 73968cdf05..92257f2850 100644 --- a/spring-5-reactive/src/test/java/com/baeldung/validations/functional/FunctionalEndpointValidationsLiveTest.java +++ b/spring-5-reactive-2/src/test/java/com/baeldung/validations/functional/FunctionalEndpointValidationsLiveTest.java @@ -11,7 +11,7 @@ import com.baeldung.validations.functional.model.CustomRequestEntity; import reactor.core.publisher.Mono; -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) public class FunctionalEndpointValidationsLiveTest { private static final String BASE_URL = "http://localhost:8080"; diff --git a/spring-5-reactive/src/main/resources/public/index.html b/spring-5-reactive-2/src/test/resources/assets/index.html similarity index 100% rename from spring-5-reactive/src/main/resources/public/index.html rename to spring-5-reactive-2/src/test/resources/assets/index.html diff --git a/spring-5-reactive/src/main/resources/img/example-image.png b/spring-5-reactive-2/src/test/resources/img/example-image.png similarity index 100% rename from spring-5-reactive/src/main/resources/img/example-image.png rename to spring-5-reactive-2/src/test/resources/img/example-image.png diff --git a/spring-5-reactive/src/test/resources/logback-test.xml b/spring-5-reactive-2/src/test/resources/logback-test.xml similarity index 100% rename from spring-5-reactive/src/test/resources/logback-test.xml rename to spring-5-reactive-2/src/test/resources/logback-test.xml diff --git a/spring-5-reactive-2/src/test/resources/public/index.html b/spring-5-reactive-2/src/test/resources/public/index.html new file mode 100644 index 0000000000..7a3b9413cd --- /dev/null +++ b/spring-5-reactive-2/src/test/resources/public/index.html @@ -0,0 +1,10 @@ + + + + + Baeldung: Static Content in Spring WebFlux + + +Example HTML file + + \ No newline at end of file diff --git a/spring-5-reactive-client/pom.xml b/spring-5-reactive-client/pom.xml index 9e574b2196..994239fa9b 100644 --- a/spring-5-reactive-client/pom.xml +++ b/spring-5-reactive-client/pom.xml @@ -88,6 +88,12 @@ spring-boot-starter-test test + + com.github.tomakehurst + wiremock + 2.24.1 + test + org.apache.commons diff --git a/spring-5-reactive-client/src/main/java/com/baeldung/reactive/webclient/simultaneous/Client.java b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/webclient/simultaneous/Client.java new file mode 100644 index 0000000000..bbfc88322b --- /dev/null +++ b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/webclient/simultaneous/Client.java @@ -0,0 +1,65 @@ +package com.baeldung.reactive.webclient.simultaneous; + +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; +import reactor.core.publisher.Flux; +import reactor.core.scheduler.Schedulers; + +import java.util.List; +import java.util.logging.Logger; + +public class Client { + + private static final Logger LOG = Logger.getLogger(Client.class.getName()); + + private WebClient webClient; + + public Client(String uri) { + this.webClient = WebClient.create(uri); + } + + public Mono getUser(int id) { + LOG.info(String.format("Calling getUser(%d)", id)); + + return webClient.get() + .uri("/user/{id}", id) + .retrieve() + .bodyToMono(User.class); + } + + public Mono getItem(int id) { + return webClient.get() + .uri("/item/{id}", id) + .retrieve() + .bodyToMono(Item.class); + } + + public Mono getOtherUser(int id) { + return webClient.get() + .uri("/otheruser/{id}", id) + .retrieve() + .bodyToMono(User.class); + } + + public Flux fetchUsers(List userIds) { + return Flux.fromIterable(userIds) + .parallel() + .runOn(Schedulers.elastic()) + .flatMap(this::getUser) + .ordered((u1, u2) -> u2.id() - u1.id()); + } + + public Flux fetchUserAndOtherUser(int id) { + return Flux.merge(getUser(id), getOtherUser(id)) + .parallel() + .runOn(Schedulers.elastic()) + .ordered((u1, u2) -> u2.id() - u1.id()); + } + + public Mono fetchUserAndItem(int userId, int itemId) { + Mono user = getUser(userId).subscribeOn(Schedulers.elastic()); + Mono item = getItem(itemId).subscribeOn(Schedulers.elastic()); + + return Mono.zip(user, item, UserWithItem::new); + } +} diff --git a/spring-5-reactive-client/src/main/java/com/baeldung/reactive/webclient/simultaneous/Item.java b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/webclient/simultaneous/Item.java new file mode 100644 index 0000000000..5b8260743b --- /dev/null +++ b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/webclient/simultaneous/Item.java @@ -0,0 +1,17 @@ +package com.baeldung.reactive.webclient.simultaneous; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; + +public class Item { + private int id; + + @JsonCreator + public Item(@JsonProperty("id") int id) { + this.id = id; + } + + public int id() { + return id; + } +} diff --git a/spring-5-reactive-client/src/main/java/com/baeldung/reactive/webclient/simultaneous/User.java b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/webclient/simultaneous/User.java new file mode 100644 index 0000000000..0e1cc2cd76 --- /dev/null +++ b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/webclient/simultaneous/User.java @@ -0,0 +1,17 @@ +package com.baeldung.reactive.webclient.simultaneous; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; + +public class User { + private int id; + + @JsonCreator + public User(@JsonProperty("id") int id) { + this.id = id; + } + + public int id() { + return id; + } +} diff --git a/spring-5-reactive-client/src/main/java/com/baeldung/reactive/webclient/simultaneous/UserWithItem.java b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/webclient/simultaneous/UserWithItem.java new file mode 100644 index 0000000000..96dcfe994e --- /dev/null +++ b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/webclient/simultaneous/UserWithItem.java @@ -0,0 +1,19 @@ +package com.baeldung.reactive.webclient.simultaneous; + +public class UserWithItem { + private User user; + private Item item; + + public UserWithItem(User user, Item item) { + this.user = user; + this.item = item; + } + + public User user() { + return user; + } + + public Item item() { + return item; + } +} diff --git a/spring-5-reactive-client/src/test/java/com/baeldung/reactive/webclient/simultaneous/ClientIntegrationTest.java b/spring-5-reactive-client/src/test/java/com/baeldung/reactive/webclient/simultaneous/ClientIntegrationTest.java new file mode 100644 index 0000000000..d74a64d9c9 --- /dev/null +++ b/spring-5-reactive-client/src/test/java/com/baeldung/reactive/webclient/simultaneous/ClientIntegrationTest.java @@ -0,0 +1,70 @@ +package com.baeldung.reactive.webclient.simultaneous; + +import org.junit.Test; +import org.junit.Before; +import org.junit.After; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; +import com.github.tomakehurst.wiremock.WireMockServer; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; +import static com.github.tomakehurst.wiremock.client.WireMock.*; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertEquals; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class ClientIntegrationTest { + + private WireMockServer wireMockServer; + + @Before + public void setup() { + wireMockServer = new WireMockServer(wireMockConfig().port(8089)); + wireMockServer.start(); + configureFor("localhost", wireMockServer.port()); + } + + @After + public void tearDown() { + wireMockServer.stop(); + } + + @Test + public void givenClient_whenFetchingUsers_thenExecutionTimeIsLessThanDouble() { + // Arrange + int requestsNumber = 5; + int singleRequestTime = 1000; + + for (int i = 1; i <= requestsNumber; i++) { + stubFor(get(urlEqualTo("/user/" + i)).willReturn(aResponse().withFixedDelay(singleRequestTime) + .withStatus(200) + .withHeader("Content-Type", "application/json") + .withBody(String.format("{ \"id\": %d }", i)))); + } + + List userIds = IntStream.rangeClosed(1, requestsNumber) + .boxed() + .collect(Collectors.toList()); + + Client client = new Client("http://localhost:8089"); + + // Act + long start = System.currentTimeMillis(); + List users = client.fetchUsers(userIds) + .collectList() + .block(); + long end = System.currentTimeMillis(); + + // Assert + long totalExecutionTime = end - start; + + assertEquals("Unexpected number of users", requestsNumber, users.size()); + assertTrue("Execution time is too big", 2 * singleRequestTime > totalExecutionTime); + } +} diff --git a/spring-5-reactive-security/README.md b/spring-5-reactive-security/README.md index ebb107645b..4ea6fb644f 100644 --- a/spring-5-reactive-security/README.md +++ b/spring-5-reactive-security/README.md @@ -7,7 +7,7 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles -- [Spring Boot Actuator](http://www.baeldung.com/spring-boot-actuators) -- [Spring Security 5 for Reactive Applications](http://www.baeldung.com/spring-security-5-reactive) -- [Guide to Spring 5 WebFlux](http://www.baeldung.com/spring-webflux) +- [Spring Boot Actuator](https://www.baeldung.com/spring-boot-actuators) +- [Spring Security 5 for Reactive Applications](https://www.baeldung.com/spring-security-5-reactive) +- [Guide to Spring 5 WebFlux](https://www.baeldung.com/spring-webflux) - [Introduction to the Functional Web Framework in Spring 5](https://www.baeldung.com/spring-5-functional-web) diff --git a/spring-5-reactive/README.md b/spring-5-reactive/README.md index 89ff4fea9f..41d831632a 100644 --- a/spring-5-reactive/README.md +++ b/spring-5-reactive/README.md @@ -3,23 +3,18 @@ This module contains articles about reactive Spring 5 ### The Course -The "REST With Spring" Classes: http://bit.ly/restwithspring +The "REST With Spring" Classes: https://bit.ly/restwithspring ### Relevant Articles -- [Introduction to the Functional Web Framework in Spring 5](http://www.baeldung.com/spring-5-functional-web) -- [Spring 5 WebClient](http://www.baeldung.com/spring-5-webclient) -- [Exploring the Spring 5 WebFlux URL Matching](http://www.baeldung.com/spring-5-mvc-url-matching) -- [Reactive WebSockets with Spring 5](http://www.baeldung.com/spring-5-reactive-websockets) -- [Spring Webflux Filters](http://www.baeldung.com/spring-webflux-filters) -- [How to Set a Header on a Response with Spring 5](http://www.baeldung.com/spring-response-header) -- [Spring Webflux and CORS](http://www.baeldung.com/spring-webflux-cors) -- [Handling Errors in Spring WebFlux](http://www.baeldung.com/spring-webflux-errors) +- [Introduction to the Functional Web Framework in Spring 5](https://www.baeldung.com/spring-5-functional-web) +- [Spring 5 WebClient](https://www.baeldung.com/spring-5-webclient) +- [Exploring the Spring 5 WebFlux URL Matching](https://www.baeldung.com/spring-5-mvc-url-matching) +- [Reactive WebSockets with Spring 5](https://www.baeldung.com/spring-5-reactive-websockets) +- [Spring Webflux Filters](https://www.baeldung.com/spring-webflux-filters) +- [How to Set a Header on a Response with Spring 5](https://www.baeldung.com/spring-response-header) +- [Spring Webflux and CORS](https://www.baeldung.com/spring-webflux-cors) +- [Handling Errors in Spring WebFlux](https://www.baeldung.com/spring-webflux-errors) - [Server-Sent Events in Spring](https://www.baeldung.com/spring-server-sent-events) - [A Guide to Spring Session Reactive Support: WebSession](https://www.baeldung.com/spring-session-reactive) -- [Validation for Functional Endpoints in Spring 5](https://www.baeldung.com/spring-functional-endpoints-validation) -- [Logging a Reactive Sequence](https://www.baeldung.com/spring-reactive-sequence-logging) -- [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 +- More articles: [[next -->]](/spring-5-reactive-2) diff --git a/spring-5-reactive/pom.xml b/spring-5-reactive/pom.xml index 99cdd11f24..e6690baf54 100644 --- a/spring-5-reactive/pom.xml +++ b/spring-5-reactive/pom.xml @@ -29,11 +29,6 @@ org.springframework.boot spring-boot-starter-webflux - - org.projectreactor - reactor-spring - ${reactor-spring.version} - javax.json.bind javax.json.bind-api @@ -112,18 +107,10 @@ io.reactivex.rxjava2 rxjava - ${rxjava-version} - - - io.projectreactor - reactor-test - ${project-reactor-test} - test org.apache.httpcomponents httpclient - ${httpclient.version} @@ -165,13 +152,10 @@ 1.0.1.RELEASE - 2.1.12 1.1.3 1.0 1.0 4.1 - 3.2.3.RELEASE - 4.5.8 diff --git a/spring-5-security-oauth/README.md b/spring-5-security-oauth/README.md index 4e080fc517..43cab33598 100644 --- a/spring-5-security-oauth/README.md +++ b/spring-5-security-oauth/README.md @@ -4,6 +4,6 @@ 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) +- [Spring Security 5 – OAuth2 Login](https://www.baeldung.com/spring-security-5-oauth2-login) - [Extracting Principal and Authorities using Spring Security OAuth](https://www.baeldung.com/spring-security-oauth-principal-authorities-extractor) - [Customizing Authorization and Token Requests with Spring Security 5.1 Client](https://www.baeldung.com/spring-security-custom-oauth-requests) diff --git a/spring-5-security/README.md b/spring-5-security/README.md index 23b46f4dc9..4cace0db8d 100644 --- a/spring-5-security/README.md +++ b/spring-5-security/README.md @@ -4,8 +4,8 @@ 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) -- [A Custom Spring SecurityConfigurer](http://www.baeldung.com/spring-security-custom-configurer) -- [New Password Storage In Spring Security 5](http://www.baeldung.com/spring-security-5-password-storage) +- [Extra Login Fields with Spring Security](https://www.baeldung.com/spring-security-extra-login-fields) +- [A Custom Spring SecurityConfigurer](https://www.baeldung.com/spring-security-custom-configurer) +- [New Password Storage In Spring Security 5](https://www.baeldung.com/spring-security-5-password-storage) - [Default Password Encoder in Spring Security 5](https://www.baeldung.com/spring-security-5-default-password-encoder) diff --git a/spring-5/README.md b/spring-5/README.md index 7f4c643b7a..7588d23304 100644 --- a/spring-5/README.md +++ b/spring-5/README.md @@ -7,12 +7,12 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles -- [Concurrent Test Execution in Spring 5](http://www.baeldung.com/spring-5-concurrent-tests) -- [Spring 5 Functional Bean Registration](http://www.baeldung.com/spring-5-functional-beans) -- [The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5](http://www.baeldung.com/spring-5-junit-config) -- [Spring 5 Testing with @EnabledIf Annotation](http://www.baeldung.com/spring-5-enabledIf) -- [Introduction to Spring REST Docs](http://www.baeldung.com/spring-rest-docs) -- [Spring ResponseStatusException](http://www.baeldung.com/spring-response-status-exception) -- [Spring Assert Statements](http://www.baeldung.com/spring-assert) +- [Concurrent Test Execution in Spring 5](https://www.baeldung.com/spring-5-concurrent-tests) +- [Spring 5 Functional Bean Registration](https://www.baeldung.com/spring-5-functional-beans) +- [The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5](https://www.baeldung.com/spring-5-junit-config) +- [Spring 5 Testing with @EnabledIf Annotation](https://www.baeldung.com/spring-5-enabledIf) +- [Introduction to Spring REST Docs](https://www.baeldung.com/spring-rest-docs) +- [Spring ResponseStatusException](https://www.baeldung.com/spring-response-status-exception) +- [Spring Assert Statements](https://www.baeldung.com/spring-assert) - [Configuring a Hikari Connection Pool with Spring Boot](https://www.baeldung.com/spring-boot-hikari) diff --git a/spring-activiti/README.md b/spring-activiti/README.md index 75f3ea51e5..f4e788492b 100644 --- a/spring-activiti/README.md +++ b/spring-activiti/README.md @@ -4,7 +4,7 @@ This module contains articles about Spring with Activiti ### Relevant articles -- [A Guide to Activiti with Java](http://www.baeldung.com/java-activiti) -- [Introduction to Activiti with Spring](http://www.baeldung.com/spring-activiti) -- [Activiti with Spring Security](http://www.baeldung.com/activiti-spring-security) -- [ProcessEngine Configuration in Activiti](http://www.baeldung.com/activiti-process-engine) +- [A Guide to Activiti with Java](https://www.baeldung.com/java-activiti) +- [Introduction to Activiti with Spring](https://www.baeldung.com/spring-activiti) +- [Activiti with Spring Security](https://www.baeldung.com/activiti-spring-security) +- [ProcessEngine Configuration in Activiti](https://www.baeldung.com/activiti-process-engine) diff --git a/spring-akka/README.md b/spring-akka/README.md index 035551d459..c7db5d5c01 100644 --- a/spring-akka/README.md +++ b/spring-akka/README.md @@ -3,4 +3,4 @@ This module contains articles about Spring with Akka ### Relevant Articles: -- [Introduction to Spring with Akka](http://www.baeldung.com/akka-with-spring) +- [Introduction to Spring with Akka](https://www.baeldung.com/akka-with-spring) diff --git a/spring-all/README.md b/spring-all/README.md deleted file mode 100644 index 8a4e8fa18f..0000000000 --- a/spring-all/README.md +++ /dev/null @@ -1,33 +0,0 @@ -## Spring General Example Project - -This project is used to replicate Spring Exceptions only. - -### The Course - -The "REST With Spring" Classes: http://bit.ly/restwithspring - -### Relevant articles: - -- [Guide to Spring @Autowired](http://www.baeldung.com/spring-autowire) -- [Spring Profiles](http://www.baeldung.com/spring-profiles) -- [A Spring Custom Annotation for a Better DAO](http://www.baeldung.com/spring-annotation-bean-pre-processor) -- [What’s New in Spring 4.3?](http://www.baeldung.com/whats-new-in-spring-4-3) -- [Running Setup Data on Startup in Spring](http://www.baeldung.com/running-setup-logic-on-startup-in-spring) -- [Quick Guide to Spring Controllers](http://www.baeldung.com/spring-controllers) -- [Quick Guide to Spring Bean Scopes](http://www.baeldung.com/spring-bean-scopes) -- [Introduction To Ehcache](http://www.baeldung.com/ehcache) -- [A Guide to the Spring Task Scheduler](http://www.baeldung.com/spring-task-scheduler) -- [Guide to Spring Retry](http://www.baeldung.com/spring-retry) -- [Custom Scope in Spring](http://www.baeldung.com/spring-custom-scope) -- [A CLI with Spring Shell](http://www.baeldung.com/spring-shell-cli) -- [JasperReports with Spring](http://www.baeldung.com/spring-jasper) -- [Model, ModelMap, and ModelView in Spring MVC](http://www.baeldung.com/spring-mvc-model-model-map-model-view) -- [A Guide To Caching in Spring](http://www.baeldung.com/spring-cache-tutorial) -- [How To Do @Async in Spring](http://www.baeldung.com/spring-async) -- [@Order in Spring](http://www.baeldung.com/spring-order) -- [Spring Web Contexts](http://www.baeldung.com/spring-web-contexts) -- [Spring Cache – Creating a Custom KeyGenerator](http://www.baeldung.com/spring-cache-custom-keygenerator) -- [Spring @Primary Annotation](http://www.baeldung.com/spring-primary) -- [Spring Events](https://www.baeldung.com/spring-events) -- [Spring Null-Safety Annotations](https://www.baeldung.com/spring-null-safety-annotations) -- [Using @Autowired in Abstract Classes](https://www.baeldung.com/spring-autowired-abstract-class) diff --git a/spring-all/pom.xml b/spring-all/pom.xml deleted file mode 100644 index 8c88efb970..0000000000 --- a/spring-all/pom.xml +++ /dev/null @@ -1,254 +0,0 @@ - - 4.0.0 - spring-all - 0.1-SNAPSHOT - spring-all - war - - - parent-boot-2 - com.baeldung - 0.0.1-SNAPSHOT - ../parent-boot-2 - - - - - com.fasterxml.jackson.core - jackson-databind - - - - org.springframework - spring-web - - - org.springframework - spring-webmvc - - - org.springframework - spring-orm - - - org.springframework - spring-context - - - org.springframework.retry - spring-retry - - - org.springframework.shell - spring-shell - ${org.springframework.shell.version} - - - org.springframework - spring-websocket - - - org.springframework - spring-messaging - - - javax.annotation - javax.annotation-api - ${annotation-api.version} - - - - org.springframework - spring-aspects - - - - org.hibernate - hibernate-core - - - org.javassist - javassist - ${javassist.version} - - - mysql - mysql-connector-java - runtime - - - org.hsqldb - hsqldb - - - - org.hibernate - hibernate-validator - ${hibernate.version} - - - - javax.servlet - javax.servlet-api - provided - - - javax.servlet - jstl - runtime - - - - com.google.guava - guava - ${guava.version} - - - net.sf.jasperreports - jasperreports - ${jasperreports.version} - - - commons-logging - commons-logging - - - - - - org.springframework - spring-test - test - - - org.assertj - assertj-core - test - - - org.hamcrest - hamcrest-core - test - - - org.hamcrest - hamcrest-library - test - - - org.mockito - mockito-core - test - - - org.easymock - easymock - ${easymock.version} - test - - - org.ehcache - ehcache - - - org.apache.logging.log4j - log4j-api - - - org.apache.logging.log4j - log4j-core - - - - - net.javacrumbs.shedlock - shedlock-spring - ${shedlock.version} - - - net.javacrumbs.shedlock - shedlock-provider-jdbc-template - ${shedlock.version} - - - - - - - org.springframework - spring-framework-bom - ${org.springframework.version} - pom - import - - - org.springframework - spring-core - ${org.springframework.version} - - - org.springframework.boot - spring-boot-starter-thymeleaf - ${org.springframework.version} - - - - - - spring-all - - - src/main/resources - true - - - - - org.apache.maven.plugins - maven-war-plugin - 3.2.2 - - false - - - - - - - dev - - true - - - dev - - - - prod - - prod - - - - - - org.baeldung.sample.App - - 5.0.6.RELEASE - 1.2.0.RELEASE - 1.3.2 - - 5.2.5.Final - - - 25.1-jre - 3.5.2 - 3.6 - 3.6.1 - 6.6.0 - 2.1.0 - 3.22.0-GA - - - diff --git a/spring-all/src/main/resources/beanInjection-constructor.xml b/spring-all/src/main/resources/beanInjection-constructor.xml deleted file mode 100644 index a0713fd9f8..0000000000 --- a/spring-all/src/main/resources/beanInjection-constructor.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/spring-all/src/main/resources/beanInjection-setter.xml b/spring-all/src/main/resources/beanInjection-setter.xml deleted file mode 100644 index b2d3a05594..0000000000 --- a/spring-all/src/main/resources/beanInjection-setter.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/spring-all/src/main/resources/employeeEmailReport.jrxml b/spring-all/src/main/resources/employeeEmailReport.jrxml deleted file mode 100644 index ad4aaaac90..0000000000 --- a/spring-all/src/main/resources/employeeEmailReport.jrxml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/spring-all/src/main/webapp/WEB-INF/greeting.xml b/spring-all/src/main/webapp/WEB-INF/greeting.xml deleted file mode 100644 index 3f0ae83455..0000000000 --- a/spring-all/src/main/webapp/WEB-INF/greeting.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/spring-all/src/main/webapp/WEB-INF/normal-webapp-servlet.xml b/spring-all/src/main/webapp/WEB-INF/normal-webapp-servlet.xml deleted file mode 100644 index 0a7a0919a8..0000000000 --- a/spring-all/src/main/webapp/WEB-INF/normal-webapp-servlet.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/spring-all/src/main/webapp/WEB-INF/rootApplicationContext.xml b/spring-all/src/main/webapp/WEB-INF/rootApplicationContext.xml deleted file mode 100644 index af03661ebc..0000000000 --- a/spring-all/src/main/webapp/WEB-INF/rootApplicationContext.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/spring-all/src/main/webapp/WEB-INF/secure-webapp-servlet.xml b/spring-all/src/main/webapp/WEB-INF/secure-webapp-servlet.xml deleted file mode 100644 index 6cdd3971bf..0000000000 --- a/spring-all/src/main/webapp/WEB-INF/secure-webapp-servlet.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/spring-all/src/main/webapp/WEB-INF/view/sample.jsp b/spring-all/src/main/webapp/WEB-INF/view/sample.jsp deleted file mode 100644 index 7cc14b5dcd..0000000000 --- a/spring-all/src/main/webapp/WEB-INF/view/sample.jsp +++ /dev/null @@ -1,7 +0,0 @@ - - - - -

This is the body of the sample view

- - \ No newline at end of file diff --git a/spring-all/src/main/webapp/WEB-INF/view/scopesExample.jsp b/spring-all/src/main/webapp/WEB-INF/view/scopesExample.jsp deleted file mode 100644 index 0946f1b5ef..0000000000 --- a/spring-all/src/main/webapp/WEB-INF/view/scopesExample.jsp +++ /dev/null @@ -1,10 +0,0 @@ - - - - -

Bean Scopes Examples

-
Previous Message: ${previousMessage } -
Current Message: ${currentMessage } -
- - \ No newline at end of file diff --git a/spring-all/src/main/webapp/WEB-INF/view/welcome.jsp b/spring-all/src/main/webapp/WEB-INF/view/welcome.jsp deleted file mode 100644 index 6a82fb1d5a..0000000000 --- a/spring-all/src/main/webapp/WEB-INF/view/welcome.jsp +++ /dev/null @@ -1,11 +0,0 @@ - - - Spring Web Contexts - - -
-
- Normal Web Application : ${message} -
- - \ No newline at end of file diff --git a/spring-all/src/test/java/org/baeldung/caching/test/CacheEvictAnnotationIntegrationTest.java b/spring-all/src/test/java/org/baeldung/caching/test/CacheEvictAnnotationIntegrationTest.java deleted file mode 100644 index f24cdef917..0000000000 --- a/spring-all/src/test/java/org/baeldung/caching/test/CacheEvictAnnotationIntegrationTest.java +++ /dev/null @@ -1,79 +0,0 @@ -package org.baeldung.caching.test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.junit.Assert.assertThat; - -import java.util.ArrayList; -import java.util.List; - -import org.baeldung.caching.eviction.service.CachingService; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cache.Cache; -import org.springframework.cache.CacheManager; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean; -import org.springframework.cache.support.SimpleCacheManager; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration -public class CacheEvictAnnotationIntegrationTest { - - @Configuration - @EnableCaching - static class ContextConfiguration { - - @Bean - public CachingService cachingService() { - return new CachingService(); - } - - @Bean - public CacheManager cacheManager(){ - SimpleCacheManager cacheManager = new SimpleCacheManager(); - List caches = new ArrayList<>(); - caches.add(cacheBean().getObject()); - cacheManager.setCaches(caches ); - return cacheManager; - } - - @Bean - public ConcurrentMapCacheFactoryBean cacheBean(){ - ConcurrentMapCacheFactoryBean cacheFactoryBean = new ConcurrentMapCacheFactoryBean(); - cacheFactoryBean.setName("first"); - return cacheFactoryBean; - } - } - - @Autowired - CachingService cachingService; - - @Before - public void before() { - cachingService.putToCache("first", "key1", "Baeldung"); - cachingService.putToCache("first", "key2", "Article"); - } - - @Test - public void givenFirstCache_whenSingleCacheValueEvictRequested_thenEmptyCacheValue() { - cachingService.evictSingleCacheValue("key1"); - String key1 = cachingService.getFromCache("first", "key1"); - assertThat(key1, is(nullValue())); - } - - @Test - public void givenFirstCache_whenAllCacheValueEvictRequested_thenEmptyCache() { - cachingService.evictAllCacheValues(); - String key1 = cachingService.getFromCache("first", "key1"); - String key2 = cachingService.getFromCache("first", "key2"); - assertThat(key1, is(nullValue())); - assertThat(key2, is(nullValue())); - } -} diff --git a/spring-aop/README.md b/spring-aop/README.md index 915299a073..061e736d31 100644 --- a/spring-aop/README.md +++ b/spring-aop/README.md @@ -4,7 +4,7 @@ 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) -- [Intro to AspectJ](http://www.baeldung.com/aspectj) -- [Spring Performance Logging](http://www.baeldung.com/spring-performance-logging) -- [Introduction to Spring AOP](http://www.baeldung.com/spring-aop) +- [Implementing a Custom Spring AOP Annotation](https://www.baeldung.com/spring-aop-annotation) +- [Intro to AspectJ](https://www.baeldung.com/aspectj) +- [Spring Performance Logging](https://www.baeldung.com/spring-performance-logging) +- [Introduction to Spring AOP](https://www.baeldung.com/spring-aop) diff --git a/spring-batch/README.md b/spring-batch/README.md index c100835948..95abbaf931 100644 --- a/spring-batch/README.md +++ b/spring-batch/README.md @@ -3,7 +3,7 @@ This module contains articles about Spring Batch ### Relevant Articles: -- [Introduction to Spring Batch](http://www.baeldung.com/introduction-to-spring-batch) -- [Spring Batch using Partitioner](http://www.baeldung.com/spring-batch-partitioner) -- [Spring Batch – Tasklets vs Chunks](http://www.baeldung.com/spring-batch-tasklet-chunk) -- [How to Trigger and Stop a Scheduled Spring Batch Job](http://www.baeldung.com/spring-batch-start-stop-job) +- [Introduction to Spring Batch](https://www.baeldung.com/introduction-to-spring-batch) +- [Spring Batch using Partitioner](https://www.baeldung.com/spring-batch-partitioner) +- [Spring Batch – Tasklets vs Chunks](https://www.baeldung.com/spring-batch-tasklet-chunk) +- [How to Trigger and Stop a Scheduled Spring Batch Job](https://www.baeldung.com/spring-batch-start-stop-job) diff --git a/spring-batch/src/main/java/org/baeldung/batch/App.java b/spring-batch/src/main/java/org/baeldung/batch/App.java index 8bf58e65d2..749591aa03 100644 --- a/spring-batch/src/main/java/org/baeldung/batch/App.java +++ b/spring-batch/src/main/java/org/baeldung/batch/App.java @@ -18,9 +18,17 @@ public class App { // Spring xml config // ApplicationContext context = new ClassPathXmlApplicationContext("spring-batch.xml"); + runJob(context, "firstBatchJob"); + runJob(context, "skippingBatchJob"); + runJob(context, "skipPolicyBatchJob"); + } + + private static void runJob(AnnotationConfigApplicationContext context, String batchJobName) { final JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher"); - final Job job = (Job) context.getBean("firstBatchJob"); - System.out.println("Starting the batch job"); + final Job job = (Job) context.getBean(batchJobName); + + System.out.println("----------------------------------------"); + System.out.println("Starting the batch job: " + batchJobName); try { // To enable multiple execution of a job with the same parameters JobParameters jobParameters = new JobParametersBuilder() diff --git a/spring-batch/src/main/java/org/baeldung/batch/SpringBatchConfig.java b/spring-batch/src/main/java/org/baeldung/batch/SpringBatchConfig.java index 7b19935cc8..b318dda154 100644 --- a/spring-batch/src/main/java/org/baeldung/batch/SpringBatchConfig.java +++ b/spring-batch/src/main/java/org/baeldung/batch/SpringBatchConfig.java @@ -2,7 +2,11 @@ package org.baeldung.batch; import org.baeldung.batch.model.Transaction; import org.baeldung.batch.service.CustomItemProcessor; +import org.baeldung.batch.service.CustomSkipPolicy; +import org.baeldung.batch.service.MissingUsernameException; +import org.baeldung.batch.service.NegativeAmountException; import org.baeldung.batch.service.RecordFieldSetMapper; +import org.baeldung.batch.service.SkippingItemProcessor; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; @@ -23,30 +27,31 @@ import org.springframework.core.io.Resource; import org.springframework.oxm.Marshaller; import org.springframework.oxm.jaxb.Jaxb2Marshaller; -import java.net.MalformedURLException; import java.text.ParseException; public class SpringBatchConfig { @Autowired - private JobBuilderFactory jobs; + private JobBuilderFactory jobBuilderFactory; @Autowired - private StepBuilderFactory steps; + private StepBuilderFactory stepBuilderFactory; @Value("input/record.csv") private Resource inputCsv; + @Value("input/recordWithInvalidData.csv") + private Resource invalidInputCsv; + @Value("file:xml/output.xml") private Resource outputXml; - @Bean - public ItemReader itemReader() throws UnexpectedInputException, ParseException { - FlatFileItemReader reader = new FlatFileItemReader(); + public ItemReader itemReader(Resource inputData) throws UnexpectedInputException, ParseException { + FlatFileItemReader reader = new FlatFileItemReader<>(); DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer(); String[] tokens = {"username", "userid", "transactiondate", "amount"}; tokenizer.setNames(tokens); - reader.setResource(inputCsv); - DefaultLineMapper lineMapper = new DefaultLineMapper(); + reader.setResource(inputData); + DefaultLineMapper lineMapper = new DefaultLineMapper<>(); lineMapper.setLineTokenizer(tokenizer); lineMapper.setFieldSetMapper(new RecordFieldSetMapper()); reader.setLinesToSkip(1); @@ -60,8 +65,13 @@ public class SpringBatchConfig { } @Bean - public ItemWriter itemWriter(Marshaller marshaller) throws MalformedURLException { - StaxEventItemWriter itemWriter = new StaxEventItemWriter(); + public ItemProcessor skippingItemProcessor() { + return new SkippingItemProcessor(); + } + + @Bean + public ItemWriter itemWriter(Marshaller marshaller) { + StaxEventItemWriter itemWriter = new StaxEventItemWriter<>(); itemWriter.setMarshaller(marshaller); itemWriter.setRootTagName("transactionRecord"); itemWriter.setResource(outputXml); @@ -76,13 +86,60 @@ public class SpringBatchConfig { } @Bean - protected Step step1(ItemReader reader, ItemProcessor processor, ItemWriter writer) { - return steps.get("step1").chunk(10).reader(reader).processor(processor).writer(writer).build(); + protected Step step1(@Qualifier("itemProcessor") ItemProcessor processor, + ItemWriter writer) throws ParseException { + return stepBuilderFactory.get("step1").chunk(10).reader(itemReader(inputCsv)).processor(processor).writer(writer).build(); } @Bean(name = "firstBatchJob") public Job job(@Qualifier("step1") Step step1) { - return jobs.get("firstBatchJob").start(step1).build(); + return jobBuilderFactory.get("firstBatchJob").start(step1).build(); + } + + @Bean + public Step skippingStep(@Qualifier("skippingItemProcessor") ItemProcessor processor, + ItemWriter writer) throws ParseException { + return stepBuilderFactory + .get("skippingStep") + .chunk(10) + .reader(itemReader(invalidInputCsv)) + .processor(processor) + .writer(writer) + .faultTolerant() + .skipLimit(2) + .skip(MissingUsernameException.class) + .skip(NegativeAmountException.class) + .build(); + } + + @Bean(name = "skippingBatchJob") + public Job skippingJob(@Qualifier("skippingStep") Step skippingStep) { + return jobBuilderFactory + .get("skippingBatchJob") + .start(skippingStep) + .build(); + } + + @Bean + public Step skipPolicyStep(@Qualifier("skippingItemProcessor") ItemProcessor processor, + ItemWriter writer) throws ParseException { + return stepBuilderFactory + .get("skipPolicyStep") + .chunk(10) + .reader(itemReader(invalidInputCsv)) + .processor(processor) + .writer(writer) + .faultTolerant() + .skipPolicy(new CustomSkipPolicy()) + .build(); + } + + @Bean(name = "skipPolicyBatchJob") + public Job skipPolicyBatchJob(@Qualifier("skipPolicyStep") Step skipPolicyStep) { + return jobBuilderFactory + .get("skipPolicyBatchJob") + .start(skipPolicyStep) + .build(); } } diff --git a/spring-batch/src/main/java/org/baeldung/batch/service/CustomSkipPolicy.java b/spring-batch/src/main/java/org/baeldung/batch/service/CustomSkipPolicy.java new file mode 100644 index 0000000000..a156a65b6e --- /dev/null +++ b/spring-batch/src/main/java/org/baeldung/batch/service/CustomSkipPolicy.java @@ -0,0 +1,29 @@ +package org.baeldung.batch.service; + +import org.springframework.batch.core.step.skip.SkipLimitExceededException; +import org.springframework.batch.core.step.skip.SkipPolicy; + +public class CustomSkipPolicy implements SkipPolicy { + + private static final int MAX_SKIP_COUNT = 2; + private static final int INVALID_TX_AMOUNT_LIMIT = -1000; + + @Override + public boolean shouldSkip(Throwable throwable, int skipCount) throws SkipLimitExceededException { + + if (throwable instanceof MissingUsernameException && skipCount < MAX_SKIP_COUNT) { + return true; + } + + if (throwable instanceof NegativeAmountException && skipCount < MAX_SKIP_COUNT ) { + NegativeAmountException ex = (NegativeAmountException) throwable; + if(ex.getAmount() < INVALID_TX_AMOUNT_LIMIT){ + return false; + } else{ + return true; + } + } + + return false; + } +} diff --git a/spring-batch/src/main/java/org/baeldung/batch/service/MissingUsernameException.java b/spring-batch/src/main/java/org/baeldung/batch/service/MissingUsernameException.java new file mode 100644 index 0000000000..2cf8f4d334 --- /dev/null +++ b/spring-batch/src/main/java/org/baeldung/batch/service/MissingUsernameException.java @@ -0,0 +1,4 @@ +package org.baeldung.batch.service; + +public class MissingUsernameException extends RuntimeException { +} diff --git a/spring-batch/src/main/java/org/baeldung/batch/service/NegativeAmountException.java b/spring-batch/src/main/java/org/baeldung/batch/service/NegativeAmountException.java new file mode 100644 index 0000000000..c9c05be671 --- /dev/null +++ b/spring-batch/src/main/java/org/baeldung/batch/service/NegativeAmountException.java @@ -0,0 +1,14 @@ +package org.baeldung.batch.service; + +public class NegativeAmountException extends RuntimeException { + + private double amount; + + public NegativeAmountException(double amount){ + this.amount = amount; + } + + public double getAmount() { + return amount; + } +} diff --git a/spring-batch/src/main/java/org/baeldung/batch/service/SkippingItemProcessor.java b/spring-batch/src/main/java/org/baeldung/batch/service/SkippingItemProcessor.java new file mode 100644 index 0000000000..307a8213e2 --- /dev/null +++ b/spring-batch/src/main/java/org/baeldung/batch/service/SkippingItemProcessor.java @@ -0,0 +1,24 @@ +package org.baeldung.batch.service; + +import org.baeldung.batch.model.Transaction; +import org.springframework.batch.item.ItemProcessor; + +public class SkippingItemProcessor implements ItemProcessor { + + @Override + public Transaction process(Transaction transaction) { + + System.out.println("SkippingItemProcessor: " + transaction); + + if (transaction.getUsername() == null || transaction.getUsername().isEmpty()) { + throw new MissingUsernameException(); + } + + double txAmount = transaction.getAmount(); + if (txAmount < 0) { + throw new NegativeAmountException(txAmount); + } + + return transaction; + } +} diff --git a/spring-batch/src/main/resources/input/recordWithInvalidData.csv b/spring-batch/src/main/resources/input/recordWithInvalidData.csv new file mode 100644 index 0000000000..020edb9826 --- /dev/null +++ b/spring-batch/src/main/resources/input/recordWithInvalidData.csv @@ -0,0 +1,7 @@ +username, user_id, transaction_date, transaction_amount +devendra, 1234, 31/10/2015, 10000 +john, 2134, 3/12/2015, 12321 +robin, 2134, 2/02/2015, 23411 +, 2536, 3/10/2019, 100 +mike, 9876, 5/11/2018, -500 +, 3425, 10/10/2017, 100 \ No newline at end of file diff --git a/spring-bom/README.md b/spring-bom/README.md index 60e7d75340..0866582fb2 100644 --- a/spring-bom/README.md +++ b/spring-bom/README.md @@ -3,4 +3,4 @@ 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) +- [Spring with Maven BOM](https://www.baeldung.com/spring-maven-bom) diff --git a/spring-boot-admin/README.md b/spring-boot-admin/README.md index 61010819fd..ac4d781d0e 100644 --- a/spring-boot-admin/README.md +++ b/spring-boot-admin/README.md @@ -23,4 +23,4 @@ and the mail configuration from application.properties ### Relevant Articles: -- [A Guide to Spring Boot Admin](http://www.baeldung.com/spring-boot-admin) +- [A Guide to Spring Boot Admin](https://www.baeldung.com/spring-boot-admin) diff --git a/spring-boot-admin/pom.xml b/spring-boot-admin/pom.xml index b2ced767eb..1c933723e7 100644 --- a/spring-boot-admin/pom.xml +++ b/spring-boot-admin/pom.xml @@ -30,7 +30,7 @@
- 2.1.7.RELEASE + 2.1.8.RELEASE \ No newline at end of file diff --git a/spring-boot-artifacts/README.md b/spring-boot-artifacts/README.md new file mode 100644 index 0000000000..4025e43a65 --- /dev/null +++ b/spring-boot-artifacts/README.md @@ -0,0 +1,10 @@ +## Spring Boot Artifacts + +This module contains articles about configuring the Spring Boot build process. + +### Relevant Articles: + - [Spring Boot Dependency Management with a Custom Parent](https://www.baeldung.com/spring-boot-dependency-management-custom-parent) + - [Create a Fat Jar App with Spring Boot](https://www.baeldung.com/deployable-fat-jar-spring-boot) + - [Intro to Spring Boot Starters](https://www.baeldung.com/spring-boot-starters) + - [Introduction to WebJars](https://www.baeldung.com/maven-webjars) + - [A Quick Guide to Maven Wrapper](https://www.baeldung.com/maven-wrapper) \ No newline at end of file diff --git a/spring-boot-ops/pom.xml b/spring-boot-artifacts/pom.xml similarity index 83% rename from spring-boot-ops/pom.xml rename to spring-boot-artifacts/pom.xml index f578a24163..8301533606 100644 --- a/spring-boot-ops/pom.xml +++ b/spring-boot-artifacts/pom.xml @@ -2,8 +2,8 @@ 4.0.0 - spring-boot-ops - spring-boot-ops + spring-boot-artifacts + spring-boot-artifacts war Demo project for Spring Boot @@ -101,15 +101,6 @@ ${project.artifactId} - - - src/main/resources - true - - **/conf.properties - - - org.springframework.boot @@ -126,28 +117,28 @@ - org.apache.maven.plugins - maven-failsafe-plugin - 2.18 - - - - integration-tests - - integration-test - verify - - - - - **/ExternalPropertyFileLoaderIntegrationTest.java - - - - - + org.apache.maven.plugins + maven-failsafe-plugin + 2.18 + + + + integration-tests + + integration-test + verify + + + + + **/ExternalPropertyFileLoaderIntegrationTest.java + + + + + diff --git a/spring-boot-ops/src/main/java/com/baeldung/webjar/TestController.java b/spring-boot-artifacts/src/main/java/com/baeldung/webjar/TestController.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/webjar/TestController.java rename to spring-boot-artifacts/src/main/java/com/baeldung/webjar/TestController.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/webjar/WebjarsdemoApplication.java b/spring-boot-artifacts/src/main/java/com/baeldung/webjar/WebjarsdemoApplication.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/webjar/WebjarsdemoApplication.java rename to spring-boot-artifacts/src/main/java/com/baeldung/webjar/WebjarsdemoApplication.java diff --git a/spring-boot-artifacts/src/main/resources/application.properties b/spring-boot-artifacts/src/main/resources/application.properties new file mode 100644 index 0000000000..709574239b --- /dev/null +++ b/spring-boot-artifacts/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.main.allow-bean-definition-overriding=true \ No newline at end of file diff --git a/spring-boot-ops/src/main/resources/logback.xml b/spring-boot-artifacts/src/main/resources/logback.xml similarity index 100% rename from spring-boot-ops/src/main/resources/logback.xml rename to spring-boot-artifacts/src/main/resources/logback.xml diff --git a/spring-boot-ops/src/main/resources/templates/index.html b/spring-boot-artifacts/src/main/resources/templates/index.html similarity index 100% rename from spring-boot-ops/src/main/resources/templates/index.html rename to spring-boot-artifacts/src/main/resources/templates/index.html diff --git a/spring-boot-ops/src/test/java/com/baeldung/webjar/WebjarsdemoApplicationIntegrationTest.java b/spring-boot-artifacts/src/test/java/com/baeldung/webjar/WebjarsdemoApplicationIntegrationTest.java similarity index 100% rename from spring-boot-ops/src/test/java/com/baeldung/webjar/WebjarsdemoApplicationIntegrationTest.java rename to spring-boot-artifacts/src/test/java/com/baeldung/webjar/WebjarsdemoApplicationIntegrationTest.java diff --git a/spring-boot-autoconfiguration/README.md b/spring-boot-autoconfiguration/README.md index 920c378139..67311eed50 100644 --- a/spring-boot-autoconfiguration/README.md +++ b/spring-boot-autoconfiguration/README.md @@ -7,5 +7,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: -- [Create a Custom Auto-Configuration with Spring Boot](http://www.baeldung.com/spring-boot-custom-auto-configuration) +- [Create a Custom Auto-Configuration with Spring Boot](https://www.baeldung.com/spring-boot-custom-auto-configuration) - [Guide to ApplicationContextRunner in Spring Boot](https://www.baeldung.com/spring-boot-context-runner) diff --git a/spring-boot-bootstrap/README.md b/spring-boot-bootstrap/README.md index 82ec384c86..5fb8fd4a84 100644 --- a/spring-boot-bootstrap/README.md +++ b/spring-boot-bootstrap/README.md @@ -3,9 +3,10 @@ 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) +- [Spring Boot Tutorial – Bootstrap a Simple Application](https://www.baeldung.com/spring-boot-start) +- [Thin JARs with Spring Boot](https://www.baeldung.com/spring-boot-thin-jar) - [Deploying a Spring Boot Application to Cloud Foundry](https://www.baeldung.com/spring-boot-app-deploy-to-cloud-foundry) - [Deploy a Spring Boot Application to Google App Engine](https://www.baeldung.com/spring-boot-google-app-engine) - [Deploy a Spring Boot Application to OpenShift](https://www.baeldung.com/spring-boot-deploy-openshift) - [Deploy a Spring Boot Application to AWS Beanstalk](https://www.baeldung.com/spring-boot-deploy-aws-beanstalk) +- [Guide to @SpringBootConfiguration in Spring Boot](https://www.baeldung.com/springbootconfiguration-annotation) diff --git a/spring-boot-camel/README.md b/spring-boot-camel/README.md index 194b7ea9c7..f9594a95a6 100644 --- a/spring-boot-camel/README.md +++ b/spring-boot-camel/README.md @@ -24,4 +24,4 @@ or return code of 201 and the response: `{"id": 10,"name": "Hello, World"}` - if ## Relevant articles: -- [Apache Camel with Spring Boot](http://www.baeldung.com/apache-camel-spring-boot) +- [Apache Camel with Spring Boot](https://www.baeldung.com/apache-camel-spring-boot) diff --git a/spring-boot-cli/README.md b/spring-boot-cli/README.md index 8c8a0c99c1..79e259c855 100644 --- a/spring-boot-cli/README.md +++ b/spring-boot-cli/README.md @@ -3,4 +3,4 @@ This module contains articles about Spring Boot CLI ### Relevant Articles: -- [Introduction to Spring Boot CLI](http://www.baeldung.com/spring-boot-cli) +- [Introduction to Spring Boot CLI](https://www.baeldung.com/spring-boot-cli) diff --git a/spring-boot-client/README.MD b/spring-boot-client/README.MD index c8b9e1cd6e..b5a4c78446 100644 --- a/spring-boot-client/README.MD +++ b/spring-boot-client/README.MD @@ -7,5 +7,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: -- [Quick Guide to @RestClientTest in Spring Boot](http://www.baeldung.com/restclienttest-in-spring-boot) -- [A Java Client for a WebSockets API](http://www.baeldung.com/websockets-api-java-spring-client) \ No newline at end of file +- [Quick Guide to @RestClientTest in Spring Boot](https://www.baeldung.com/restclienttest-in-spring-boot) +- [A Java Client for a WebSockets API](https://www.baeldung.com/websockets-api-java-spring-client) diff --git a/spring-boot-ctx-fluent/README.md b/spring-boot-ctx-fluent/README.md index 646ad0f7d1..2d7ba7f2c0 100644 --- a/spring-boot-ctx-fluent/README.md +++ b/spring-boot-ctx-fluent/README.md @@ -4,4 +4,4 @@ This module contains articles about Spring Boot Fluent Builder ### Relevant Articles: -- [Context Hierarchy with the Spring Boot Fluent Builder API](http://www.baeldung.com/spring-boot-context-hierarchy) +- [Context Hierarchy with the Spring Boot Fluent Builder API](https://www.baeldung.com/spring-boot-context-hierarchy) diff --git a/spring-boot-custom-starter/README.md b/spring-boot-custom-starter/README.md index 9a62884ecb..c22aab7a2b 100644 --- a/spring-boot-custom-starter/README.md +++ b/spring-boot-custom-starter/README.md @@ -3,7 +3,7 @@ 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) +- [Creating a Custom Starter with Spring Boot](https://www.baeldung.com/spring-boot-custom-starter) - **greeter-library**: The sample library that we're creating the starter for. @@ -13,4 +13,4 @@ This module contains articles about writing Spring Boot [starters](https://www.b - **greeter-spring-boot-sample-app**: The sample project that uses the custom starter. -- [Multi-Module Project With Spring Boot](http://www.baeldung.com/spring-boot-multiple-modules) +- [Multi-Module Project With Spring Boot](https://www.baeldung.com/spring-boot-multiple-modules) diff --git a/spring-boot-data/README.md b/spring-boot-data/README.md index 6f0b8c8123..513c5fed18 100644 --- a/spring-boot-data/README.md +++ b/spring-boot-data/README.md @@ -1,3 +1,7 @@ +## Spring Boot Data + +This module contains articles about Spring Boot with Spring Data + ## Relevant Articles: - [Formatting JSON Dates in Spring Boot](https://www.baeldung.com/spring-boot-formatting-json-dates) diff --git a/spring-boot-deployment/README.md b/spring-boot-deployment/README.md new file mode 100644 index 0000000000..6171decf2d --- /dev/null +++ b/spring-boot-deployment/README.md @@ -0,0 +1,9 @@ +## Spring Boot Deployment + +This module contains articles about deployment of a Spring Boot Application + +### Relevant Articles: + - [Deploy a Spring Boot WAR into a Tomcat Server](https://www.baeldung.com/spring-boot-war-tomcat-deploy) + - [Spring Boot Console Application](https://www.baeldung.com/spring-boot-console-app) + - [How to Configure Spring Boot Tomcat](https://www.baeldung.com/spring-boot-configure-tomcat) + - [Comparing Embedded Servlet Containers in Spring Boot](https://www.baeldung.com/spring-boot-servlet-containers) \ No newline at end of file diff --git a/spring-boot-deployment/pom.xml b/spring-boot-deployment/pom.xml new file mode 100644 index 0000000000..69a54fd482 --- /dev/null +++ b/spring-boot-deployment/pom.xml @@ -0,0 +1,203 @@ + + + 4.0.0 + spring-boot-deployment + spring-boot-deployment + war + Demo project for Spring Boot + + + parent-boot-2 + com.baeldung + 0.0.1-SNAPSHOT + ../parent-boot-2 + + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-thymeleaf + provided + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + org.springframework.boot + spring-boot-starter-mail + + + + org.springframework.boot + spring-boot-starter-actuator + + + + com.h2database + h2 + runtime + + + + javax.persistence + javax.persistence-api + ${jpa.version} + + + + com.google.guava + guava + ${guava.version} + + + + org.subethamail + subethasmtp + ${subethasmtp.version} + test + + + + org.webjars + bootstrap + ${bootstrap.version} + + + + org.webjars + jquery + ${jquery.version} + + + + org.springframework.cloud + spring-cloud-context + ${springcloud.version} + + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + + + + ${project.artifactId} + + + src/main/resources + true + + **/conf.properties + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + com.baeldung.webjar.WebjarsdemoApplication + + + + + + org.apache.maven.plugins + maven-failsafe-plugin + 2.18 + + + + integration-tests + + integration-test + verify + + + + + **/ExternalPropertyFileLoaderIntegrationTest.java + + + + + + + + + + + autoconfiguration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + **/*IntegrationTest.java + **/*IntTest.java + + + **/AutoconfigurationTest.java + + + + + + + json + + + + + + + + + + + org.baeldung.boot.Application + 3.1.1 + 3.3.7-1 + 2.2 + 18.0 + 3.1.7 + 2.0.2.RELEASE + 4.5.8 + + + diff --git a/spring-boot-ops/src/main/java/com/baeldung/compare/ComparisonApplication.java b/spring-boot-deployment/src/main/java/com/baeldung/compare/ComparisonApplication.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/compare/ComparisonApplication.java rename to spring-boot-deployment/src/main/java/com/baeldung/compare/ComparisonApplication.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/compare/StartupEventHandler.java b/spring-boot-deployment/src/main/java/com/baeldung/compare/StartupEventHandler.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/compare/StartupEventHandler.java rename to spring-boot-deployment/src/main/java/com/baeldung/compare/StartupEventHandler.java diff --git a/spring-boot-ops-2/src/main/java/com/baeldung/gracefulshutdown/GracefulShutdownApplication.java b/spring-boot-deployment/src/main/java/com/baeldung/gracefulshutdown/GracefulShutdownApplication.java similarity index 100% rename from spring-boot-ops-2/src/main/java/com/baeldung/gracefulshutdown/GracefulShutdownApplication.java rename to spring-boot-deployment/src/main/java/com/baeldung/gracefulshutdown/GracefulShutdownApplication.java diff --git a/spring-boot-ops-2/src/main/java/com/baeldung/gracefulshutdown/beans/LongRunningProcessBean.java b/spring-boot-deployment/src/main/java/com/baeldung/gracefulshutdown/beans/LongRunningProcessBean.java similarity index 100% rename from spring-boot-ops-2/src/main/java/com/baeldung/gracefulshutdown/beans/LongRunningProcessBean.java rename to spring-boot-deployment/src/main/java/com/baeldung/gracefulshutdown/beans/LongRunningProcessBean.java diff --git a/spring-boot-ops-2/src/main/java/com/baeldung/gracefulshutdown/config/SpringConfiguration.java b/spring-boot-deployment/src/main/java/com/baeldung/gracefulshutdown/config/SpringConfiguration.java similarity index 100% rename from spring-boot-ops-2/src/main/java/com/baeldung/gracefulshutdown/config/SpringConfiguration.java rename to spring-boot-deployment/src/main/java/com/baeldung/gracefulshutdown/config/SpringConfiguration.java diff --git a/spring-boot-ops-2/src/main/java/com/baeldung/springbootconfiguration/SpringBootConfigurationApplication.java b/spring-boot-deployment/src/main/java/com/baeldung/springbootconfiguration/SpringBootConfigurationApplication.java similarity index 100% rename from spring-boot-ops-2/src/main/java/com/baeldung/springbootconfiguration/SpringBootConfigurationApplication.java rename to spring-boot-deployment/src/main/java/com/baeldung/springbootconfiguration/SpringBootConfigurationApplication.java diff --git a/spring-boot-ops-2/src/main/java/com/baeldung/springbootconfiguration/controller/GreetingsController.java b/spring-boot-deployment/src/main/java/com/baeldung/springbootconfiguration/controller/GreetingsController.java similarity index 100% rename from spring-boot-ops-2/src/main/java/com/baeldung/springbootconfiguration/controller/GreetingsController.java rename to spring-boot-deployment/src/main/java/com/baeldung/springbootconfiguration/controller/GreetingsController.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/springbootnonwebapp/SpringBootConsoleApplication.java b/spring-boot-deployment/src/main/java/com/baeldung/springbootnonwebapp/SpringBootConsoleApplication.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/springbootnonwebapp/SpringBootConsoleApplication.java rename to spring-boot-deployment/src/main/java/com/baeldung/springbootnonwebapp/SpringBootConsoleApplication.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/springbootsimple/SpringBootTomcatApplication.java b/spring-boot-deployment/src/main/java/com/baeldung/springbootsimple/SpringBootTomcatApplication.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/springbootsimple/SpringBootTomcatApplication.java rename to spring-boot-deployment/src/main/java/com/baeldung/springbootsimple/SpringBootTomcatApplication.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/springbootsimple/TomcatController.java b/spring-boot-deployment/src/main/java/com/baeldung/springbootsimple/TomcatController.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/springbootsimple/TomcatController.java rename to spring-boot-deployment/src/main/java/com/baeldung/springbootsimple/TomcatController.java diff --git a/spring-boot-ops/src/main/resources/application.properties b/spring-boot-deployment/src/main/resources/application.properties similarity index 100% rename from spring-boot-ops/src/main/resources/application.properties rename to spring-boot-deployment/src/main/resources/application.properties diff --git a/testing-modules/runjunitfromjava/src/main/resources/logback.xml b/spring-boot-deployment/src/main/resources/logback.xml similarity index 100% rename from testing-modules/runjunitfromjava/src/main/resources/logback.xml rename to spring-boot-deployment/src/main/resources/logback.xml diff --git a/spring-boot-ops-2/src/test/java/com/baeldung/springbootconfiguration/SpringContextIntegrationTest.java b/spring-boot-deployment/src/test/java/com/baeldung/springbootconfiguration/SpringContextIntegrationTest.java similarity index 100% rename from spring-boot-ops-2/src/test/java/com/baeldung/springbootconfiguration/SpringContextIntegrationTest.java rename to spring-boot-deployment/src/test/java/com/baeldung/springbootconfiguration/SpringContextIntegrationTest.java diff --git a/spring-boot-ops-2/src/test/java/com/baeldung/springbootconfiguration/SpringContextTest.java b/spring-boot-deployment/src/test/java/com/baeldung/springbootconfiguration/SpringContextTest.java similarity index 100% rename from spring-boot-ops-2/src/test/java/com/baeldung/springbootconfiguration/SpringContextTest.java rename to spring-boot-deployment/src/test/java/com/baeldung/springbootconfiguration/SpringContextTest.java diff --git a/spring-boot-ops/src/test/java/com/baeldung/springbootsimple/SpringBootTomcatApplicationIntegrationTest.java b/spring-boot-deployment/src/test/java/com/baeldung/springbootsimple/SpringBootTomcatApplicationIntegrationTest.java similarity index 100% rename from spring-boot-ops/src/test/java/com/baeldung/springbootsimple/SpringBootTomcatApplicationIntegrationTest.java rename to spring-boot-deployment/src/test/java/com/baeldung/springbootsimple/SpringBootTomcatApplicationIntegrationTest.java diff --git a/spring-boot-di/pom.xml b/spring-boot-di/pom.xml index c0faf44335..31ccff03da 100644 --- a/spring-boot-di/pom.xml +++ b/spring-boot-di/pom.xml @@ -36,6 +36,11 @@ tomcat-embed-jasper provided + + org.springframework.boot + spring-boot-starter-test + test + 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 index 73bd0e3673..7ec076abc7 100644 --- 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 @@ -7,4 +7,5 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) -public @interface Animal { } +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 index 7e89870d4b..7849e4e10a 100644 --- 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 @@ -1,21 +1,13 @@ 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 index 8ad8111d6b..758775a737 100644 --- 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 @@ -1,4 +1,5 @@ package com.baeldung.componentscan.filter.annotation; @Animal -public class Elephant { } +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 index b34a2d7112..ababe4fea9 100644 --- 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 @@ -1,3 +1,4 @@ package com.baeldung.componentscan.filter.aspectj; -public class Cat { } +public class Cat { +} diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/ComponentScanAspectJFilterApp.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/ComponentScanAspectJFilterApp.java new file mode 100644 index 0000000000..aea7c0a2cd --- /dev/null +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/ComponentScanAspectJFilterApp.java @@ -0,0 +1,15 @@ +package com.baeldung.componentscan.filter.aspectj; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.FilterType; + +@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.C*)")) +public class ComponentScanAspectJFilterApp { + public static void main(String[] args) { + } +} 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 deleted file mode 100644 index 3674c09531..0000000000 --- a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/ComponentScanCustomFilterApp.java +++ /dev/null @@ -1,24 +0,0 @@ -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 index 30abc9dcd4..ade1b5903c 100644 --- 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 @@ -1,3 +1,4 @@ package com.baeldung.componentscan.filter.aspectj; -public class Elephant { } +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 index cf442e981e..6bfdfeb321 100644 --- 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 @@ -1,3 +1,4 @@ package com.baeldung.componentscan.filter.aspectj; -public class Loin { } +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 index 77cf2e72f0..faf4121834 100644 --- 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 @@ -1,3 +1,4 @@ package com.baeldung.componentscan.filter.assignable; -public interface Animal { } +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 index 262ae154f8..568ac8045f 100644 --- 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 @@ -1,3 +1,4 @@ package com.baeldung.componentscan.filter.assignable; -public class Cat implements Animal { } +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 index a5fa2b0942..b0155a882b 100644 --- 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 @@ -1,21 +1,13 @@ 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 index 815e0d762a..74637c86ba 100644 --- 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 @@ -1,3 +1,4 @@ package com.baeldung.componentscan.filter.assignable; -public class Elephant implements Animal { } +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 index 282d6bb641..17a8e87b7a 100644 --- 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 @@ -1,3 +1,4 @@ package com.baeldung.componentscan.filter.custom; -public class Cat extends Pet { } +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 index ebaccf7838..30ccb19276 100644 --- 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 @@ -10,11 +10,11 @@ import java.io.IOException; public class ComponentScanCustomFilter implements TypeFilter { @Override - public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) - throws IOException { + public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { ClassMetadata classMetadata = metadataReader.getClassMetadata(); String superClass = classMetadata.getSuperClassName(); - if (Pet.class.getName().equalsIgnoreCase(superClass)) { + 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 index 1a4f5dbf4e..3a87b6a807 100644 --- 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 @@ -1,21 +1,13 @@ 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 index 0e2f9e0692..5deb4af9f3 100644 --- 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 @@ -1,3 +1,4 @@ package com.baeldung.componentscan.filter.custom; -public class Loin { } +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 index 9b4497221d..c9be5a39c2 100644 --- 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 @@ -1,3 +1,4 @@ package com.baeldung.componentscan.filter.custom; -public class Pet { } +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 index 87341cae9d..4569f91787 100644 --- 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 @@ -1,3 +1,4 @@ package com.baeldung.componentscan.filter.regex; -public class Cat { } +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 index 36e94446b2..d2b7bd03fb 100644 --- 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 @@ -1,20 +1,13 @@ 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 index 314dca5b77..4910be41ad 100644 --- 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 @@ -1,3 +1,4 @@ package com.baeldung.componentscan.filter.regex; -public class Elephant { } +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 index 1b75fc1b43..5b7949be38 100644 --- 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 @@ -1,3 +1,4 @@ package com.baeldung.componentscan.filter.regex; -public class Loin { } +public class Loin { +} diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/springapp/SpringComponentScanApp.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/springapp/SpringComponentScanApp.java index 83b91f7860..8873f1214c 100644 --- a/spring-boot-di/src/main/java/com/baeldung/componentscan/springapp/SpringComponentScanApp.java +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/springapp/SpringComponentScanApp.java @@ -10,10 +10,10 @@ import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan -//@ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = Rose.class)) -//@ComponentScan(basePackages = "com.baeldung.componentscan.springapp") -//@ComponentScan(basePackages = "com.baeldung.componentscan.springapp.animals") -//@ComponentScan (excludeFilters = @ComponentScan.Filter(type=FilterType.REGEX,pattern="com\\.baeldung\\.componentscan\\.springapp\\.flowers\\..*")) +// @ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = Rose.class)) +// @ComponentScan(basePackages = "com.baeldung.componentscan.springapp") +// @ComponentScan(basePackages = "com.baeldung.componentscan.springapp.animals") +// @ComponentScan (excludeFilters = @ComponentScan.Filter(type=FilterType.REGEX,pattern="com\\.baeldung\\.componentscan\\.springapp\\.flowers\\..*")) public class SpringComponentScanApp { private static ApplicationContext applicationContext; diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/springbootapp/SpringBootComponentScanApp.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/springbootapp/SpringBootComponentScanApp.java index 4362caefbb..c48f8c5e54 100644 --- a/spring-boot-di/src/main/java/com/baeldung/componentscan/springbootapp/SpringBootComponentScanApp.java +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/springbootapp/SpringBootComponentScanApp.java @@ -8,9 +8,9 @@ import org.springframework.context.annotation.Bean; import com.baeldung.componentscan.ExampleBean; @SpringBootApplication -//@ComponentScan(basePackages = "com.baeldung.componentscan.springbootapp.animals") -//@ComponentScan ( excludeFilters = @ComponentScan.Filter(type=FilterType.REGEX,pattern="com\\.baeldung\\.componentscan\\.springbootapp\\.flowers\\..*")) -//@ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = Rose.class)) +// @ComponentScan(basePackages = "com.baeldung.componentscan.springbootapp.animals") +// @ComponentScan ( excludeFilters = @ComponentScan.Filter(type=FilterType.REGEX,pattern="com\\.baeldung\\.componentscan\\.springbootapp\\.flowers\\..*")) +// @ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = Rose.class)) public class SpringBootComponentScanApp { private static ApplicationContext applicationContext; diff --git a/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/annotation/ComponentScanAnnotationFilterAppIntegrationTest.java b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/annotation/ComponentScanAnnotationFilterAppIntegrationTest.java new file mode 100644 index 0000000000..9eb0b67c21 --- /dev/null +++ b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/annotation/ComponentScanAnnotationFilterAppIntegrationTest.java @@ -0,0 +1,30 @@ +package com.baeldung.componentscan.filter.annotation; + +import static org.junit.Assert.assertThat; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.test.context.junit4.SpringRunner; +import static org.hamcrest.CoreMatchers.*; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = ComponentScanAnnotationFilterApp.class) +public class ComponentScanAnnotationFilterAppIntegrationTest { + + @Test + public void whenAnnotationFilterIsUsed_thenComponentScanShouldRegisterBeanAnnotatedWithAnimalAnootation() { + ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ComponentScanAnnotationFilterApp.class); + List beans = Arrays.stream(applicationContext.getBeanDefinitionNames()) + .filter(bean -> !bean.contains("org.springframework") && !bean.contains("componentScanAnnotationFilterApp")) + .collect(Collectors.toList()); + assertThat(beans.size(), equalTo(1)); + assertThat(beans.get(0), equalTo("elephant")); + } +} diff --git a/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/aspectj/ComponentScanAspectJFilterAppIntegrationTest.java b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/aspectj/ComponentScanAspectJFilterAppIntegrationTest.java new file mode 100644 index 0000000000..945a0085f6 --- /dev/null +++ b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/aspectj/ComponentScanAspectJFilterAppIntegrationTest.java @@ -0,0 +1,30 @@ +package com.baeldung.componentscan.filter.aspectj; + +import static org.junit.Assert.assertThat; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.test.context.junit4.SpringRunner; +import static org.hamcrest.CoreMatchers.*; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = ComponentScanAspectJFilterApp.class) +public class ComponentScanAspectJFilterAppIntegrationTest { + + @Test + public void whenAspectJFilterIsUsed_thenComponentScanShouldRegisterBeanMatchingAspectJCreteria() { + ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ComponentScanAspectJFilterApp.class); + List beans = Arrays.stream(applicationContext.getBeanDefinitionNames()) + .filter(bean -> !bean.contains("org.springframework") && !bean.contains("componentScanAspectJFilterApp")) + .collect(Collectors.toList()); + assertThat(beans.size(), equalTo(1)); + assertThat(beans.get(0), equalTo("elephant")); + } +} diff --git a/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/assignable/ComponentScanAssignableTypeFilterAppIntegrationTest.java b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/assignable/ComponentScanAssignableTypeFilterAppIntegrationTest.java new file mode 100644 index 0000000000..3e5c7ee4f7 --- /dev/null +++ b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/assignable/ComponentScanAssignableTypeFilterAppIntegrationTest.java @@ -0,0 +1,31 @@ +package com.baeldung.componentscan.filter.assignable; + +import static org.junit.Assert.assertThat; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.test.context.junit4.SpringRunner; +import static org.hamcrest.CoreMatchers.*; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = ComponentScanAssignableTypeFilterApp.class) +public class ComponentScanAssignableTypeFilterAppIntegrationTest { + + @Test + public void whenAssignableTypeFilterIsUsed_thenComponentScanShouldRegisterBeanOfAssignableTypeAndItsSubClass() { + ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ComponentScanAssignableTypeFilterApp.class); + List beans = Arrays.stream(applicationContext.getBeanDefinitionNames()) + .filter(bean -> !bean.contains("org.springframework") && !bean.contains("componentScanAssignableTypeFilterApp")) + .collect(Collectors.toList()); + assertThat(beans.size(), equalTo(2)); + assertThat(beans.contains("cat"), equalTo(true)); + assertThat(beans.contains("elephant"), equalTo(true)); + } +} diff --git a/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilterAppIntegrationTest.java b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilterAppIntegrationTest.java new file mode 100644 index 0000000000..097214a2cf --- /dev/null +++ b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilterAppIntegrationTest.java @@ -0,0 +1,30 @@ +package com.baeldung.componentscan.filter.custom; + +import static org.junit.Assert.assertThat; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.test.context.junit4.SpringRunner; +import static org.hamcrest.CoreMatchers.*; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = ComponentScanCustomFilterApp.class) +public class ComponentScanCustomFilterAppIntegrationTest { + + @Test + public void whenCustomFilterIsUsed_thenComponentScanShouldRegisterBeanMatchingCustomFilter() { + ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ComponentScanCustomFilterApp.class); + List beans = Arrays.stream(applicationContext.getBeanDefinitionNames()) + .filter(bean -> !bean.contains("org.springframework") && !bean.contains("componentScanCustomFilterApp")) + .collect(Collectors.toList()); + assertThat(beans.size(), equalTo(1)); + assertThat(beans.get(0), equalTo("cat")); + } +} diff --git a/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterAppIntegrationTest.java b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterAppIntegrationTest.java new file mode 100644 index 0000000000..3163581c37 --- /dev/null +++ b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterAppIntegrationTest.java @@ -0,0 +1,31 @@ +package com.baeldung.componentscan.filter.regex; + +import static org.junit.Assert.assertThat; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.test.context.junit4.SpringRunner; +import static org.hamcrest.CoreMatchers.*; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = ComponentScanRegexFilterApp.class) +public class ComponentScanRegexFilterAppIntegrationTest { + + @Test + public void whenRegexFilterIsUsed_thenComponentScanShouldRegisterBeanMatchingRegex() { + ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ComponentScanRegexFilterApp.class); + List beans = Arrays.stream(applicationContext.getBeanDefinitionNames()) + .filter(bean -> !bean.contains("org.springframework") && !bean.contains("componentScanRegexFilterApp")) + .collect(Collectors.toList()); + assertThat(beans.size(), equalTo(2)); + assertThat(beans.contains("cat"), equalTo(true)); + assertThat(beans.contains("elephant"), equalTo(true)); + } +} diff --git a/spring-boot-disable-console-logging/README.md b/spring-boot-disable-console-logging/README.md deleted file mode 100644 index 7f1c06042f..0000000000 --- a/spring-boot-disable-console-logging/README.md +++ /dev/null @@ -1,6 +0,0 @@ -## 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-disable-console-logging/pom.xml b/spring-boot-disable-console-logging/pom.xml deleted file mode 100644 index 63ed129347..0000000000 --- a/spring-boot-disable-console-logging/pom.xml +++ /dev/null @@ -1,21 +0,0 @@ - - 4.0.0 - spring-boot-disable-console-logging - spring-boot-disable-console-logging - pom - Projects for Disabling Spring Boot Console Logging tutorials - - - parent-boot-2 - com.baeldung - 0.0.1-SNAPSHOT - ../parent-boot-2 - - - - disabling-console-logback - disabling-console-log4j2 - disabling-console-jul - - \ No newline at end of file diff --git a/spring-boot-environment/README.md b/spring-boot-environment/README.md new file mode 100644 index 0000000000..e916c503bc --- /dev/null +++ b/spring-boot-environment/README.md @@ -0,0 +1,7 @@ +## Spring Boot Environment + +This module contains articles about configuring the Spring Boot `Environment` + +### Relevant Articles: + - [EnvironmentPostProcessor in Spring Boot](https://www.baeldung.com/spring-boot-environmentpostprocessor) + - [Spring Properties File Outside jar](https://www.baeldung.com/spring-properties-file-outside-jar) \ No newline at end of file diff --git a/spring-boot-environment/pom.xml b/spring-boot-environment/pom.xml new file mode 100644 index 0000000000..4e4a363fee --- /dev/null +++ b/spring-boot-environment/pom.xml @@ -0,0 +1,148 @@ + + + 4.0.0 + spring-boot-environment + spring-boot-environment + war + Demo project for Spring Boot + + + parent-boot-2 + com.baeldung + 0.0.1-SNAPSHOT + ../parent-boot-2 + + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-thymeleaf + provided + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + org.springframework.boot + spring-boot-starter-mail + + + + org.springframework.boot + spring-boot-starter-actuator + + + + com.h2database + h2 + runtime + + + + javax.persistence + javax.persistence-api + ${jpa.version} + + + + com.google.guava + guava + ${guava.version} + + + + org.subethamail + subethasmtp + ${subethasmtp.version} + test + + + + org.springframework.cloud + spring-cloud-context + ${springcloud.version} + + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + + + + ${project.artifactId} + + + src/main/resources + true + + **/conf.properties + + + + + + + + autoconfiguration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + **/*IntegrationTest.java + **/*IntTest.java + + + **/AutoconfigurationTest.java + + + + + + + json + + + + + + + + + + 2.2 + 18.0 + 3.1.7 + 2.0.2.RELEASE + 4.5.8 + + + diff --git a/spring-boot-ops/src/main/java/com/baeldung/environmentpostprocessor/PriceCalculationApplication.java b/spring-boot-environment/src/main/java/com/baeldung/environmentpostprocessor/PriceCalculationApplication.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/environmentpostprocessor/PriceCalculationApplication.java rename to spring-boot-environment/src/main/java/com/baeldung/environmentpostprocessor/PriceCalculationApplication.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/environmentpostprocessor/PriceCalculationEnvironmentPostProcessor.java b/spring-boot-environment/src/main/java/com/baeldung/environmentpostprocessor/PriceCalculationEnvironmentPostProcessor.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/environmentpostprocessor/PriceCalculationEnvironmentPostProcessor.java rename to spring-boot-environment/src/main/java/com/baeldung/environmentpostprocessor/PriceCalculationEnvironmentPostProcessor.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/environmentpostprocessor/autoconfig/PriceCalculationAutoConfig.java b/spring-boot-environment/src/main/java/com/baeldung/environmentpostprocessor/autoconfig/PriceCalculationAutoConfig.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/environmentpostprocessor/autoconfig/PriceCalculationAutoConfig.java rename to spring-boot-environment/src/main/java/com/baeldung/environmentpostprocessor/autoconfig/PriceCalculationAutoConfig.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/environmentpostprocessor/calculator/GrossPriceCalculator.java b/spring-boot-environment/src/main/java/com/baeldung/environmentpostprocessor/calculator/GrossPriceCalculator.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/environmentpostprocessor/calculator/GrossPriceCalculator.java rename to spring-boot-environment/src/main/java/com/baeldung/environmentpostprocessor/calculator/GrossPriceCalculator.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/environmentpostprocessor/calculator/NetPriceCalculator.java b/spring-boot-environment/src/main/java/com/baeldung/environmentpostprocessor/calculator/NetPriceCalculator.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/environmentpostprocessor/calculator/NetPriceCalculator.java rename to spring-boot-environment/src/main/java/com/baeldung/environmentpostprocessor/calculator/NetPriceCalculator.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/environmentpostprocessor/calculator/PriceCalculator.java b/spring-boot-environment/src/main/java/com/baeldung/environmentpostprocessor/calculator/PriceCalculator.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/environmentpostprocessor/calculator/PriceCalculator.java rename to spring-boot-environment/src/main/java/com/baeldung/environmentpostprocessor/calculator/PriceCalculator.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/environmentpostprocessor/service/PriceCalculationService.java b/spring-boot-environment/src/main/java/com/baeldung/environmentpostprocessor/service/PriceCalculationService.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/environmentpostprocessor/service/PriceCalculationService.java rename to spring-boot-environment/src/main/java/com/baeldung/environmentpostprocessor/service/PriceCalculationService.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/properties/ConfProperties.java b/spring-boot-environment/src/main/java/com/baeldung/properties/ConfProperties.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/properties/ConfProperties.java rename to spring-boot-environment/src/main/java/com/baeldung/properties/ConfProperties.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/properties/ExternalPropertyConfigurer.java b/spring-boot-environment/src/main/java/com/baeldung/properties/ExternalPropertyConfigurer.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/properties/ExternalPropertyConfigurer.java rename to spring-boot-environment/src/main/java/com/baeldung/properties/ExternalPropertyConfigurer.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/properties/ExternalPropertyFileLoader.java b/spring-boot-environment/src/main/java/com/baeldung/properties/ExternalPropertyFileLoader.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/properties/ExternalPropertyFileLoader.java rename to spring-boot-environment/src/main/java/com/baeldung/properties/ExternalPropertyFileLoader.java diff --git a/spring-boot-ops/src/main/resources/META-INF/spring.factories b/spring-boot-environment/src/main/resources/META-INF/spring.factories similarity index 100% rename from spring-boot-ops/src/main/resources/META-INF/spring.factories rename to spring-boot-environment/src/main/resources/META-INF/spring.factories diff --git a/spring-boot-environment/src/main/resources/application.properties b/spring-boot-environment/src/main/resources/application.properties new file mode 100644 index 0000000000..27b7915cff --- /dev/null +++ b/spring-boot-environment/src/main/resources/application.properties @@ -0,0 +1,7 @@ +management.endpoints.web.exposure.include=* +management.metrics.enable.root=true +management.metrics.enable.jvm=true +management.endpoint.restart.enabled=true +spring.datasource.jmx-enabled=false +spring.main.allow-bean-definition-overriding=true +management.endpoint.shutdown.enabled=true \ No newline at end of file diff --git a/spring-boot-ops/src/main/resources/external/conf.properties b/spring-boot-environment/src/main/resources/external/conf.properties similarity index 100% rename from spring-boot-ops/src/main/resources/external/conf.properties rename to spring-boot-environment/src/main/resources/external/conf.properties diff --git a/spring-boot-management/src/main/resources/logback.xml b/spring-boot-environment/src/main/resources/logback.xml similarity index 58% rename from spring-boot-management/src/main/resources/logback.xml rename to spring-boot-environment/src/main/resources/logback.xml index 36314cbeeb..7d900d8ea8 100644 --- a/spring-boot-management/src/main/resources/logback.xml +++ b/spring-boot-environment/src/main/resources/logback.xml @@ -1,13 +1,13 @@ - + + - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + - - - + \ No newline at end of file diff --git a/spring-boot-ops/src/test/java/com/baeldung/environmentpostprocessor/PriceCalculationEnvironmentPostProcessorLiveTest.java b/spring-boot-environment/src/test/java/com/baeldung/environmentpostprocessor/PriceCalculationEnvironmentPostProcessorLiveTest.java similarity index 100% rename from spring-boot-ops/src/test/java/com/baeldung/environmentpostprocessor/PriceCalculationEnvironmentPostProcessorLiveTest.java rename to spring-boot-environment/src/test/java/com/baeldung/environmentpostprocessor/PriceCalculationEnvironmentPostProcessorLiveTest.java diff --git a/spring-boot-ops/src/test/java/com/baeldung/properties/ExternalPropertyFileLoaderIntegrationTest.java b/spring-boot-environment/src/test/java/com/baeldung/properties/ExternalPropertyFileLoaderIntegrationTest.java similarity index 100% rename from spring-boot-ops/src/test/java/com/baeldung/properties/ExternalPropertyFileLoaderIntegrationTest.java rename to spring-boot-environment/src/test/java/com/baeldung/properties/ExternalPropertyFileLoaderIntegrationTest.java diff --git a/spring-boot-flowable/README.md b/spring-boot-flowable/README.md index 884ddb7ec6..1a8fb28a5e 100644 --- a/spring-boot-flowable/README.md +++ b/spring-boot-flowable/README.md @@ -4,4 +4,4 @@ This module contains articles about Flowable in Boot applications ### Relevant articles -- [Introduction to Flowable](http://www.baeldung.com/flowable) +- [Introduction to Flowable](https://www.baeldung.com/flowable) diff --git a/spring-boot-gradle/README.md b/spring-boot-gradle/README.md index 3a64cca553..859c5d8199 100644 --- a/spring-boot-gradle/README.md +++ b/spring-boot-gradle/README.md @@ -4,5 +4,5 @@ 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) -- [Thin JARs with Spring Boot](http://www.baeldung.com/spring-boot-thin-jar) +- [Spring Boot: Configuring a Main Class](https://www.baeldung.com/spring-boot-main-class) +- [Thin JARs with Spring Boot](https://www.baeldung.com/spring-boot-thin-jar) diff --git a/spring-boot-jasypt/README.md b/spring-boot-jasypt/README.md index a07ca19790..c76339119a 100644 --- a/spring-boot-jasypt/README.md +++ b/spring-boot-jasypt/README.md @@ -4,4 +4,4 @@ This module contains articles about Jasypt in Spring Boot projects. ### Relevant Articles: -- [Spring Boot Configuration with Jasypt](http://www.baeldung.com/spring-boot-jasypt) +- [Spring Boot Configuration with Jasypt](https://www.baeldung.com/spring-boot-jasypt) diff --git a/spring-boot-keycloak/README.md b/spring-boot-keycloak/README.md index 15f0f1459c..2dfe3fc331 100644 --- a/spring-boot-keycloak/README.md +++ b/spring-boot-keycloak/README.md @@ -3,4 +3,4 @@ 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) +- [A Quick Guide to Using Keycloak with Spring Boot](https://www.baeldung.com/spring-boot-keycloak) diff --git a/spring-boot-kotlin/README.md b/spring-boot-kotlin/README.md index 73c312040d..d393805ed1 100644 --- a/spring-boot-kotlin/README.md +++ b/spring-boot-kotlin/README.md @@ -3,4 +3,4 @@ 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) +- [Non-blocking Spring Boot with Kotlin Coroutines](https://www.baeldung.com/non-blocking-spring-boot-with-kotlin-coroutines) diff --git a/spring-boot-libraries/README.MD b/spring-boot-libraries/README.md similarity index 74% rename from spring-boot-libraries/README.MD rename to spring-boot-libraries/README.md index f3706e0fa4..f0bc3c9e89 100644 --- a/spring-boot-libraries/README.MD +++ b/spring-boot-libraries/README.md @@ -1,3 +1,7 @@ +## Spring Boot Libraries + +This module contains articles about various Spring Boot libraries + ### The Course The "REST With Spring" Classes: http://bit.ly/restwithspring diff --git a/spring-boot-logging-log4j2/README.md b/spring-boot-logging-log4j2/README.md index 2d72ab6f97..76029caef8 100644 --- a/spring-boot-logging-log4j2/README.md +++ b/spring-boot-logging-log4j2/README.md @@ -3,6 +3,6 @@ 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 in Spring Boot](https://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-management/README.md b/spring-boot-management/README.md deleted file mode 100644 index 53d4c439ff..0000000000 --- a/spring-boot-management/README.md +++ /dev/null @@ -1,7 +0,0 @@ -## 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 deleted file mode 100644 index ca483d2f61..0000000000 --- a/spring-boot-management/pom.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - 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 - - - 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-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-maven-plugin - - - - diff --git a/spring-boot-mvc/README.md b/spring-boot-mvc/README.md index 444d91b0e7..a83ea3ee25 100644 --- a/spring-boot-mvc/README.md +++ b/spring-boot-mvc/README.md @@ -4,18 +4,18 @@ 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) +- [Guide to the Favicon in Spring Boot](https://www.baeldung.com/spring-boot-favicon) - [Custom Validation MessageSource in Spring Boot](https://www.baeldung.com/spring-custom-validation-message-source) -- [Spring Boot Annotations](http://www.baeldung.com/spring-boot-annotations) -- [Spring Scheduling Annotations](http://www.baeldung.com/spring-scheduling-annotations) -- [Spring Web Annotations](http://www.baeldung.com/spring-mvc-annotations) -- [Spring Core Annotations](http://www.baeldung.com/spring-core-annotations) -- [Display RSS Feed with Spring MVC](http://www.baeldung.com/spring-mvc-rss-feed) +- [Spring Boot Annotations](https://www.baeldung.com/spring-boot-annotations) +- [Spring Scheduling Annotations](https://www.baeldung.com/spring-scheduling-annotations) +- [Spring Web Annotations](https://www.baeldung.com/spring-mvc-annotations) +- [Spring Core Annotations](https://www.baeldung.com/spring-core-annotations) +- [Display RSS Feed with Spring MVC](https://www.baeldung.com/spring-mvc-rss-feed) - [A Controller, Service and DAO Example with Spring Boot and JSF](https://www.baeldung.com/jsf-spring-boot-controller-service-dao) - [Cache Eviction in Spring Boot](https://www.baeldung.com/spring-boot-evict-cache) -- [Setting Up Swagger 2 with a Spring REST API](http://www.baeldung.com/swagger-2-documentation-for-spring-rest-api) +- [Setting Up Swagger 2 with a Spring REST API](https://www.baeldung.com/swagger-2-documentation-for-spring-rest-api) - [Conditionally Enable Scheduled Jobs in Spring](https://www.baeldung.com/spring-scheduled-enabled-conditionally) - [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) +- [Using Spring ResponseEntity to Manipulate the HTTP Response](https://www.baeldung.com/spring-response-entity) +- [Spring Bean Annotations](https://www.baeldung.com/spring-bean-annotations) - More articles: [[next -->]](/spring-boot-mvc-2) diff --git a/spring-boot-ops-2/.gitignore b/spring-boot-ops-2/.gitignore deleted file mode 100644 index 153c9335eb..0000000000 --- a/spring-boot-ops-2/.gitignore +++ /dev/null @@ -1,29 +0,0 @@ -HELP.md -/target/ -!.mvn/wrapper/maven-wrapper.jar - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -/build/ - -### VS Code ### -.vscode/ diff --git a/spring-boot-ops-2/README.MD b/spring-boot-ops-2/README.MD deleted file mode 100644 index b4218dc395..0000000000 --- a/spring-boot-ops-2/README.MD +++ /dev/null @@ -1,4 +0,0 @@ -### Relevant Articles - -- [How to Configure Spring Boot Tomcat](https://www.baeldung.com/spring-boot-configure-tomcat) -- [Spring Boot Embedded Tomcat Logs](https://www.baeldung.com/spring-boot-embedded-tomcat-logs) diff --git a/spring-boot-ops-2/pom.xml b/spring-boot-ops-2/pom.xml deleted file mode 100644 index 74fcd79169..0000000000 --- a/spring-boot-ops-2/pom.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - 4.0.0 - com.baeldung - spring-boot-ops-2 - 0.0.1-SNAPSHOT - spring-boot-ops-2 - - - parent-boot-2 - com.baeldung - 0.0.1-SNAPSHOT - ../parent-boot-2 - - - - - org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot - spring-boot-starter-test - test - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - diff --git a/spring-boot-ops-2/src/main/resources/application.properties b/spring-boot-ops-2/src/main/resources/application.properties deleted file mode 100644 index fc3fff1d38..0000000000 --- a/spring-boot-ops-2/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ -spring.profiles.active=tomcat diff --git a/spring-boot-ops/README.md b/spring-boot-ops/README.md deleted file mode 100644 index 5be5c974d3..0000000000 --- a/spring-boot-ops/README.md +++ /dev/null @@ -1,14 +0,0 @@ -### Relevant Articles: - - [Deploy a Spring Boot WAR into a Tomcat Server](http://www.baeldung.com/spring-boot-war-tomcat-deploy) - - [Spring Boot Dependency Management with a Custom Parent](http://www.baeldung.com/spring-boot-dependency-management-custom-parent) - - [A Custom Data Binder in Spring MVC](http://www.baeldung.com/spring-mvc-custom-data-binder) - - [Create a Fat Jar App with Spring Boot](http://www.baeldung.com/deployable-fat-jar-spring-boot) - - [Introduction to WebJars](http://www.baeldung.com/maven-webjars) - - [Intro to Spring Boot Starters](http://www.baeldung.com/spring-boot-starters) - - [A Quick Guide to Maven Wrapper](http://www.baeldung.com/maven-wrapper) - - [Shutdown a Spring Boot Application](http://www.baeldung.com/spring-boot-shutdown) - - [Spring Boot Console Application](http://www.baeldung.com/spring-boot-console-app) - - [Comparing Embedded Servlet Containers in Spring Boot](http://www.baeldung.com/spring-boot-servlet-containers) - - [Programmatically Restarting a Spring Boot Application](https://www.baeldung.com/java-restart-spring-boot-app) - - [Spring Properties File Outside jar](https://www.baeldung.com/spring-properties-file-outside-jar) - - [EnvironmentPostProcessor in Spring Boot](https://www.baeldung.com/spring-boot-environmentpostprocessor) diff --git a/spring-boot-parent/README.md b/spring-boot-parent/README.md index c3bb4c700d..b48a286d62 100644 --- a/spring-boot-parent/README.md +++ b/spring-boot-parent/README.md @@ -1,3 +1,7 @@ +## Spring Boot Parent + +This module contains articles about Spring Boot Starter Parent + ### Relevant Articles - [The Spring Boot Starter Parent](https://www.baeldung.com/spring-boot-starter-parent) diff --git a/spring-boot-performance/README.md b/spring-boot-performance/README.md index 015dd759a8..f6a11720de 100644 --- a/spring-boot-performance/README.md +++ b/spring-boot-performance/README.md @@ -1,3 +1,7 @@ +## Spring Boot Performance + +This module contains articles about Spring Boot performance. + ### Relevant Articles - [Lazy Initialization in Spring Boot 2](https://www.baeldung.com/spring-boot-lazy-initialization) diff --git a/spring-boot-properties/README.md b/spring-boot-properties/README.md index 9aea5b4871..daf7c55ab3 100644 --- a/spring-boot-properties/README.md +++ b/spring-boot-properties/README.md @@ -1,10 +1,14 @@ +## Spring Boot Properties + +This module contains articles about Properties in Spring Boot. + ### Relevant Articles: - [Reloading Properties Files in Spring](https://www.baeldung.com/spring-reloading-properties) -- [Guide to @ConfigurationProperties in Spring Boot](http://www.baeldung.com/configuration-properties-in-spring-boot) +- [Guide to @ConfigurationProperties in Spring Boot](https://www.baeldung.com/configuration-properties-in-spring-boot) - [Load Spring Boot Properties From a JSON File](https://www.baeldung.com/spring-boot-json-properties) - [Guide to @EnableConfigurationProperties](https://www.baeldung.com/spring-enable-config-properties) -- [Properties with Spring and Spring Boot](http://www.baeldung.com/properties-with-spring) - checkout the `com.baeldung.properties` package for all scenarios of properties injection and usage -- [A Quick Guide to Spring @Value](http://www.baeldung.com/spring-value-annotation) -- [Spring YAML Configuration](http://www.baeldung.com/spring-yaml) -- [Using Spring @Value with Defaults](http://www.baeldung.com/spring-value-defaults) -- [How to Inject a Property Value Into a Class Not Managed by Spring?](http://www.baeldung.com/inject-properties-value-non-spring-class) +- [Properties with Spring and Spring Boot](https://www.baeldung.com/properties-with-spring) - checkout the `com.baeldung.properties` package for all scenarios of properties injection and usage +- [A Quick Guide to Spring @Value](https://www.baeldung.com/spring-value-annotation) +- [Spring YAML Configuration](https://www.baeldung.com/spring-yaml) +- [Using Spring @Value with Defaults](https://www.baeldung.com/spring-value-defaults) +- [How to Inject a Property Value Into a Class Not Managed by Spring?](https://www.baeldung.com/inject-properties-value-non-spring-class) diff --git a/spring-boot-property-exp/README.md b/spring-boot-property-exp/README.md index 70cf6bdfac..23af5995e2 100644 --- a/spring-boot-property-exp/README.md +++ b/spring-boot-property-exp/README.md @@ -1,18 +1,27 @@ -## The Module Holds Sources for the Following Articles - - [Automatic Property Expansion with Spring Boot](http://www.baeldung.com/spring-boot-auto-property-expansion) +## Spring Boot Property Expansion + +This module contains articles about Spring Boot Property Expansion + +### Relevant Articles + + - [Automatic Property Expansion with Spring Boot](https://www.baeldung.com/spring-boot-auto-property-expansion) -### Module property-exp-default-config - This module contains both a standard Maven Spring Boot build and the Gradle build which is Maven compatible. +## SubModules - In order to execute the Maven example, run the following command: +### property-exp-default-config + +This module contains both a standard Maven Spring Boot build and the Gradle build which is Maven compatible. - `mvn spring-boot:run` +In order to execute the Maven example, run the following command: - To execute the Gradle example: +`mvn spring-boot:run` + +To execute the Gradle example: `gradle bootRun` - ### Module property-exp-custom-config - This project is not using the standard Spring Boot parent and is configured manually. Run the following command: +### property-exp-custom-config - `mvn exec:java` +This project is not using the standard Spring Boot parent and is configured manually. Run the following command: + +`mvn exec:java` diff --git a/spring-boot-rest/README.md b/spring-boot-rest/README.md index 6f365bd465..ffac9335fd 100644 --- a/spring-boot-rest/README.md +++ b/spring-boot-rest/README.md @@ -1,19 +1,27 @@ -Module for the articles that are part of the Spring REST E-book: +## Spring Boot REST -1. [Bootstrap a Web Application with Spring 5](https://www.baeldung.com/bootstraping-a-web-application-with-spring-and-java-based-configuration) -2. [Build a REST API with Spring and Java Config](http://www.baeldung.com/building-a-restful-web-service-with-spring-and-java-based-configuration) -3. [Http Message Converters with the Spring Framework](http://www.baeldung.com/spring-httpmessageconverter-rest) -4. [Spring’s RequestBody and ResponseBody Annotations](https://www.baeldung.com/spring-request-response-body) -5. [Entity To DTO Conversion for a Spring REST API](https://www.baeldung.com/entity-to-and-from-dto-for-a-java-spring-application) -6. [Error Handling for REST with Spring](http://www.baeldung.com/exception-handling-for-rest-with-spring) -7. [REST API Discoverability and HATEOAS](http://www.baeldung.com/restful-web-service-discoverability) -8. [An Intro to Spring HATEOAS](http://www.baeldung.com/spring-hateoas-tutorial) -9. [REST Pagination in Spring](http://www.baeldung.com/rest-api-pagination-in-spring) -10. [Test a REST API with Java](http://www.baeldung.com/integration-testing-a-rest-api) +This module contains articles about Spring Boot RESTful APIs. -- [HATEOAS for a Spring REST Service](http://www.baeldung.com/rest-api-discoverability-with-spring) -- [Versioning a REST API](http://www.baeldung.com/rest-versioning) -- [ETags for REST with Spring](http://www.baeldung.com/etags-for-rest-with-spring) -- [Testing REST with multiple MIME types](http://www.baeldung.com/testing-rest-api-with-multiple-media-types) +### Relevant Articles + +- [HATEOAS for a Spring REST Service](https://www.baeldung.com/rest-api-discoverability-with-spring) +- [Versioning a REST API](https://www.baeldung.com/rest-versioning) +- [ETags for REST with Spring](https://www.baeldung.com/etags-for-rest-with-spring) +- [Testing REST with multiple MIME types](https://www.baeldung.com/testing-rest-api-with-multiple-media-types) - [Testing Web APIs with Postman Collections](https://www.baeldung.com/postman-testing-collections) - [Spring Boot Consuming and Producing JSON](https://www.baeldung.com/spring-boot-json) + +### E-book + +These articles are part of the Spring REST E-book: + +1. [Bootstrap a Web Application with Spring 5](https://www.baeldung.com/bootstraping-a-web-application-with-spring-and-java-based-configuration) +2. [Build a REST API with Spring and Java Config](https://www.baeldung.com/building-a-restful-web-service-with-spring-and-java-based-configuration) +3. [Http Message Converters with the Spring Framework](https://www.baeldung.com/spring-httpmessageconverter-rest) +4. [Spring’s RequestBody and ResponseBody Annotations](https://www.baeldung.com/spring-request-response-body) +5. [Entity To DTO Conversion for a Spring REST API](https://www.baeldung.com/entity-to-and-from-dto-for-a-java-spring-application) +6. [Error Handling for REST with Spring](https://www.baeldung.com/exception-handling-for-rest-with-spring) +7. [REST API Discoverability and HATEOAS](https://www.baeldung.com/restful-web-service-discoverability) +8. [An Intro to Spring HATEOAS](https://www.baeldung.com/spring-hateoas-tutorial) +9. [REST Pagination in Spring](https://www.baeldung.com/rest-api-pagination-in-spring) +10. [Test a REST API with Java](https://www.baeldung.com/integration-testing-a-rest-api) diff --git a/spring-boot-runtime/README.md b/spring-boot-runtime/README.md new file mode 100644 index 0000000000..d3dc19493d --- /dev/null +++ b/spring-boot-runtime/README.md @@ -0,0 +1,10 @@ +## Spring Boot Runtime + +This module contains articles about administering a Spring Boot runtime + +### Relevant Articles: + - [Shutdown a Spring Boot Application](https://www.baeldung.com/spring-boot-shutdown) + - [Programmatically Restarting a Spring Boot Application](https://www.baeldung.com/java-restart-spring-boot-app) + - [Logging HTTP Requests with Spring Boot Actuator HTTP Tracing](https://www.baeldung.com/spring-boot-actuator-http) + - [How to Disable Console Logging in Spring Boot](https://www.baeldung.com/spring-boot-disable-console-logging) + - [Spring Boot Embedded Tomcat Logs](https://www.baeldung.com/spring-boot-embedded-tomcat-logs) \ No newline at end of file diff --git a/spring-boot-disable-console-logging/disabling-console-jul/.gitignore b/spring-boot-runtime/disabling-console-jul/.gitignore similarity index 100% rename from spring-boot-disable-console-logging/disabling-console-jul/.gitignore rename to spring-boot-runtime/disabling-console-jul/.gitignore diff --git a/spring-boot-disable-console-logging/disabling-console-jul/pom.xml b/spring-boot-runtime/disabling-console-jul/pom.xml similarity index 100% rename from spring-boot-disable-console-logging/disabling-console-jul/pom.xml rename to spring-boot-runtime/disabling-console-jul/pom.xml diff --git a/spring-boot-disable-console-logging/disabling-console-jul/src/main/java/com/baeldung/springbootlogging/disablingconsole/jul/properties/DisablingConsoleJulApp.java b/spring-boot-runtime/disabling-console-jul/src/main/java/com/baeldung/springbootlogging/disablingconsole/jul/properties/DisablingConsoleJulApp.java similarity index 100% rename from spring-boot-disable-console-logging/disabling-console-jul/src/main/java/com/baeldung/springbootlogging/disablingconsole/jul/properties/DisablingConsoleJulApp.java rename to spring-boot-runtime/disabling-console-jul/src/main/java/com/baeldung/springbootlogging/disablingconsole/jul/properties/DisablingConsoleJulApp.java diff --git a/spring-boot-disable-console-logging/disabling-console-jul/src/main/java/com/baeldung/springbootlogging/disablingconsole/jul/properties/controllers/DisabledConsoleRestController.java b/spring-boot-runtime/disabling-console-jul/src/main/java/com/baeldung/springbootlogging/disablingconsole/jul/properties/controllers/DisabledConsoleRestController.java similarity index 100% rename from spring-boot-disable-console-logging/disabling-console-jul/src/main/java/com/baeldung/springbootlogging/disablingconsole/jul/properties/controllers/DisabledConsoleRestController.java rename to spring-boot-runtime/disabling-console-jul/src/main/java/com/baeldung/springbootlogging/disablingconsole/jul/properties/controllers/DisabledConsoleRestController.java diff --git a/spring-boot-disable-console-logging/disabling-console-jul/src/main/resources/application.properties b/spring-boot-runtime/disabling-console-jul/src/main/resources/application.properties similarity index 100% rename from spring-boot-disable-console-logging/disabling-console-jul/src/main/resources/application.properties rename to spring-boot-runtime/disabling-console-jul/src/main/resources/application.properties diff --git a/spring-boot-disable-console-logging/disabling-console-jul/src/main/resources/logging.properties b/spring-boot-runtime/disabling-console-jul/src/main/resources/logging.properties similarity index 100% rename from spring-boot-disable-console-logging/disabling-console-jul/src/main/resources/logging.properties rename to spring-boot-runtime/disabling-console-jul/src/main/resources/logging.properties diff --git a/spring-boot-disable-console-logging/disabling-console-log4j2/.gitignore b/spring-boot-runtime/disabling-console-log4j2/.gitignore similarity index 100% rename from spring-boot-disable-console-logging/disabling-console-log4j2/.gitignore rename to spring-boot-runtime/disabling-console-log4j2/.gitignore diff --git a/spring-boot-disable-console-logging/disabling-console-log4j2/pom.xml b/spring-boot-runtime/disabling-console-log4j2/pom.xml similarity index 100% rename from spring-boot-disable-console-logging/disabling-console-log4j2/pom.xml rename to spring-boot-runtime/disabling-console-log4j2/pom.xml diff --git a/spring-boot-disable-console-logging/disabling-console-log4j2/src/main/java/com/baeldung/springbootlogging/disablingconsole/log4j2/xml/DisablingConsoleLog4j2App.java b/spring-boot-runtime/disabling-console-log4j2/src/main/java/com/baeldung/springbootlogging/disablingconsole/log4j2/xml/DisablingConsoleLog4j2App.java similarity index 100% rename from spring-boot-disable-console-logging/disabling-console-log4j2/src/main/java/com/baeldung/springbootlogging/disablingconsole/log4j2/xml/DisablingConsoleLog4j2App.java rename to spring-boot-runtime/disabling-console-log4j2/src/main/java/com/baeldung/springbootlogging/disablingconsole/log4j2/xml/DisablingConsoleLog4j2App.java diff --git a/spring-boot-disable-console-logging/disabling-console-log4j2/src/main/java/com/baeldung/springbootlogging/disablingconsole/log4j2/xml/controllers/DisabledConsoleRestController.java b/spring-boot-runtime/disabling-console-log4j2/src/main/java/com/baeldung/springbootlogging/disablingconsole/log4j2/xml/controllers/DisabledConsoleRestController.java similarity index 100% rename from spring-boot-disable-console-logging/disabling-console-log4j2/src/main/java/com/baeldung/springbootlogging/disablingconsole/log4j2/xml/controllers/DisabledConsoleRestController.java rename to spring-boot-runtime/disabling-console-log4j2/src/main/java/com/baeldung/springbootlogging/disablingconsole/log4j2/xml/controllers/DisabledConsoleRestController.java diff --git a/spring-boot-disable-console-logging/disabling-console-log4j2/src/main/resources/log4j2.xml b/spring-boot-runtime/disabling-console-log4j2/src/main/resources/log4j2.xml similarity index 100% rename from spring-boot-disable-console-logging/disabling-console-log4j2/src/main/resources/log4j2.xml rename to spring-boot-runtime/disabling-console-log4j2/src/main/resources/log4j2.xml diff --git a/spring-boot-disable-console-logging/disabling-console-logback/.gitignore b/spring-boot-runtime/disabling-console-logback/.gitignore similarity index 100% rename from spring-boot-disable-console-logging/disabling-console-logback/.gitignore rename to spring-boot-runtime/disabling-console-logback/.gitignore diff --git a/spring-boot-disable-console-logging/disabling-console-logback/pom.xml b/spring-boot-runtime/disabling-console-logback/pom.xml similarity index 100% rename from spring-boot-disable-console-logging/disabling-console-logback/pom.xml rename to spring-boot-runtime/disabling-console-logback/pom.xml diff --git a/spring-boot-disable-console-logging/disabling-console-logback/src/main/java/com/baeldung/springbootlogging/disablingconsole/logback/xml/DisablingConsoleLogbackApp.java b/spring-boot-runtime/disabling-console-logback/src/main/java/com/baeldung/springbootlogging/disablingconsole/logback/xml/DisablingConsoleLogbackApp.java similarity index 100% rename from spring-boot-disable-console-logging/disabling-console-logback/src/main/java/com/baeldung/springbootlogging/disablingconsole/logback/xml/DisablingConsoleLogbackApp.java rename to spring-boot-runtime/disabling-console-logback/src/main/java/com/baeldung/springbootlogging/disablingconsole/logback/xml/DisablingConsoleLogbackApp.java diff --git a/spring-boot-disable-console-logging/disabling-console-logback/src/main/java/com/baeldung/springbootlogging/disablingconsole/logback/xml/controllers/DisabledConsoleRestController.java b/spring-boot-runtime/disabling-console-logback/src/main/java/com/baeldung/springbootlogging/disablingconsole/logback/xml/controllers/DisabledConsoleRestController.java similarity index 100% rename from spring-boot-disable-console-logging/disabling-console-logback/src/main/java/com/baeldung/springbootlogging/disablingconsole/logback/xml/controllers/DisabledConsoleRestController.java rename to spring-boot-runtime/disabling-console-logback/src/main/java/com/baeldung/springbootlogging/disablingconsole/logback/xml/controllers/DisabledConsoleRestController.java diff --git a/spring-boot-disable-console-logging/disabling-console-logback/src/main/resources/application.properties b/spring-boot-runtime/disabling-console-logback/src/main/resources/application.properties similarity index 100% rename from spring-boot-disable-console-logging/disabling-console-logback/src/main/resources/application.properties rename to spring-boot-runtime/disabling-console-logback/src/main/resources/application.properties diff --git a/spring-boot-disable-console-logging/disabling-console-logback/src/main/resources/logback-spring.xml b/spring-boot-runtime/disabling-console-logback/src/main/resources/logback-spring.xml similarity index 100% rename from spring-boot-disable-console-logging/disabling-console-logback/src/main/resources/logback-spring.xml rename to spring-boot-runtime/disabling-console-logback/src/main/resources/logback-spring.xml diff --git a/spring-boot-ops/docker/Dockerfile b/spring-boot-runtime/docker/Dockerfile similarity index 100% rename from spring-boot-ops/docker/Dockerfile rename to spring-boot-runtime/docker/Dockerfile diff --git a/spring-boot-ops/docker/logback.xml b/spring-boot-runtime/docker/logback.xml similarity index 100% rename from spring-boot-ops/docker/logback.xml rename to spring-boot-runtime/docker/logback.xml diff --git a/spring-boot-ops/docker/run.sh b/spring-boot-runtime/docker/run.sh old mode 100755 new mode 100644 similarity index 100% rename from spring-boot-ops/docker/run.sh rename to spring-boot-runtime/docker/run.sh diff --git a/spring-boot-runtime/pom.xml b/spring-boot-runtime/pom.xml new file mode 100644 index 0000000000..dca9b47410 --- /dev/null +++ b/spring-boot-runtime/pom.xml @@ -0,0 +1,159 @@ + + + 4.0.0 + spring-boot-runtime + spring-boot-runtime + war + Demo project for Spring Boot + + + parent-boot-2 + com.baeldung + 0.0.1-SNAPSHOT + ../parent-boot-2 + + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-thymeleaf + provided + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + org.springframework.boot + spring-boot-starter-mail + + + + org.springframework.boot + spring-boot-starter-actuator + + + + org.springframework.boot + spring-boot-starter-security + + + de.codecentric + spring-boot-admin-starter-client + ${spring-boot-admin-starter-client.version} + + + + com.h2database + h2 + runtime + + + + javax.persistence + javax.persistence-api + ${jpa.version} + + + + com.google.guava + guava + ${guava.version} + + + + org.subethamail + subethasmtp + ${subethasmtp.version} + test + + + + org.springframework.cloud + spring-cloud-context + ${springcloud.version} + + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + + + + ${project.artifactId} + + + src/main/resources + true + + **/conf.properties + + + + + + + + autoconfiguration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + **/*IntegrationTest.java + **/*IntTest.java + + + **/AutoconfigurationTest.java + + + + + + + json + + + + + + + + + + 2.2 + 18.0 + 3.1.7 + 2.0.2.RELEASE + 4.5.8 + 2.1.6 + + + diff --git a/spring-boot-ops/src/main/java/com/baeldung/restart/Application.java b/spring-boot-runtime/src/main/java/com/baeldung/restart/Application.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/restart/Application.java rename to spring-boot-runtime/src/main/java/com/baeldung/restart/Application.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/restart/RestartController.java b/spring-boot-runtime/src/main/java/com/baeldung/restart/RestartController.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/restart/RestartController.java rename to spring-boot-runtime/src/main/java/com/baeldung/restart/RestartController.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/restart/RestartService.java b/spring-boot-runtime/src/main/java/com/baeldung/restart/RestartService.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/restart/RestartService.java rename to spring-boot-runtime/src/main/java/com/baeldung/restart/RestartService.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/shutdown/Application.java b/spring-boot-runtime/src/main/java/com/baeldung/shutdown/Application.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/shutdown/Application.java rename to spring-boot-runtime/src/main/java/com/baeldung/shutdown/Application.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/shutdown/ShutdownConfig.java b/spring-boot-runtime/src/main/java/com/baeldung/shutdown/ShutdownConfig.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/shutdown/ShutdownConfig.java rename to spring-boot-runtime/src/main/java/com/baeldung/shutdown/ShutdownConfig.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/shutdown/TerminateBean.java b/spring-boot-runtime/src/main/java/com/baeldung/shutdown/TerminateBean.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/shutdown/TerminateBean.java rename to spring-boot-runtime/src/main/java/com/baeldung/shutdown/TerminateBean.java diff --git a/spring-boot-ops/src/main/java/com/baeldung/shutdown/shutdown/ShutdownController.java b/spring-boot-runtime/src/main/java/com/baeldung/shutdown/shutdown/ShutdownController.java similarity index 100% rename from spring-boot-ops/src/main/java/com/baeldung/shutdown/shutdown/ShutdownController.java rename to spring-boot-runtime/src/main/java/com/baeldung/shutdown/shutdown/ShutdownController.java diff --git a/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/logging/LoggingApplication.java b/spring-boot-runtime/src/main/java/com/baeldung/spring/boot/management/logging/LoggingApplication.java similarity index 82% rename from spring-boot-management/src/main/java/com/baeldung/spring/boot/management/logging/LoggingApplication.java rename to spring-boot-runtime/src/main/java/com/baeldung/spring/boot/management/logging/LoggingApplication.java index 6371ac4c64..5c1b143c4e 100644 --- a/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/logging/LoggingApplication.java +++ b/spring-boot-runtime/src/main/java/com/baeldung/spring/boot/management/logging/LoggingApplication.java @@ -2,7 +2,9 @@ package com.baeldung.spring.boot.management.logging; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Profile; +@Profile("logging") @SpringBootApplication public class LoggingApplication { public static void main(String[] args) { diff --git a/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/logging/LoggingController.java b/spring-boot-runtime/src/main/java/com/baeldung/spring/boot/management/logging/LoggingController.java similarity index 100% rename from spring-boot-management/src/main/java/com/baeldung/spring/boot/management/logging/LoggingController.java rename to spring-boot-runtime/src/main/java/com/baeldung/spring/boot/management/logging/LoggingController.java diff --git a/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/logging/SecurityConfig.java b/spring-boot-runtime/src/main/java/com/baeldung/spring/boot/management/logging/SecurityConfig.java similarity index 100% rename from spring-boot-management/src/main/java/com/baeldung/spring/boot/management/logging/SecurityConfig.java rename to spring-boot-runtime/src/main/java/com/baeldung/spring/boot/management/logging/SecurityConfig.java diff --git a/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/App.java b/spring-boot-runtime/src/main/java/com/baeldung/spring/boot/management/trace/App.java similarity index 80% rename from spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/App.java rename to spring-boot-runtime/src/main/java/com/baeldung/spring/boot/management/trace/App.java index 150e451c57..ffc30e9b33 100644 --- a/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/App.java +++ b/spring-boot-runtime/src/main/java/com/baeldung/spring/boot/management/trace/App.java @@ -2,7 +2,9 @@ package com.baeldung.spring.boot.management.trace; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Profile; +@Profile("logging") @SpringBootApplication public class App { diff --git a/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/CustomTraceRepository.java b/spring-boot-runtime/src/main/java/com/baeldung/spring/boot/management/trace/CustomTraceRepository.java similarity index 100% rename from spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/CustomTraceRepository.java rename to spring-boot-runtime/src/main/java/com/baeldung/spring/boot/management/trace/CustomTraceRepository.java diff --git a/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/EchoController.java b/spring-boot-runtime/src/main/java/com/baeldung/spring/boot/management/trace/EchoController.java similarity index 100% rename from spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/EchoController.java rename to spring-boot-runtime/src/main/java/com/baeldung/spring/boot/management/trace/EchoController.java diff --git a/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/TraceRequestFilter.java b/spring-boot-runtime/src/main/java/com/baeldung/spring/boot/management/trace/TraceRequestFilter.java similarity index 100% rename from spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/TraceRequestFilter.java rename to spring-boot-runtime/src/main/java/com/baeldung/spring/boot/management/trace/TraceRequestFilter.java diff --git a/spring-boot-management/src/main/resources/application.properties b/spring-boot-runtime/src/main/resources/application-logging.properties similarity index 100% rename from spring-boot-management/src/main/resources/application.properties rename to spring-boot-runtime/src/main/resources/application-logging.properties diff --git a/spring-boot-ops-2/src/main/resources/application-tomcat.properties b/spring-boot-runtime/src/main/resources/application-tomcat.properties similarity index 100% rename from spring-boot-ops-2/src/main/resources/application-tomcat.properties rename to spring-boot-runtime/src/main/resources/application-tomcat.properties diff --git a/spring-boot-runtime/src/main/resources/application.properties b/spring-boot-runtime/src/main/resources/application.properties new file mode 100644 index 0000000000..27b7915cff --- /dev/null +++ b/spring-boot-runtime/src/main/resources/application.properties @@ -0,0 +1,7 @@ +management.endpoints.web.exposure.include=* +management.metrics.enable.root=true +management.metrics.enable.jvm=true +management.endpoint.restart.enabled=true +spring.datasource.jmx-enabled=false +spring.main.allow-bean-definition-overriding=true +management.endpoint.shutdown.enabled=true \ No newline at end of file diff --git a/spring-boot-runtime/src/main/resources/logback.xml b/spring-boot-runtime/src/main/resources/logback.xml new file mode 100644 index 0000000000..7d900d8ea8 --- /dev/null +++ b/spring-boot-runtime/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-ops/src/test/java/com/baeldung/restart/RestartApplicationManualTest.java b/spring-boot-runtime/src/test/java/com/baeldung/restart/RestartApplicationManualTest.java similarity index 100% rename from spring-boot-ops/src/test/java/com/baeldung/restart/RestartApplicationManualTest.java rename to spring-boot-runtime/src/test/java/com/baeldung/restart/RestartApplicationManualTest.java diff --git a/spring-boot-ops/src/test/java/com/baeldung/shutdown/ShutdownApplicationIntegrationTest.java b/spring-boot-runtime/src/test/java/com/baeldung/shutdown/ShutdownApplicationIntegrationTest.java similarity index 100% rename from spring-boot-ops/src/test/java/com/baeldung/shutdown/ShutdownApplicationIntegrationTest.java rename to spring-boot-runtime/src/test/java/com/baeldung/shutdown/ShutdownApplicationIntegrationTest.java diff --git a/spring-boot-ops/src/test/resources/application-integrationtest.properties b/spring-boot-runtime/src/test/resources/application-integrationtest.properties similarity index 100% rename from spring-boot-ops/src/test/resources/application-integrationtest.properties rename to spring-boot-runtime/src/test/resources/application-integrationtest.properties diff --git a/spring-boot-ops/src/test/resources/application.properties b/spring-boot-runtime/src/test/resources/application.properties similarity index 100% rename from spring-boot-ops/src/test/resources/application.properties rename to spring-boot-runtime/src/test/resources/application.properties diff --git a/spring-boot-security/README.md b/spring-boot-security/README.md index 30a3218672..be4690f321 100644 --- a/spring-boot-security/README.md +++ b/spring-boot-security/README.md @@ -1,3 +1,13 @@ +## Spring Boot Security + +This module contains articles about Spring Boot Security + +### Relevant Articles: + +- [Spring Boot Security Auto-Configuration](https://www.baeldung.com/spring-boot-security-autoconfiguration) +- [Spring Security for Spring Boot Integration Tests](https://www.baeldung.com/spring-security-integration-tests) +- [Introduction to Spring Security Taglibs](https://www.baeldung.com/spring-security-taglibs) + ### Spring Boot Security Auto-Configuration - mvn clean install @@ -5,9 +15,5 @@ - uncomment security properties for easy testing. If not random will be generated. ### CURL commands -- curl -X POST -u baeldung-admin:baeldung -d grant_type=client_credentials -d username=baeldung-admin -d password=baeldung http://localhost:8080/oauth/token -### Relevant Articles: -- [Spring Boot Security Auto-Configuration](http://www.baeldung.com/spring-boot-security-autoconfiguration) -- [Spring Security for Spring Boot Integration Tests](https://www.baeldung.com/spring-security-integration-tests) -- [Introduction to Spring Security Taglibs](https://www.baeldung.com/spring-security-taglibs) +- curl -X POST -u baeldung-admin:baeldung -d grant_type=client_credentials -d username=baeldung-admin -d password=baeldung http://localhost:8080/oauth/token diff --git a/spring-boot-testing/README.MD b/spring-boot-testing/README.md similarity index 86% rename from spring-boot-testing/README.MD rename to spring-boot-testing/README.md index 7a4c4f53a1..0b2533e6bc 100644 --- a/spring-boot-testing/README.MD +++ b/spring-boot-testing/README.md @@ -1,4 +1,9 @@ +## Spring Boot Testing + +This module contains articles about Spring Boot testing + ### The Course + The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: diff --git a/spring-boot-vue/README.md b/spring-boot-vue/README.md index e68f961e51..de473c0d36 100644 --- a/spring-boot-vue/README.md +++ b/spring-boot-vue/README.md @@ -1,2 +1,6 @@ +## Spring Boot Vue + +This module contains articles about Spring Boot with Vue.js + ### Relevant Articles: -- [Vue.js Frontend with a Spring Boot Backend](http://www.baeldung.com/spring-boot-vue-js) +- [Vue.js Frontend with a Spring Boot Backend](https://www.baeldung.com/spring-boot-vue-js) diff --git a/spring-boot/README.MD b/spring-boot/README.MD index 522a1f7120..2423d6d331 100644 --- a/spring-boot/README.MD +++ b/spring-boot/README.MD @@ -7,30 +7,30 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: -- [A Guide to Spring in Eclipse STS](http://www.baeldung.com/eclipse-sts-spring) -- [The @ServletComponentScan Annotation in Spring Boot](http://www.baeldung.com/spring-servletcomponentscan) -- [How to Register a Servlet in Java](http://www.baeldung.com/register-servlet) -- [Guide to Spring WebUtils and ServletRequestUtils](http://www.baeldung.com/spring-webutils-servletrequestutils) -- [Using Custom Banners in Spring Boot](http://www.baeldung.com/spring-boot-custom-banners) -- [Guide to Internationalization in Spring Boot](http://www.baeldung.com/spring-boot-internationalization) -- [Create a Custom FailureAnalyzer with Spring Boot](http://www.baeldung.com/spring-boot-failure-analyzer) -- [Dynamic DTO Validation Config Retrieved from the Database](http://www.baeldung.com/spring-dynamic-dto-validation) -- [Custom Information in Spring Boot Info Endpoint](http://www.baeldung.com/spring-boot-info-actuator-custom) -- [Using @JsonComponent in Spring Boot](http://www.baeldung.com/spring-boot-jsoncomponent) -- [Testing in Spring Boot](http://www.baeldung.com/spring-boot-testing) -- [How to Get All Spring-Managed Beans?](http://www.baeldung.com/spring-show-all-beans) -- [Spring Boot and Togglz Aspect](http://www.baeldung.com/spring-togglz) -- [Getting Started with GraphQL and Spring Boot](http://www.baeldung.com/spring-graphql) -- [Guide to Spring Type Conversions](http://www.baeldung.com/spring-type-conversions) -- [An Introduction to Kong](http://www.baeldung.com/kong) -- [Spring Boot: Customize Whitelabel Error Page](http://www.baeldung.com/spring-boot-custom-error-page) -- [Spring Boot: Configuring a Main Class](http://www.baeldung.com/spring-boot-main-class) -- [A Quick Intro to the SpringBootServletInitializer](http://www.baeldung.com/spring-boot-servlet-initializer) -- [How to Define a Spring Boot Filter?](http://www.baeldung.com/spring-boot-add-filter) -- [Spring Boot Exit Codes](http://www.baeldung.com/spring-boot-exit-codes) -- [Guide to the Favicon in Spring Boot](http://www.baeldung.com/spring-boot-favicon) -- [Spring Shutdown Callbacks](http://www.baeldung.com/spring-shutdown-callbacks) -- [Container Configuration in Spring Boot 2](http://www.baeldung.com/embeddedservletcontainercustomizer-configurableembeddedservletcontainer-spring-boot) +- [A Guide to Spring in Eclipse STS](https://www.baeldung.com/eclipse-sts-spring) +- [The @ServletComponentScan Annotation in Spring Boot](https://www.baeldung.com/spring-servletcomponentscan) +- [How to Register a Servlet in Java](https://www.baeldung.com/register-servlet) +- [Guide to Spring WebUtils and ServletRequestUtils](https://www.baeldung.com/spring-webutils-servletrequestutils) +- [Using Custom Banners in Spring Boot](https://www.baeldung.com/spring-boot-custom-banners) +- [Guide to Internationalization in Spring Boot](https://www.baeldung.com/spring-boot-internationalization) +- [Create a Custom FailureAnalyzer with Spring Boot](https://www.baeldung.com/spring-boot-failure-analyzer) +- [Dynamic DTO Validation Config Retrieved from the Database](https://www.baeldung.com/spring-dynamic-dto-validation) +- [Custom Information in Spring Boot Info Endpoint](https://www.baeldung.com/spring-boot-info-actuator-custom) +- [Using @JsonComponent in Spring Boot](https://www.baeldung.com/spring-boot-jsoncomponent) +- [Testing in Spring Boot](https://www.baeldung.com/spring-boot-testing) +- [How to Get All Spring-Managed Beans?](https://www.baeldung.com/spring-show-all-beans) +- [Spring Boot and Togglz Aspect](https://www.baeldung.com/spring-togglz) +- [Getting Started with GraphQL and Spring Boot](https://www.baeldung.com/spring-graphql) +- [Guide to Spring Type Conversions](https://www.baeldung.com/spring-type-conversions) +- [An Introduction to Kong](https://www.baeldung.com/kong) +- [Spring Boot: Customize Whitelabel Error Page](https://www.baeldung.com/spring-boot-custom-error-page) +- [Spring Boot: Configuring a Main Class](https://www.baeldung.com/spring-boot-main-class) +- [A Quick Intro to the SpringBootServletInitializer](https://www.baeldung.com/spring-boot-servlet-initializer) +- [How to Define a Spring Boot Filter?](https://www.baeldung.com/spring-boot-add-filter) +- [Spring Boot Exit Codes](https://www.baeldung.com/spring-boot-exit-codes) +- [Guide to the Favicon in Spring Boot](https://www.baeldung.com/spring-boot-favicon) +- [Spring Shutdown Callbacks](https://www.baeldung.com/spring-shutdown-callbacks) +- [Container Configuration in Spring Boot 2](https://www.baeldung.com/embeddedservletcontainercustomizer-configurableembeddedservletcontainer-spring-boot) - [Introduction to Chaos Monkey](https://www.baeldung.com/spring-boot-chaos-monkey) - [Display Auto-Configuration Report in Spring Boot](https://www.baeldung.com/spring-boot-auto-configuration-report) - [Injecting Git Information Into Spring](https://www.baeldung.com/spring-git-information) diff --git a/spring-boot/src/main/java/org/baeldung/model/User.java b/spring-boot/src/main/java/org/baeldung/model/User.java index eb886338a0..049b118b12 100644 --- a/spring-boot/src/main/java/org/baeldung/model/User.java +++ b/spring-boot/src/main/java/org/baeldung/model/User.java @@ -1,4 +1,4 @@ -package org.baeldung.model; +package org.baeldung.caching.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; diff --git a/spring-boot/src/main/java/org/baeldung/repository/UserRepository.java b/spring-boot/src/main/java/org/baeldung/repository/UserRepository.java index 7335af2616..0113c4c5d4 100644 --- a/spring-boot/src/main/java/org/baeldung/repository/UserRepository.java +++ b/spring-boot/src/main/java/org/baeldung/repository/UserRepository.java @@ -1,6 +1,6 @@ package org.baeldung.repository; -import org.baeldung.model.User; +import org.baeldung.caching.model.User; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; diff --git a/spring-boot/src/test/java/com/baeldung/jsondateformat/ContactAppIntegrationTest.java b/spring-boot/src/test/java/com/baeldung/jsondateformat/ContactAppUnitTest.java similarity index 87% rename from spring-boot/src/test/java/com/baeldung/jsondateformat/ContactAppIntegrationTest.java rename to spring-boot/src/test/java/com/baeldung/jsondateformat/ContactAppUnitTest.java index 86af985d8a..7be85b5e4f 100644 --- a/spring-boot/src/test/java/com/baeldung/jsondateformat/ContactAppIntegrationTest.java +++ b/spring-boot/src/test/java/com/baeldung/jsondateformat/ContactAppUnitTest.java @@ -2,11 +2,14 @@ package com.baeldung.jsondateformat; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; + +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.web.server.LocalServerPort; import org.springframework.http.ResponseEntity; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; @@ -22,23 +25,33 @@ import java.util.Map; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.DEFINED_PORT; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; @RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = DEFINED_PORT, classes = ContactApp.class) +@SpringBootTest(webEnvironment = RANDOM_PORT, classes = ContactApp.class) @TestPropertySource(properties = { "spring.jackson.date-format=yyyy-MM-dd HH:mm:ss" }) -public class ContactAppIntegrationTest { +public class ContactAppUnitTest { private final ObjectMapper mapper = new ObjectMapper(); @Autowired TestRestTemplate restTemplate; + + @LocalServerPort + int port; + + String url; + @Before + public void before() { + url=String.format("http://localhost:%s", port); + } + @Test public void givenJsonFormatAnnotationAndJava8DateType_whenGet_thenReturnExpectedDateFormat() throws IOException, ParseException { - ResponseEntity response = restTemplate.getForEntity("http://localhost:8080/contacts", String.class); + ResponseEntity response = restTemplate.getForEntity(url + "/contacts", String.class); assertEquals(200, response.getStatusCodeValue()); @@ -53,7 +66,7 @@ public class ContactAppIntegrationTest { @Test public void givenJsonFormatAnnotationAndLegacyDateType_whenGet_thenReturnExpectedDateFormat() throws IOException { - ResponseEntity response = restTemplate.getForEntity("http://localhost:8080/contacts/javaUtilDate", String.class); + ResponseEntity response = restTemplate.getForEntity(url + "/contacts/javaUtilDate", String.class); assertEquals(200, response.getStatusCodeValue()); @@ -68,7 +81,7 @@ public class ContactAppIntegrationTest { @Test public void givenDefaultDateFormatInAppPropertiesAndLegacyDateType_whenGet_thenReturnExpectedDateFormat() throws IOException { - ResponseEntity response = restTemplate.getForEntity("http://localhost:8080/contacts/plainWithJavaUtilDate", String.class); + ResponseEntity response = restTemplate.getForEntity(url + "/contacts/plainWithJavaUtilDate", String.class); assertEquals(200, response.getStatusCodeValue()); @@ -83,7 +96,7 @@ public class ContactAppIntegrationTest { @Test(expected = DateTimeParseException.class) public void givenDefaultDateFormatInAppPropertiesAndJava8DateType_whenGet_thenNotApplyFormat() throws IOException { - ResponseEntity response = restTemplate.getForEntity("http://localhost:8080/contacts/plain", String.class); + ResponseEntity response = restTemplate.getForEntity(url + "/contacts/plain", String.class); assertEquals(200, response.getStatusCodeValue()); diff --git a/spring-boot/src/test/java/com/baeldung/jsondateformat/ContactAppWithObjectMapperCustomizerIntegrationTest.java b/spring-boot/src/test/java/com/baeldung/jsondateformat/ContactAppWithObjectMapperCustomizerUnitTest.java similarity index 82% rename from spring-boot/src/test/java/com/baeldung/jsondateformat/ContactAppWithObjectMapperCustomizerIntegrationTest.java rename to spring-boot/src/test/java/com/baeldung/jsondateformat/ContactAppWithObjectMapperCustomizerUnitTest.java index 554283d758..114f9bfc1a 100644 --- a/spring-boot/src/test/java/com/baeldung/jsondateformat/ContactAppWithObjectMapperCustomizerIntegrationTest.java +++ b/spring-boot/src/test/java/com/baeldung/jsondateformat/ContactAppWithObjectMapperCustomizerUnitTest.java @@ -2,11 +2,14 @@ package com.baeldung.jsondateformat; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; + +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.web.server.LocalServerPort; import org.springframework.http.ResponseEntity; import org.springframework.test.context.junit4.SpringRunner; @@ -19,20 +22,30 @@ import java.util.Map; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.DEFINED_PORT; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; @RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = DEFINED_PORT, classes = ContactApp.class) -public class ContactAppWithObjectMapperCustomizerIntegrationTest { +@SpringBootTest(webEnvironment = RANDOM_PORT, classes = ContactApp.class) +public class ContactAppWithObjectMapperCustomizerUnitTest { private final ObjectMapper mapper = new ObjectMapper(); @Autowired TestRestTemplate restTemplate; + @LocalServerPort + int port; + + String url; + + @Before + public void before() { + url=String.format("http://localhost:%s", port); + } + @Test public void givenDefaultDateFormatInAppPropertiesAndLegacyDateType_whenGet_thenReturnExpectedDateFormat() throws IOException { - ResponseEntity response = restTemplate.getForEntity("http://localhost:8080/contacts/plainWithJavaUtilDate", String.class); + ResponseEntity response = restTemplate.getForEntity(url + "/contacts/plainWithJavaUtilDate", String.class); assertEquals(200, response.getStatusCodeValue()); @@ -47,7 +60,7 @@ public class ContactAppWithObjectMapperCustomizerIntegrationTest { @Test public void givenDefaultDateFormatInAppPropertiesAndJava8DateType_whenGet_thenReturnExpectedDateFormat() throws IOException { - ResponseEntity response = restTemplate.getForEntity("http://localhost:8080/contacts/plain", String.class); + ResponseEntity response = restTemplate.getForEntity(url + "/contacts/plain", String.class); assertEquals(200, response.getStatusCodeValue()); diff --git a/spring-boot/src/test/java/org/baeldung/repository/UserRepositoryIntegrationTest.java b/spring-boot/src/test/java/org/baeldung/repository/UserRepositoryIntegrationTest.java index 04bb1170f8..54ce3b4bf3 100644 --- a/spring-boot/src/test/java/org/baeldung/repository/UserRepositoryIntegrationTest.java +++ b/spring-boot/src/test/java/org/baeldung/repository/UserRepositoryIntegrationTest.java @@ -1,7 +1,7 @@ package org.baeldung.repository; import org.baeldung.boot.config.H2JpaConfig; -import org.baeldung.model.User; +import org.baeldung.caching.model.User; import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/spring-caching/README.md b/spring-caching/README.md new file mode 100644 index 0000000000..14dfe94041 --- /dev/null +++ b/spring-caching/README.md @@ -0,0 +1,4 @@ +### Relevant articles: +- [Introduction To Ehcache](http://www.baeldung.com/ehcache) +- [A Guide To Caching in Spring](http://www.baeldung.com/spring-cache-tutorial) +- [Spring Cache – Creating a Custom KeyGenerator](http://www.baeldung.com/spring-cache-custom-keygenerator) diff --git a/spring-caching/pom.xml b/spring-caching/pom.xml new file mode 100644 index 0000000000..3329cd5f77 --- /dev/null +++ b/spring-caching/pom.xml @@ -0,0 +1,43 @@ + + 4.0.0 + spring-caching + 0.1-SNAPSHOT + spring-caching + war + + + parent-boot-2 + com.baeldung + 0.0.1-SNAPSHOT + ../parent-boot-2 + + + + + org.springframework + spring-context + + + org.springframework + spring-web + + + org.springframework + spring-webmvc + + + org.ehcache + ehcache + + + org.springframework + spring-test + test + + + + + 3.5.2 + + \ No newline at end of file diff --git a/spring-all/src/main/java/org/baeldung/caching/config/ApplicationCacheConfig.java b/spring-caching/src/main/java/org/baeldung/caching/config/ApplicationCacheConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/caching/config/ApplicationCacheConfig.java rename to spring-caching/src/main/java/org/baeldung/caching/config/ApplicationCacheConfig.java diff --git a/spring-all/src/main/java/org/baeldung/caching/config/CachingConfig.java b/spring-caching/src/main/java/org/baeldung/caching/config/CachingConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/caching/config/CachingConfig.java rename to spring-caching/src/main/java/org/baeldung/caching/config/CachingConfig.java diff --git a/spring-all/src/main/java/org/baeldung/caching/config/CustomKeyGenerator.java b/spring-caching/src/main/java/org/baeldung/caching/config/CustomKeyGenerator.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/caching/config/CustomKeyGenerator.java rename to spring-caching/src/main/java/org/baeldung/caching/config/CustomKeyGenerator.java diff --git a/spring-all/src/main/java/org/baeldung/caching/eviction/controllers/CachingController.java b/spring-caching/src/main/java/org/baeldung/caching/eviction/controllers/CachingController.java similarity index 96% rename from spring-all/src/main/java/org/baeldung/caching/eviction/controllers/CachingController.java rename to spring-caching/src/main/java/org/baeldung/caching/eviction/controllers/CachingController.java index 675cb7a516..aaaf8a5918 100644 --- a/spring-all/src/main/java/org/baeldung/caching/eviction/controllers/CachingController.java +++ b/spring-caching/src/main/java/org/baeldung/caching/eviction/controllers/CachingController.java @@ -1,18 +1,18 @@ -package org.baeldung.caching.eviction.controllers; - -import org.baeldung.caching.eviction.service.CachingService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -public class CachingController { - - @Autowired - CachingService cachingService; - - @GetMapping("clearAllCaches") - public void clearAllCaches() { - cachingService.evictAllCaches(); - } -} +package org.baeldung.caching.eviction.controllers; + +import org.baeldung.caching.eviction.service.CachingService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class CachingController { + + @Autowired + CachingService cachingService; + + @GetMapping("clearAllCaches") + public void clearAllCaches() { + cachingService.evictAllCaches(); + } +} diff --git a/spring-all/src/main/java/org/baeldung/caching/eviction/service/CachingService.java b/spring-caching/src/main/java/org/baeldung/caching/eviction/service/CachingService.java similarity index 96% rename from spring-all/src/main/java/org/baeldung/caching/eviction/service/CachingService.java rename to spring-caching/src/main/java/org/baeldung/caching/eviction/service/CachingService.java index 7e37215954..a0dd30c329 100644 --- a/spring-all/src/main/java/org/baeldung/caching/eviction/service/CachingService.java +++ b/spring-caching/src/main/java/org/baeldung/caching/eviction/service/CachingService.java @@ -1,53 +1,53 @@ -package org.baeldung.caching.eviction.service; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cache.CacheManager; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -@Component -public class CachingService { - - @Autowired - CacheManager cacheManager; - - public void putToCache(String cacheName, String key, String value) { - cacheManager.getCache(cacheName).put(key, value); - } - - public String getFromCache(String cacheName, String key) { - String value = null; - if (cacheManager.getCache(cacheName).get(key) != null) { - value = cacheManager.getCache(cacheName).get(key).get().toString(); - } - return value; - } - - @CacheEvict(value = "first", key = "#cacheKey") - public void evictSingleCacheValue(String cacheKey) { - } - - @CacheEvict(value = "first", allEntries = true) - public void evictAllCacheValues() { - } - - public void evictSingleCacheValue(String cacheName, String cacheKey) { - cacheManager.getCache(cacheName).evict(cacheKey); - } - - public void evictAllCacheValues(String cacheName) { - cacheManager.getCache(cacheName).clear(); - } - - public void evictAllCaches() { - cacheManager.getCacheNames() - .parallelStream() - .forEach(cacheName -> cacheManager.getCache(cacheName).clear()); - } - - @Scheduled(fixedRate = 6000) - public void evictAllcachesAtIntervals() { - evictAllCaches(); - } -} +package org.baeldung.caching.eviction.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.CacheManager; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +@Component +public class CachingService { + + @Autowired + CacheManager cacheManager; + + public void putToCache(String cacheName, String key, String value) { + cacheManager.getCache(cacheName).put(key, value); + } + + public String getFromCache(String cacheName, String key) { + String value = null; + if (cacheManager.getCache(cacheName).get(key) != null) { + value = cacheManager.getCache(cacheName).get(key).get().toString(); + } + return value; + } + + @CacheEvict(value = "first", key = "#cacheKey") + public void evictSingleCacheValue(String cacheKey) { + } + + @CacheEvict(value = "first", allEntries = true) + public void evictAllCacheValues() { + } + + public void evictSingleCacheValue(String cacheName, String cacheKey) { + cacheManager.getCache(cacheName).evict(cacheKey); + } + + public void evictAllCacheValues(String cacheName) { + cacheManager.getCache(cacheName).clear(); + } + + public void evictAllCaches() { + cacheManager.getCacheNames() + .parallelStream() + .forEach(cacheName -> cacheManager.getCache(cacheName).clear()); + } + + @Scheduled(fixedRate = 6000) + public void evictAllcachesAtIntervals() { + evictAllCaches(); + } +} diff --git a/spring-all/src/main/java/org/baeldung/caching/example/AbstractService.java b/spring-caching/src/main/java/org/baeldung/caching/example/AbstractService.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/caching/example/AbstractService.java rename to spring-caching/src/main/java/org/baeldung/caching/example/AbstractService.java diff --git a/spring-all/src/main/java/org/baeldung/caching/example/BookService.java b/spring-caching/src/main/java/org/baeldung/caching/example/BookService.java similarity index 93% rename from spring-all/src/main/java/org/baeldung/caching/example/BookService.java rename to spring-caching/src/main/java/org/baeldung/caching/example/BookService.java index 26118d61de..9f3aaf89cf 100644 --- a/spring-all/src/main/java/org/baeldung/caching/example/BookService.java +++ b/spring-caching/src/main/java/org/baeldung/caching/example/BookService.java @@ -1,6 +1,6 @@ package org.baeldung.caching.example; -import org.baeldung.model.Book; +import org.baeldung.caching.model.Book; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Component; diff --git a/spring-all/src/main/java/org/baeldung/caching/example/Customer.java b/spring-caching/src/main/java/org/baeldung/caching/example/Customer.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/caching/example/Customer.java rename to spring-caching/src/main/java/org/baeldung/caching/example/Customer.java diff --git a/spring-all/src/main/java/org/baeldung/caching/example/CustomerDataService.java b/spring-caching/src/main/java/org/baeldung/caching/example/CustomerDataService.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/caching/example/CustomerDataService.java rename to spring-caching/src/main/java/org/baeldung/caching/example/CustomerDataService.java diff --git a/spring-all/src/main/java/org/baeldung/caching/example/CustomerServiceWithParent.java b/spring-caching/src/main/java/org/baeldung/caching/example/CustomerServiceWithParent.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/caching/example/CustomerServiceWithParent.java rename to spring-caching/src/main/java/org/baeldung/caching/example/CustomerServiceWithParent.java diff --git a/spring-all/src/main/java/org/baeldung/model/Book.java b/spring-caching/src/main/java/org/baeldung/caching/model/Book.java similarity index 94% rename from spring-all/src/main/java/org/baeldung/model/Book.java rename to spring-caching/src/main/java/org/baeldung/caching/model/Book.java index 9305ce9653..c110c79db0 100644 --- a/spring-all/src/main/java/org/baeldung/model/Book.java +++ b/spring-caching/src/main/java/org/baeldung/caching/model/Book.java @@ -1,4 +1,4 @@ -package org.baeldung.model; +package org.baeldung.caching.model; public class Book { diff --git a/spring-all/src/main/java/org/baeldung/ehcache/calculator/SquaredCalculator.java b/spring-caching/src/main/java/org/baeldung/ehcache/calculator/SquaredCalculator.java old mode 100755 new mode 100644 similarity index 100% rename from spring-all/src/main/java/org/baeldung/ehcache/calculator/SquaredCalculator.java rename to spring-caching/src/main/java/org/baeldung/ehcache/calculator/SquaredCalculator.java diff --git a/spring-all/src/main/java/org/baeldung/ehcache/config/CacheHelper.java b/spring-caching/src/main/java/org/baeldung/ehcache/config/CacheHelper.java old mode 100755 new mode 100644 similarity index 100% rename from spring-all/src/main/java/org/baeldung/ehcache/config/CacheHelper.java rename to spring-caching/src/main/java/org/baeldung/ehcache/config/CacheHelper.java diff --git a/spring-all/src/main/resources/config.xml b/spring-caching/src/main/resources/config.xml similarity index 100% rename from spring-all/src/main/resources/config.xml rename to spring-caching/src/main/resources/config.xml diff --git a/spring-caching/src/test/java/org/baeldung/caching/test/CacheEvictAnnotationIntegrationTest.java b/spring-caching/src/test/java/org/baeldung/caching/test/CacheEvictAnnotationIntegrationTest.java new file mode 100644 index 0000000000..28b0d26bed --- /dev/null +++ b/spring-caching/src/test/java/org/baeldung/caching/test/CacheEvictAnnotationIntegrationTest.java @@ -0,0 +1,79 @@ +package org.baeldung.caching.test; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.nullValue; +import static org.junit.Assert.assertThat; + +import java.util.ArrayList; +import java.util.List; + +import org.baeldung.caching.eviction.service.CachingService; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.Cache; +import org.springframework.cache.CacheManager; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean; +import org.springframework.cache.support.SimpleCacheManager; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration +public class CacheEvictAnnotationIntegrationTest { + + @Configuration + @EnableCaching + static class ContextConfiguration { + + @Bean + public CachingService cachingService() { + return new CachingService(); + } + + @Bean + public CacheManager cacheManager() { + SimpleCacheManager cacheManager = new SimpleCacheManager(); + List caches = new ArrayList<>(); + caches.add(cacheBean().getObject()); + cacheManager.setCaches(caches); + return cacheManager; + } + + @Bean + public ConcurrentMapCacheFactoryBean cacheBean() { + ConcurrentMapCacheFactoryBean cacheFactoryBean = new ConcurrentMapCacheFactoryBean(); + cacheFactoryBean.setName("first"); + return cacheFactoryBean; + } + } + + @Autowired + CachingService cachingService; + + @Before + public void before() { + cachingService.putToCache("first", "key1", "Baeldung"); + cachingService.putToCache("first", "key2", "Article"); + } + + @Test + public void givenFirstCache_whenSingleCacheValueEvictRequested_thenEmptyCacheValue() { + cachingService.evictSingleCacheValue("key1"); + String key1 = cachingService.getFromCache("first", "key1"); + assertThat(key1, is(nullValue())); + } + + @Test + public void givenFirstCache_whenAllCacheValueEvictRequested_thenEmptyCache() { + cachingService.evictAllCacheValues(); + String key1 = cachingService.getFromCache("first", "key1"); + String key2 = cachingService.getFromCache("first", "key2"); + assertThat(key1, is(nullValue())); + assertThat(key2, is(nullValue())); + } +} diff --git a/spring-all/src/test/java/org/baeldung/caching/test/CacheManagerEvictIntegrationTest.java b/spring-caching/src/test/java/org/baeldung/caching/test/CacheManagerEvictIntegrationTest.java similarity index 67% rename from spring-all/src/test/java/org/baeldung/caching/test/CacheManagerEvictIntegrationTest.java rename to spring-caching/src/test/java/org/baeldung/caching/test/CacheManagerEvictIntegrationTest.java index 9c6aaea892..ffcc88febc 100644 --- a/spring-all/src/test/java/org/baeldung/caching/test/CacheManagerEvictIntegrationTest.java +++ b/spring-caching/src/test/java/org/baeldung/caching/test/CacheManagerEvictIntegrationTest.java @@ -1,96 +1,96 @@ -package org.baeldung.caching.test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.junit.Assert.assertThat; - -import java.util.ArrayList; -import java.util.List; - -import org.baeldung.caching.eviction.service.CachingService; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cache.Cache; -import org.springframework.cache.CacheManager; -import org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean; -import org.springframework.cache.support.SimpleCacheManager; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration -public class CacheManagerEvictIntegrationTest { - - @Configuration - static class ContextConfiguration { - - @Bean - public CachingService cachingService() { - return new CachingService(); - } - - @Bean - public CacheManager cacheManager(){ - SimpleCacheManager cacheManager = new SimpleCacheManager(); - List caches = new ArrayList<>(); - caches.add(cacheBeanFirst().getObject()); - caches.add(cacheBeanSecond().getObject()); - cacheManager.setCaches(caches ); - return cacheManager; - } - - @Bean - public ConcurrentMapCacheFactoryBean cacheBeanFirst(){ - ConcurrentMapCacheFactoryBean cacheFactoryBean = new ConcurrentMapCacheFactoryBean(); - cacheFactoryBean.setName("first"); - return cacheFactoryBean; - } - - @Bean - public ConcurrentMapCacheFactoryBean cacheBeanSecond(){ - ConcurrentMapCacheFactoryBean cacheFactoryBean = new ConcurrentMapCacheFactoryBean(); - cacheFactoryBean.setName("second"); - return cacheFactoryBean; - } - } - - @Autowired - CachingService cachingService; - - @Before - public void before() { - cachingService.putToCache("first", "key1", "Baeldung"); - cachingService.putToCache("first", "key2", "Article"); - cachingService.putToCache("second", "key", "Article"); - } - - @Test - public void givenFirstCache_whenSingleCacheValueEvictRequested_thenEmptyCacheValue() { - cachingService.evictSingleCacheValue("first", "key1"); - String key1 = cachingService.getFromCache("first", "key1"); - assertThat(key1, is(nullValue())); - } - - @Test - public void givenFirstCache_whenAllCacheValueEvictRequested_thenEmptyCache() { - cachingService.evictAllCacheValues("first"); - String key1 = cachingService.getFromCache("first", "key1"); - String key2 = cachingService.getFromCache("first", "key2"); - assertThat(key1, is(nullValue())); - assertThat(key2, is(nullValue())); - } - - @Test - public void givenAllCaches_whenAllCacheEvictRequested_thenEmptyAllCaches() { - cachingService.evictAllCaches(); - String key1 = cachingService.getFromCache("first", "key1"); - assertThat(key1, is(nullValue())); - - String key = cachingService.getFromCache("second", "key"); - assertThat(key, is(nullValue())); - } -} +package org.baeldung.caching.test; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.nullValue; +import static org.junit.Assert.assertThat; + +import java.util.ArrayList; +import java.util.List; + +import org.baeldung.caching.eviction.service.CachingService; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.Cache; +import org.springframework.cache.CacheManager; +import org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean; +import org.springframework.cache.support.SimpleCacheManager; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration +public class CacheManagerEvictIntegrationTest { + + @Configuration + static class ContextConfiguration { + + @Bean + public CachingService cachingService() { + return new CachingService(); + } + + @Bean + public CacheManager cacheManager() { + SimpleCacheManager cacheManager = new SimpleCacheManager(); + List caches = new ArrayList<>(); + caches.add(cacheBeanFirst().getObject()); + caches.add(cacheBeanSecond().getObject()); + cacheManager.setCaches(caches); + return cacheManager; + } + + @Bean + public ConcurrentMapCacheFactoryBean cacheBeanFirst() { + ConcurrentMapCacheFactoryBean cacheFactoryBean = new ConcurrentMapCacheFactoryBean(); + cacheFactoryBean.setName("first"); + return cacheFactoryBean; + } + + @Bean + public ConcurrentMapCacheFactoryBean cacheBeanSecond() { + ConcurrentMapCacheFactoryBean cacheFactoryBean = new ConcurrentMapCacheFactoryBean(); + cacheFactoryBean.setName("second"); + return cacheFactoryBean; + } + } + + @Autowired + CachingService cachingService; + + @Before + public void before() { + cachingService.putToCache("first", "key1", "Baeldung"); + cachingService.putToCache("first", "key2", "Article"); + cachingService.putToCache("second", "key", "Article"); + } + + @Test + public void givenFirstCache_whenSingleCacheValueEvictRequested_thenEmptyCacheValue() { + cachingService.evictSingleCacheValue("first", "key1"); + String key1 = cachingService.getFromCache("first", "key1"); + assertThat(key1, is(nullValue())); + } + + @Test + public void givenFirstCache_whenAllCacheValueEvictRequested_thenEmptyCache() { + cachingService.evictAllCacheValues("first"); + String key1 = cachingService.getFromCache("first", "key1"); + String key2 = cachingService.getFromCache("first", "key2"); + assertThat(key1, is(nullValue())); + assertThat(key2, is(nullValue())); + } + + @Test + public void givenAllCaches_whenAllCacheEvictRequested_thenEmptyAllCaches() { + cachingService.evictAllCaches(); + String key1 = cachingService.getFromCache("first", "key1"); + assertThat(key1, is(nullValue())); + + String key = cachingService.getFromCache("second", "key"); + assertThat(key, is(nullValue())); + } +} diff --git a/spring-all/src/test/java/org/baeldung/caching/test/SpringCachingIntegrationTest.java b/spring-caching/src/test/java/org/baeldung/caching/test/SpringCachingIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/caching/test/SpringCachingIntegrationTest.java rename to spring-caching/src/test/java/org/baeldung/caching/test/SpringCachingIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/ehcache/SquareCalculatorUnitTest.java b/spring-caching/src/test/java/org/baeldung/ehcache/SquareCalculatorUnitTest.java similarity index 97% rename from spring-all/src/test/java/org/baeldung/ehcache/SquareCalculatorUnitTest.java rename to spring-caching/src/test/java/org/baeldung/ehcache/SquareCalculatorUnitTest.java index 96265c11f5..0e6ac6fd8e 100644 --- a/spring-all/src/test/java/org/baeldung/ehcache/SquareCalculatorUnitTest.java +++ b/spring-caching/src/test/java/org/baeldung/ehcache/SquareCalculatorUnitTest.java @@ -1,40 +1,40 @@ -package org.baeldung.ehcache; - -import org.baeldung.ehcache.calculator.SquaredCalculator; -import org.baeldung.ehcache.config.CacheHelper; -import org.junit.Before; -import org.junit.Test; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -public class SquareCalculatorUnitTest { - private SquaredCalculator squaredCalculator = new SquaredCalculator(); - private CacheHelper cacheHelper = new CacheHelper(); - - @Before - public void setup() { - squaredCalculator.setCache(cacheHelper); - } - - @Test - public void whenCalculatingSquareValueOnce_thenCacheDontHaveValues() { - for (int i = 10; i < 15; i++) { - assertFalse(cacheHelper.getSquareNumberCache().containsKey(i)); - System.out.println("Square value of " + i + " is: " + squaredCalculator.getSquareValueOfNumber(i) + "\n"); - } - } - - @Test - public void whenCalculatingSquareValueAgain_thenCacheHasAllValues() { - for (int i = 10; i < 15; i++) { - assertFalse(cacheHelper.getSquareNumberCache().containsKey(i)); - System.out.println("Square value of " + i + " is: " + squaredCalculator.getSquareValueOfNumber(i) + "\n"); - } - - for (int i = 10; i < 15; i++) { - assertTrue(cacheHelper.getSquareNumberCache().containsKey(i)); - System.out.println("Square value of " + i + " is: " + squaredCalculator.getSquareValueOfNumber(i) + "\n"); - } - } -} +package org.baeldung.ehcache; + +import org.baeldung.ehcache.calculator.SquaredCalculator; +import org.baeldung.ehcache.config.CacheHelper; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class SquareCalculatorUnitTest { + private SquaredCalculator squaredCalculator = new SquaredCalculator(); + private CacheHelper cacheHelper = new CacheHelper(); + + @Before + public void setup() { + squaredCalculator.setCache(cacheHelper); + } + + @Test + public void whenCalculatingSquareValueOnce_thenCacheDontHaveValues() { + for (int i = 10; i < 15; i++) { + assertFalse(cacheHelper.getSquareNumberCache().containsKey(i)); + System.out.println("Square value of " + i + " is: " + squaredCalculator.getSquareValueOfNumber(i) + "\n"); + } + } + + @Test + public void whenCalculatingSquareValueAgain_thenCacheHasAllValues() { + for (int i = 10; i < 15; i++) { + assertFalse(cacheHelper.getSquareNumberCache().containsKey(i)); + System.out.println("Square value of " + i + " is: " + squaredCalculator.getSquareValueOfNumber(i) + "\n"); + } + + for (int i = 10; i < 15; i++) { + assertTrue(cacheHelper.getSquareNumberCache().containsKey(i)); + System.out.println("Square value of " + i + " is: " + squaredCalculator.getSquareValueOfNumber(i) + "\n"); + } + } +} diff --git a/spring-cloud-bus/README.md b/spring-cloud-bus/README.md index c5410ca4e2..dbbb8d7156 100644 --- a/spring-cloud-bus/README.md +++ b/spring-cloud-bus/README.md @@ -1,3 +1,7 @@ +## Spring Cloud Bus + +This module contains articles about Spring Cloud Bus + ### Relevant articles -- [Spring Cloud Bus](http://www.baeldung.com/spring-cloud-bus) +- [Spring Cloud Bus](https://www.baeldung.com/spring-cloud-bus) diff --git a/spring-cloud-cli/README.md b/spring-cloud-cli/README.md index 7f29be3f07..46b47e0e08 100644 --- a/spring-cloud-cli/README.md +++ b/spring-cloud-cli/README.md @@ -1,6 +1,6 @@ -========= - ## Spring Cloud CLI +This module contains articles about Spring Cloud CLI + ### Relevant Articles: -- [Introduction to Spring Cloud CLI](http://www.baeldung.com/spring-cloud-cli) +- [Introduction to Spring Cloud CLI](https://www.baeldung.com/spring-cloud-cli) diff --git a/spring-cloud-data-flow/README.MD b/spring-cloud-data-flow/README.md similarity index 71% rename from spring-cloud-data-flow/README.MD rename to spring-cloud-data-flow/README.md index f2ab96de2c..c9b6891b54 100644 --- a/spring-cloud-data-flow/README.MD +++ b/spring-cloud-data-flow/README.md @@ -1,2 +1,3 @@ +## Spring Cloud Data Flow This is an aggregator module for Spring Cloud Data Flow modules. diff --git a/spring-cloud/README.md b/spring-cloud/README.md new file mode 100644 index 0000000000..2727aec08c --- /dev/null +++ b/spring-cloud/README.md @@ -0,0 +1,3 @@ +## Spring Cloud + +This module contains modules about Spring Cloud \ No newline at end of file diff --git a/spring-cloud/spring-cloud-archaius/README.md b/spring-cloud/spring-cloud-archaius/README.md index ae853c6ef0..3b5ed16373 100644 --- a/spring-cloud/spring-cloud-archaius/README.md +++ b/spring-cloud/spring-cloud-archaius/README.md @@ -1,10 +1,12 @@ +# Spring Cloud Archaius + +This module contains articles about Spring Cloud with Netflix Archaius + # Relevant Articles - [Introduction to Netflix Archaius with Spring Cloud](https://www.baeldung.com/netflix-archaius-spring-cloud-integration) - [Netflix Archaius with Various Database Configurations](https://www.baeldung.com/netflix-archaius-database-configurations) -# Spring Cloud Archaius - #### Basic Config This service has the basic, out-of-the-box Spring Cloud Netflix Archaius configuration. diff --git a/spring-cloud/spring-cloud-bootstrap/README.MD b/spring-cloud/spring-cloud-bootstrap/README.md similarity index 87% rename from spring-cloud/spring-cloud-bootstrap/README.MD rename to spring-cloud/spring-cloud-bootstrap/README.md index 7a3a94c8e3..01998ccf51 100644 --- a/spring-cloud/spring-cloud-bootstrap/README.MD +++ b/spring-cloud/spring-cloud-bootstrap/README.md @@ -1,3 +1,7 @@ +## Spring Cloud Bootstrap + +This module contains articles about bootstrapping Spring Cloud applications + ### Relevant Articles: - [Spring Cloud – Bootstrapping](http://www.baeldung.com/spring-cloud-bootstrapping) - [Spring Cloud – Securing Services](http://www.baeldung.com/spring-cloud-securing-services) @@ -5,6 +9,8 @@ - [Spring Cloud Series – The Gateway Pattern](http://www.baeldung.com/spring-cloud-gateway-pattern) - [Spring Cloud – Adding Angular 4](http://www.baeldung.com/spring-cloud-angular) +### Running the Project + - To run the project: - copy the appliction-config folder to c:\Users\{username}\ on Windows or /home/{username}/ on *nix. Then open a git bash terminal in application-config and run: - git init diff --git a/spring-cloud/spring-cloud-contract/README.md b/spring-cloud/spring-cloud-contract/README.md index 70e056757b..72a3627e30 100644 --- a/spring-cloud/spring-cloud-contract/README.md +++ b/spring-cloud/spring-cloud-contract/README.md @@ -1,2 +1,6 @@ +## Spring Cloud Contract + +This module contains articles about Spring Cloud Contract + ### Relevant Articles: - [An Intro to Spring Cloud Contract](http://www.baeldung.com/spring-cloud-contract) diff --git a/spring-cloud/spring-cloud-gateway/README.MD b/spring-cloud/spring-cloud-gateway/README.md similarity index 57% rename from spring-cloud/spring-cloud-gateway/README.MD rename to spring-cloud/spring-cloud-gateway/README.md index d945ae949c..e87bc547e1 100644 --- a/spring-cloud/spring-cloud-gateway/README.MD +++ b/spring-cloud/spring-cloud-gateway/README.md @@ -1,2 +1,6 @@ +## Spring Cloud Gateway + +This module contains articles about Spring Cloud Gateway + ### Relevant Articles: - [Exploring the new Spring Cloud Gateway](http://www.baeldung.com/spring-cloud-gateway) diff --git a/spring-cloud/spring-cloud-kubernetes/README.md b/spring-cloud/spring-cloud-kubernetes/README.md index 32bcbc59b8..b64ad65ef9 100644 --- a/spring-cloud/spring-cloud-kubernetes/README.md +++ b/spring-cloud/spring-cloud-kubernetes/README.md @@ -1,3 +1,7 @@ +## Spring Cloud Kubernetes + +This moudle contains articles about Spring Cloud Kubernetes + ### Relevant Articles: - [Running Spring Boot Applications With Minikube](https://www.baeldung.com/spring-boot-minikube) diff --git a/spring-cloud/spring-cloud-rest/README.md b/spring-cloud/spring-cloud-rest/README.md index a650004708..25d62007b6 100644 --- a/spring-cloud/spring-cloud-rest/README.md +++ b/spring-cloud/spring-cloud-rest/README.md @@ -1,2 +1,5 @@ +## Spring Cloud REST + +This module contains articles about RESTful APIs with Spring Cloud Code for an ebook - "A REST API with Spring Boot and Spring Cloud" diff --git a/spring-cloud/spring-cloud-ribbon-client/README.md b/spring-cloud/spring-cloud-ribbon-client/README.md index 596b3226c8..d22b8ec8f8 100644 --- a/spring-cloud/spring-cloud-ribbon-client/README.md +++ b/spring-cloud/spring-cloud-ribbon-client/README.md @@ -1,2 +1,6 @@ +## Spring Cloud Ribbon Client + +This module contains articles about Spring Cloud with Netflix Ribbon + ### Relevant Articles: - [Introduction to Spring Cloud Rest Client with Netflix Ribbon](http://www.baeldung.com/spring-cloud-rest-client-with-netflix-ribbon) diff --git a/spring-cloud/spring-cloud-security/README.md b/spring-cloud/spring-cloud-security/README.md index 7099406614..0f3b39c98b 100644 --- a/spring-cloud/spring-cloud-security/README.md +++ b/spring-cloud/spring-cloud-security/README.md @@ -1,2 +1,6 @@ +## Spring Cloud Security + +This module contains articles about Spring Cloud Security + ### Relevant Articles: - [An Intro to Spring Cloud Security](http://www.baeldung.com/spring-cloud-security) diff --git a/spring-cloud/spring-cloud-stream/README.md b/spring-cloud/spring-cloud-stream/README.md index 5ecb852df5..fd1eeccfda 100644 --- a/spring-cloud/spring-cloud-stream/README.md +++ b/spring-cloud/spring-cloud-stream/README.md @@ -1,2 +1,6 @@ +## Spring Cloud Stream + +This module contains articles about Spring Cloud Stream + ## Relevant Articles - [Introduction to Spring Cloud Stream](http://www.baeldung.com/spring-cloud-stream) diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml new file mode 100644 index 0000000000..3817f2747a --- /dev/null +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml @@ -0,0 +1,48 @@ + + + 4.0.0 + spring-cloud-stream-kinesis + spring-cloud-stream-kinesis + + + org.springframework.boot + spring-boot-starter-parent + 2.1.8.RELEASE + + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.cloud + spring-cloud-stream-binder-kinesis + ${spring-cloud-stream-kinesis-binder.version} + + + + com.amazonaws + aws-java-sdk-kinesis + ${aws-sdk.version} + + + + org.springframework.cloud + spring-cloud-stream-test-support + ${spring-cloud-stream-test.version} + test + + + + + 1.11.632 + 1.2.1.RELEASE + 2.2.1.RELEASE + + + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/src/main/java/com/baeldung/KinesisApplication.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/src/main/java/com/baeldung/KinesisApplication.java new file mode 100644 index 0000000000..c863cd8fe2 --- /dev/null +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/src/main/java/com/baeldung/KinesisApplication.java @@ -0,0 +1,30 @@ +package com.baeldung; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.stream.annotation.EnableBinding; +import org.springframework.cloud.stream.annotation.StreamListener; +import org.springframework.cloud.stream.messaging.Processor; +import org.springframework.messaging.support.MessageBuilder; + +@SpringBootApplication +@EnableBinding(Processor.class) +public class KinesisApplication { + + public static void main(String[] args) { + SpringApplication.run(KinesisApplication.class, args); + } + + @Autowired + private Processor processor; + + @StreamListener(Processor.INPUT) + public void consume(String val) { + System.out.println(val); + } + + public void produce(String val) { + processor.output().send(MessageBuilder.withPayload(val).build()); + } +} \ No newline at end of file diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/src/main/resources/application.properties b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/src/main/resources/application.properties new file mode 100644 index 0000000000..1a966c64fb --- /dev/null +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/src/main/resources/application.properties @@ -0,0 +1,11 @@ +cloud.aws.credentials.access-key=aws-key +cloud.aws.credentials.secret-key=aws-secret +cloud.aws.region.static=eu-central-1 +cloud.aws.stack.auto=false + +spring.cloud.stream.bindings.output.destination=myStream +spring.cloud.stream.bindings.output.content-type=text/plain + +spring.cloud.stream.bindings.input.destination=myStream +spring.cloud.stream.bindings.input.group=myStream-group +spring.cloud.stream.bindings.input.content-type=text/plain \ No newline at end of file diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/src/test/java/com/baeldung/KinesisApplicationIntegrationTest.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/src/test/java/com/baeldung/KinesisApplicationIntegrationTest.java new file mode 100644 index 0000000000..4e1c281cfb --- /dev/null +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/src/test/java/com/baeldung/KinesisApplicationIntegrationTest.java @@ -0,0 +1,15 @@ +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; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = KinesisApplication.class) +public class KinesisApplicationIntegrationTest { + @Test + public void whenSpringContextIsBootstrapped_thenNoExceptions() { + + } +} \ No newline at end of file diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/src/test/resources/application.properties b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/src/test/resources/application.properties new file mode 100644 index 0000000000..48005616ec --- /dev/null +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/src/test/resources/application.properties @@ -0,0 +1,2 @@ +cloud.aws.region.static=eu-central-1 +cloud.aws.stack.auto=false \ No newline at end of file diff --git a/spring-cloud/spring-cloud-task/README.md b/spring-cloud/spring-cloud-task/README.md index cabc1ac854..8f6ee26099 100644 --- a/spring-cloud/spring-cloud-task/README.md +++ b/spring-cloud/spring-cloud-task/README.md @@ -1,2 +1,6 @@ +## Spring Cloud Task + +This module contains articles about Spring Cloud Task + ### Relevant Articles: - [An Intro to Spring Cloud Task](http://www.baeldung.com/spring-cloud-task) diff --git a/spring-cloud/spring-cloud-zookeeper/README.md b/spring-cloud/spring-cloud-zookeeper/README.md index a49a448833..2bef63ef9f 100644 --- a/spring-cloud/spring-cloud-zookeeper/README.md +++ b/spring-cloud/spring-cloud-zookeeper/README.md @@ -1,2 +1,6 @@ +## Spring Cloud Zookeeper + +This module contains articles about Spring Cloud Zookeeper + ### Relevant Articles: - [An Intro to Spring Cloud Zookeeper](http://www.baeldung.com/spring-cloud-zookeeper) diff --git a/guava-collections/.gitignore b/spring-core-2/.gitignore similarity index 100% rename from guava-collections/.gitignore rename to spring-core-2/.gitignore diff --git a/spring-core-2/README.md b/spring-core-2/README.md index 113bbe9c83..bcb1ce1fb4 100644 --- a/spring-core-2/README.md +++ b/spring-core-2/README.md @@ -1,6 +1,18 @@ +## Spring Core + +This module contains articles about core Spring functionality + ## 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) +- [Guide to Spring @Autowired](http://www.baeldung.com/spring-autowire) +- [Spring Profiles](http://www.baeldung.com/spring-profiles) +- [A Spring Custom Annotation for a Better DAO](http://www.baeldung.com/spring-annotation-bean-pre-processor) +- [Running Setup Data on Startup in Spring](http://www.baeldung.com/running-setup-logic-on-startup-in-spring) +- [Quick Guide to Spring Bean Scopes](http://www.baeldung.com/spring-bean-scopes) +- [Custom Scope in Spring](http://www.baeldung.com/spring-custom-scope) +- [@Order in Spring](http://www.baeldung.com/spring-order) +- [Spring @Primary Annotation](http://www.baeldung.com/spring-primary) +- [Spring Events](https://www.baeldung.com/spring-events) +- [Spring Null-Safety Annotations](https://www.baeldung.com/spring-null-safety-annotations) +- [Using @Autowired in Abstract Classes](https://www.baeldung.com/spring-autowired-abstract-class) +- More articles: [[<-- prev]](/spring-core) \ No newline at end of file diff --git a/spring-core-2/pom.xml b/spring-core-2/pom.xml index c9334e3d38..21548d6984 100644 --- a/spring-core-2/pom.xml +++ b/spring-core-2/pom.xml @@ -1,65 +1,217 @@ - - 4.0.0 spring-core-2 + 0.1-SNAPSHOT spring-core-2 + war + parent-boot-2 com.baeldung - parent-spring-5 0.0.1-SNAPSHOT - ../parent-spring-5 + ../parent-boot-2 + + com.fasterxml.jackson.core + jackson-databind + + org.springframework - spring-test - ${spring.version} + spring-web org.springframework - spring-beans - ${spring.version} + spring-webmvc + + + org.springframework + spring-orm org.springframework spring-context - ${spring.version} + + + org.springframework.retry + spring-retry org.springframework - spring-core - ${spring.version} + spring-websocket - org.junit.jupiter - junit-jupiter-engine - ${junit-jupiter.version} + org.springframework + spring-messaging + + + javax.annotation + javax.annotation-api + ${annotation-api.version} + + + + org.springframework + spring-aspects + + + + org.hibernate + hibernate-core + + + org.javassist + javassist + ${javassist.version} + + + mysql + mysql-connector-java + runtime + + + org.hsqldb + hsqldb + + + + org.hibernate + hibernate-validator + ${hibernate.version} + + + + javax.servlet + javax.servlet-api + provided + + + javax.servlet + jstl + runtime + + + + com.google.guava + guava + ${guava.version} + + + + org.springframework + spring-test test - org.junit.jupiter - junit-jupiter-api - ${junit-jupiter.version} + org.assertj + assertj-core test + + org.hamcrest + hamcrest-core + test + + + org.hamcrest + hamcrest-library + test + + + org.mockito + mockito-core + test + + + + + net.javacrumbs.shedlock + shedlock-spring + ${shedlock.version} + + + net.javacrumbs.shedlock + shedlock-provider-jdbc-template + ${shedlock.version} + + + + + org.springframework + spring-framework-bom + ${org.springframework.version} + pom + import + + + org.springframework + spring-core + ${org.springframework.version} + + + org.springframework.boot + spring-boot-starter-thymeleaf + ${org.springframework.version} + + + + + spring-core-2 + + + src/main/resources + true + + org.apache.maven.plugins - maven-surefire-plugin - ${maven.surefire.version} + maven-war-plugin + 3.2.2 + + false + + + + dev + + true + + + dev + + + + prod + + prod + + + - 2.22.1 + org.baeldung.sample.App + + 5.0.6.RELEASE + 1.3.2 + + 5.2.5.Final + + + 25.1-jre + 3.6 + 3.6.1 + 2.1.0 + 3.22.0-GA - \ No newline at end of file + diff --git a/spring-all/src/main/java/org/baeldung/autowire/sample/App.java b/spring-core-2/src/main/java/org/baeldung/autowire/sample/App.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/autowire/sample/App.java rename to spring-core-2/src/main/java/org/baeldung/autowire/sample/App.java diff --git a/spring-all/src/main/java/org/baeldung/autowire/sample/AppConfig.java b/spring-core-2/src/main/java/org/baeldung/autowire/sample/AppConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/autowire/sample/AppConfig.java rename to spring-core-2/src/main/java/org/baeldung/autowire/sample/AppConfig.java diff --git a/spring-all/src/main/java/org/baeldung/autowire/sample/BarFormatter.java b/spring-core-2/src/main/java/org/baeldung/autowire/sample/BarFormatter.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/autowire/sample/BarFormatter.java rename to spring-core-2/src/main/java/org/baeldung/autowire/sample/BarFormatter.java diff --git a/spring-all/src/main/java/org/baeldung/autowire/sample/FooDAO.java b/spring-core-2/src/main/java/org/baeldung/autowire/sample/FooDAO.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/autowire/sample/FooDAO.java rename to spring-core-2/src/main/java/org/baeldung/autowire/sample/FooDAO.java diff --git a/spring-all/src/main/java/org/baeldung/autowire/sample/FooFormatter.java b/spring-core-2/src/main/java/org/baeldung/autowire/sample/FooFormatter.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/autowire/sample/FooFormatter.java rename to spring-core-2/src/main/java/org/baeldung/autowire/sample/FooFormatter.java diff --git a/spring-all/src/main/java/org/baeldung/autowire/sample/FooService.java b/spring-core-2/src/main/java/org/baeldung/autowire/sample/FooService.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/autowire/sample/FooService.java rename to spring-core-2/src/main/java/org/baeldung/autowire/sample/FooService.java diff --git a/spring-all/src/main/java/org/baeldung/autowire/sample/Formatter.java b/spring-core-2/src/main/java/org/baeldung/autowire/sample/Formatter.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/autowire/sample/Formatter.java rename to spring-core-2/src/main/java/org/baeldung/autowire/sample/Formatter.java diff --git a/spring-all/src/main/java/org/baeldung/autowire/sample/FormatterType.java b/spring-core-2/src/main/java/org/baeldung/autowire/sample/FormatterType.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/autowire/sample/FormatterType.java rename to spring-core-2/src/main/java/org/baeldung/autowire/sample/FormatterType.java diff --git a/spring-all/src/main/java/org/baeldung/bean/config/ConstructorBasedShipConfig.java b/spring-core-2/src/main/java/org/baeldung/bean/config/ConstructorBasedShipConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/bean/config/ConstructorBasedShipConfig.java rename to spring-core-2/src/main/java/org/baeldung/bean/config/ConstructorBasedShipConfig.java diff --git a/spring-all/src/main/java/org/baeldung/bean/config/SetterBasedShipConfig.java b/spring-core-2/src/main/java/org/baeldung/bean/config/SetterBasedShipConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/bean/config/SetterBasedShipConfig.java rename to spring-core-2/src/main/java/org/baeldung/bean/config/SetterBasedShipConfig.java diff --git a/spring-all/src/main/java/org/baeldung/bean/injection/Helm.java b/spring-core-2/src/main/java/org/baeldung/bean/injection/Helm.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/bean/injection/Helm.java rename to spring-core-2/src/main/java/org/baeldung/bean/injection/Helm.java diff --git a/spring-all/src/main/java/org/baeldung/bean/injection/Ship.java b/spring-core-2/src/main/java/org/baeldung/bean/injection/Ship.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/bean/injection/Ship.java rename to spring-core-2/src/main/java/org/baeldung/bean/injection/Ship.java diff --git a/spring-all/src/main/java/org/baeldung/customannotation/CustomAnnotationConfiguration.java b/spring-core-2/src/main/java/org/baeldung/customannotation/CustomAnnotationConfiguration.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/customannotation/CustomAnnotationConfiguration.java rename to spring-core-2/src/main/java/org/baeldung/customannotation/CustomAnnotationConfiguration.java diff --git a/spring-all/src/main/java/org/baeldung/customannotation/DataAccess.java b/spring-core-2/src/main/java/org/baeldung/customannotation/DataAccess.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/customannotation/DataAccess.java rename to spring-core-2/src/main/java/org/baeldung/customannotation/DataAccess.java diff --git a/spring-all/src/main/java/org/baeldung/customannotation/DataAccessAnnotationProcessor.java b/spring-core-2/src/main/java/org/baeldung/customannotation/DataAccessAnnotationProcessor.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/customannotation/DataAccessAnnotationProcessor.java rename to spring-core-2/src/main/java/org/baeldung/customannotation/DataAccessAnnotationProcessor.java diff --git a/spring-all/src/main/java/org/baeldung/customannotation/DataAccessFieldCallback.java b/spring-core-2/src/main/java/org/baeldung/customannotation/DataAccessFieldCallback.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/customannotation/DataAccessFieldCallback.java rename to spring-core-2/src/main/java/org/baeldung/customannotation/DataAccessFieldCallback.java diff --git a/spring-all/src/main/java/org/baeldung/customannotation/GenericDAO.java b/spring-core-2/src/main/java/org/baeldung/customannotation/GenericDAO.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/customannotation/GenericDAO.java rename to spring-core-2/src/main/java/org/baeldung/customannotation/GenericDAO.java diff --git a/spring-all/src/main/java/org/baeldung/customscope/TenantBean.java b/spring-core-2/src/main/java/org/baeldung/customscope/TenantBean.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/customscope/TenantBean.java rename to spring-core-2/src/main/java/org/baeldung/customscope/TenantBean.java diff --git a/spring-all/src/main/java/org/baeldung/customscope/TenantBeanFactoryPostProcessor.java b/spring-core-2/src/main/java/org/baeldung/customscope/TenantBeanFactoryPostProcessor.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/customscope/TenantBeanFactoryPostProcessor.java rename to spring-core-2/src/main/java/org/baeldung/customscope/TenantBeanFactoryPostProcessor.java diff --git a/spring-all/src/main/java/org/baeldung/customscope/TenantBeansConfig.java b/spring-core-2/src/main/java/org/baeldung/customscope/TenantBeansConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/customscope/TenantBeansConfig.java rename to spring-core-2/src/main/java/org/baeldung/customscope/TenantBeansConfig.java diff --git a/spring-all/src/main/java/org/baeldung/customscope/TenantScope.java b/spring-core-2/src/main/java/org/baeldung/customscope/TenantScope.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/customscope/TenantScope.java rename to spring-core-2/src/main/java/org/baeldung/customscope/TenantScope.java diff --git a/spring-all/src/main/java/org/baeldung/customscope/TenantScopeConfig.java b/spring-core-2/src/main/java/org/baeldung/customscope/TenantScopeConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/customscope/TenantScopeConfig.java rename to spring-core-2/src/main/java/org/baeldung/customscope/TenantScopeConfig.java diff --git a/spring-all/src/main/java/org/baeldung/nullibility/Person.java b/spring-core-2/src/main/java/org/baeldung/nullibility/Person.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/nullibility/Person.java rename to spring-core-2/src/main/java/org/baeldung/nullibility/Person.java diff --git a/spring-all/src/main/java/org/baeldung/nullibility/package-info.java b/spring-core-2/src/main/java/org/baeldung/nullibility/package-info.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/nullibility/package-info.java rename to spring-core-2/src/main/java/org/baeldung/nullibility/package-info.java diff --git a/spring-all/src/main/java/org/baeldung/order/Average.java b/spring-core-2/src/main/java/org/baeldung/order/Average.java similarity index 95% rename from spring-all/src/main/java/org/baeldung/order/Average.java rename to spring-core-2/src/main/java/org/baeldung/order/Average.java index d1d9117fb1..3deffaf1ae 100644 --- a/spring-all/src/main/java/org/baeldung/order/Average.java +++ b/spring-core-2/src/main/java/org/baeldung/order/Average.java @@ -1,15 +1,15 @@ -package org.baeldung.order; - -import org.springframework.core.Ordered; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; - -@Component -@Order(Ordered.LOWEST_PRECEDENCE) -public class Average implements Rating { - - @Override - public int getRating() { - return 3; - } -} +package org.baeldung.order; + +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +@Component +@Order(Ordered.LOWEST_PRECEDENCE) +public class Average implements Rating { + + @Override + public int getRating() { + return 3; + } +} diff --git a/spring-all/src/main/java/org/baeldung/order/Excellent.java b/spring-core-2/src/main/java/org/baeldung/order/Excellent.java similarity index 94% rename from spring-all/src/main/java/org/baeldung/order/Excellent.java rename to spring-core-2/src/main/java/org/baeldung/order/Excellent.java index e5f125593f..96fea4ac9b 100644 --- a/spring-all/src/main/java/org/baeldung/order/Excellent.java +++ b/spring-core-2/src/main/java/org/baeldung/order/Excellent.java @@ -1,14 +1,14 @@ -package org.baeldung.order; - -import org.springframework.stereotype.Component; -import org.springframework.core.annotation.Order; - -@Component -@Order(1) -public class Excellent implements Rating { - - @Override - public int getRating() { - return 1; - } -} +package org.baeldung.order; + +import org.springframework.stereotype.Component; +import org.springframework.core.annotation.Order; + +@Component +@Order(1) +public class Excellent implements Rating { + + @Override + public int getRating() { + return 1; + } +} diff --git a/spring-all/src/main/java/org/baeldung/order/Good.java b/spring-core-2/src/main/java/org/baeldung/order/Good.java similarity index 94% rename from spring-all/src/main/java/org/baeldung/order/Good.java rename to spring-core-2/src/main/java/org/baeldung/order/Good.java index 3dd9852cc4..4b3e268504 100644 --- a/spring-all/src/main/java/org/baeldung/order/Good.java +++ b/spring-core-2/src/main/java/org/baeldung/order/Good.java @@ -1,14 +1,14 @@ -package org.baeldung.order; - -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; - -@Component -@Order(2) -public class Good implements Rating { - - @Override - public int getRating() { - return 2; - } -} +package org.baeldung.order; + +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +@Component +@Order(2) +public class Good implements Rating { + + @Override + public int getRating() { + return 2; + } +} diff --git a/spring-all/src/main/java/org/baeldung/order/Rating.java b/spring-core-2/src/main/java/org/baeldung/order/Rating.java similarity index 93% rename from spring-all/src/main/java/org/baeldung/order/Rating.java rename to spring-core-2/src/main/java/org/baeldung/order/Rating.java index dd0391a3d9..10f2780522 100644 --- a/spring-all/src/main/java/org/baeldung/order/Rating.java +++ b/spring-core-2/src/main/java/org/baeldung/order/Rating.java @@ -1,6 +1,6 @@ -package org.baeldung.order; - -public interface Rating { - - int getRating(); -} +package org.baeldung.order; + +public interface Rating { + + int getRating(); +} diff --git a/spring-all/src/main/java/org/baeldung/persistence/Setup.java b/spring-core-2/src/main/java/org/baeldung/persistence/Setup.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/persistence/Setup.java rename to spring-core-2/src/main/java/org/baeldung/persistence/Setup.java diff --git a/spring-all/src/main/java/org/baeldung/primary/Config.java b/spring-core-2/src/main/java/org/baeldung/primary/Config.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/primary/Config.java rename to spring-core-2/src/main/java/org/baeldung/primary/Config.java diff --git a/spring-all/src/main/java/org/baeldung/primary/DepartmentManager.java b/spring-core-2/src/main/java/org/baeldung/primary/DepartmentManager.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/primary/DepartmentManager.java rename to spring-core-2/src/main/java/org/baeldung/primary/DepartmentManager.java diff --git a/spring-all/src/main/java/org/baeldung/primary/Employee.java b/spring-core-2/src/main/java/org/baeldung/primary/Employee.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/primary/Employee.java rename to spring-core-2/src/main/java/org/baeldung/primary/Employee.java diff --git a/spring-all/src/main/java/org/baeldung/primary/GeneralManager.java b/spring-core-2/src/main/java/org/baeldung/primary/GeneralManager.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/primary/GeneralManager.java rename to spring-core-2/src/main/java/org/baeldung/primary/GeneralManager.java diff --git a/spring-all/src/main/java/org/baeldung/primary/Manager.java b/spring-core-2/src/main/java/org/baeldung/primary/Manager.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/primary/Manager.java rename to spring-core-2/src/main/java/org/baeldung/primary/Manager.java diff --git a/spring-all/src/main/java/org/baeldung/primary/ManagerService.java b/spring-core-2/src/main/java/org/baeldung/primary/ManagerService.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/primary/ManagerService.java rename to spring-core-2/src/main/java/org/baeldung/primary/ManagerService.java diff --git a/spring-all/src/main/java/org/baeldung/primary/PrimaryApplication.java b/spring-core-2/src/main/java/org/baeldung/primary/PrimaryApplication.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/primary/PrimaryApplication.java rename to spring-core-2/src/main/java/org/baeldung/primary/PrimaryApplication.java diff --git a/spring-all/src/main/java/org/baeldung/profiles/DatasourceConfig.java b/spring-core-2/src/main/java/org/baeldung/profiles/DatasourceConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/profiles/DatasourceConfig.java rename to spring-core-2/src/main/java/org/baeldung/profiles/DatasourceConfig.java diff --git a/spring-all/src/main/java/org/baeldung/profiles/DevDatasourceConfig.java b/spring-core-2/src/main/java/org/baeldung/profiles/DevDatasourceConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/profiles/DevDatasourceConfig.java rename to spring-core-2/src/main/java/org/baeldung/profiles/DevDatasourceConfig.java diff --git a/spring-all/src/main/java/org/baeldung/profiles/ProductionDatasourceConfig.java b/spring-core-2/src/main/java/org/baeldung/profiles/ProductionDatasourceConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/profiles/ProductionDatasourceConfig.java rename to spring-core-2/src/main/java/org/baeldung/profiles/ProductionDatasourceConfig.java diff --git a/spring-all/src/main/java/org/baeldung/profiles/ProfileManager.java b/spring-core-2/src/main/java/org/baeldung/profiles/ProfileManager.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/profiles/ProfileManager.java rename to spring-core-2/src/main/java/org/baeldung/profiles/ProfileManager.java diff --git a/spring-all/src/main/java/org/baeldung/profiles/SpringProfilesConfig.java b/spring-core-2/src/main/java/org/baeldung/profiles/SpringProfilesConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/profiles/SpringProfilesConfig.java rename to spring-core-2/src/main/java/org/baeldung/profiles/SpringProfilesConfig.java diff --git a/spring-all/src/main/java/org/baeldung/sample/Bar.java b/spring-core-2/src/main/java/org/baeldung/sample/Bar.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/sample/Bar.java rename to spring-core-2/src/main/java/org/baeldung/sample/Bar.java diff --git a/spring-all/src/main/java/org/baeldung/sample/Foo.java b/spring-core-2/src/main/java/org/baeldung/sample/Foo.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/sample/Foo.java rename to spring-core-2/src/main/java/org/baeldung/sample/Foo.java diff --git a/spring-all/src/main/java/org/baeldung/sampleabstract/BallService.java b/spring-core-2/src/main/java/org/baeldung/sampleabstract/BallService.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/sampleabstract/BallService.java rename to spring-core-2/src/main/java/org/baeldung/sampleabstract/BallService.java diff --git a/spring-all/src/main/java/org/baeldung/sampleabstract/BasketballService.java b/spring-core-2/src/main/java/org/baeldung/sampleabstract/BasketballService.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/sampleabstract/BasketballService.java rename to spring-core-2/src/main/java/org/baeldung/sampleabstract/BasketballService.java diff --git a/spring-all/src/main/java/org/baeldung/sampleabstract/DemoApp.java b/spring-core-2/src/main/java/org/baeldung/sampleabstract/DemoApp.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/sampleabstract/DemoApp.java rename to spring-core-2/src/main/java/org/baeldung/sampleabstract/DemoApp.java diff --git a/spring-all/src/main/java/org/baeldung/sampleabstract/LogRepository.java b/spring-core-2/src/main/java/org/baeldung/sampleabstract/LogRepository.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/sampleabstract/LogRepository.java rename to spring-core-2/src/main/java/org/baeldung/sampleabstract/LogRepository.java diff --git a/spring-all/src/main/java/org/baeldung/sampleabstract/RuleRepository.java b/spring-core-2/src/main/java/org/baeldung/sampleabstract/RuleRepository.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/sampleabstract/RuleRepository.java rename to spring-core-2/src/main/java/org/baeldung/sampleabstract/RuleRepository.java diff --git a/spring-all/src/main/java/org/baeldung/scopes/HelloMessageGenerator.java b/spring-core-2/src/main/java/org/baeldung/scopes/HelloMessageGenerator.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/scopes/HelloMessageGenerator.java rename to spring-core-2/src/main/java/org/baeldung/scopes/HelloMessageGenerator.java diff --git a/spring-all/src/main/java/org/baeldung/scopes/Person.java b/spring-core-2/src/main/java/org/baeldung/scopes/Person.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/scopes/Person.java rename to spring-core-2/src/main/java/org/baeldung/scopes/Person.java diff --git a/spring-all/src/main/java/org/baeldung/scopes/ScopesController.java b/spring-core-2/src/main/java/org/baeldung/scopes/ScopesController.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/scopes/ScopesController.java rename to spring-core-2/src/main/java/org/baeldung/scopes/ScopesController.java diff --git a/spring-all/src/main/java/org/baeldung/spring/config/CleanupBean.java b/spring-core-2/src/main/java/org/baeldung/spring/config/CleanupBean.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring/config/CleanupBean.java rename to spring-core-2/src/main/java/org/baeldung/spring/config/CleanupBean.java diff --git a/spring-all/src/main/java/org/baeldung/spring/config/CoreConfig.java b/spring-core-2/src/main/java/org/baeldung/spring/config/CoreConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring/config/CoreConfig.java rename to spring-core-2/src/main/java/org/baeldung/spring/config/CoreConfig.java diff --git a/spring-all/src/main/java/org/baeldung/spring/config/MainWebAppInitializer.java b/spring-core-2/src/main/java/org/baeldung/spring/config/MainWebAppInitializer.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring/config/MainWebAppInitializer.java rename to spring-core-2/src/main/java/org/baeldung/spring/config/MainWebAppInitializer.java diff --git a/spring-all/src/main/java/org/baeldung/spring/config/MvcConfig.java b/spring-core-2/src/main/java/org/baeldung/spring/config/MvcConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring/config/MvcConfig.java rename to spring-core-2/src/main/java/org/baeldung/spring/config/MvcConfig.java diff --git a/spring-all/src/main/java/org/baeldung/spring/config/PersistenceConfig.java b/spring-core-2/src/main/java/org/baeldung/spring/config/PersistenceConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/spring/config/PersistenceConfig.java rename to spring-core-2/src/main/java/org/baeldung/spring/config/PersistenceConfig.java diff --git a/spring-core-2/src/main/java/org/baeldung/spring/config/ScopesConfig.java b/spring-core-2/src/main/java/org/baeldung/spring/config/ScopesConfig.java new file mode 100644 index 0000000000..e69de29bb2 diff --git a/spring-all/src/main/java/org/baeldung/springevents/asynchronous/AsynchronousSpringEventsConfig.java b/spring-core-2/src/main/java/org/baeldung/springevents/asynchronous/AsynchronousSpringEventsConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/springevents/asynchronous/AsynchronousSpringEventsConfig.java rename to spring-core-2/src/main/java/org/baeldung/springevents/asynchronous/AsynchronousSpringEventsConfig.java diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/AnnotationDrivenEventListener.java b/spring-core-2/src/main/java/org/baeldung/springevents/synchronous/AnnotationDrivenEventListener.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/springevents/synchronous/AnnotationDrivenEventListener.java rename to spring-core-2/src/main/java/org/baeldung/springevents/synchronous/AnnotationDrivenEventListener.java diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/ContextRefreshedListener.java b/spring-core-2/src/main/java/org/baeldung/springevents/synchronous/ContextRefreshedListener.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/springevents/synchronous/ContextRefreshedListener.java rename to spring-core-2/src/main/java/org/baeldung/springevents/synchronous/ContextRefreshedListener.java diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEvent.java b/spring-core-2/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEvent.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEvent.java rename to spring-core-2/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEvent.java diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventListener.java b/spring-core-2/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventListener.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventListener.java rename to spring-core-2/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventListener.java diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventPublisher.java b/spring-core-2/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventPublisher.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventPublisher.java rename to spring-core-2/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventPublisher.java diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringAppEvent.java b/spring-core-2/src/main/java/org/baeldung/springevents/synchronous/GenericSpringAppEvent.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringAppEvent.java rename to spring-core-2/src/main/java/org/baeldung/springevents/synchronous/GenericSpringAppEvent.java diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringEvent.java b/spring-core-2/src/main/java/org/baeldung/springevents/synchronous/GenericSpringEvent.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringEvent.java rename to spring-core-2/src/main/java/org/baeldung/springevents/synchronous/GenericSpringEvent.java diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringEventListener.java b/spring-core-2/src/main/java/org/baeldung/springevents/synchronous/GenericSpringEventListener.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericSpringEventListener.java rename to spring-core-2/src/main/java/org/baeldung/springevents/synchronous/GenericSpringEventListener.java diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericStringSpringAppEvent.java b/spring-core-2/src/main/java/org/baeldung/springevents/synchronous/GenericStringSpringAppEvent.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericStringSpringAppEvent.java rename to spring-core-2/src/main/java/org/baeldung/springevents/synchronous/GenericStringSpringAppEvent.java diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericStringSpringEvent.java b/spring-core-2/src/main/java/org/baeldung/springevents/synchronous/GenericStringSpringEvent.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/springevents/synchronous/GenericStringSpringEvent.java rename to spring-core-2/src/main/java/org/baeldung/springevents/synchronous/GenericStringSpringEvent.java diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/SynchronousSpringEventsConfig.java b/spring-core-2/src/main/java/org/baeldung/springevents/synchronous/SynchronousSpringEventsConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/springevents/synchronous/SynchronousSpringEventsConfig.java rename to spring-core-2/src/main/java/org/baeldung/springevents/synchronous/SynchronousSpringEventsConfig.java diff --git a/spring-all/src/main/java/org/baeldung/startup/AllStrategiesExampleBean.java b/spring-core-2/src/main/java/org/baeldung/startup/AllStrategiesExampleBean.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/startup/AllStrategiesExampleBean.java rename to spring-core-2/src/main/java/org/baeldung/startup/AllStrategiesExampleBean.java diff --git a/spring-all/src/main/java/org/baeldung/startup/EventListenerExampleBean.java b/spring-core-2/src/main/java/org/baeldung/startup/EventListenerExampleBean.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/startup/EventListenerExampleBean.java rename to spring-core-2/src/main/java/org/baeldung/startup/EventListenerExampleBean.java diff --git a/spring-all/src/main/java/org/baeldung/startup/InitMethodExampleBean.java b/spring-core-2/src/main/java/org/baeldung/startup/InitMethodExampleBean.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/startup/InitMethodExampleBean.java rename to spring-core-2/src/main/java/org/baeldung/startup/InitMethodExampleBean.java diff --git a/spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java b/spring-core-2/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java rename to spring-core-2/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java diff --git a/spring-all/src/main/java/org/baeldung/startup/InvalidInitExampleBean.java b/spring-core-2/src/main/java/org/baeldung/startup/InvalidInitExampleBean.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/startup/InvalidInitExampleBean.java rename to spring-core-2/src/main/java/org/baeldung/startup/InvalidInitExampleBean.java diff --git a/spring-all/src/main/java/org/baeldung/startup/LogicInConstructorExampleBean.java b/spring-core-2/src/main/java/org/baeldung/startup/LogicInConstructorExampleBean.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/startup/LogicInConstructorExampleBean.java rename to spring-core-2/src/main/java/org/baeldung/startup/LogicInConstructorExampleBean.java diff --git a/spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java b/spring-core-2/src/main/java/org/baeldung/startup/PostConstructExampleBean.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java rename to spring-core-2/src/main/java/org/baeldung/startup/PostConstructExampleBean.java diff --git a/spring-all/src/main/java/org/baeldung/startup/SpringStartupConfig.java b/spring-core-2/src/main/java/org/baeldung/startup/SpringStartupConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/startup/SpringStartupConfig.java rename to spring-core-2/src/main/java/org/baeldung/startup/SpringStartupConfig.java diff --git a/spring-all/src/main/java/org/baeldung/startup/StartupApplicationListenerExample.java b/spring-core-2/src/main/java/org/baeldung/startup/StartupApplicationListenerExample.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/startup/StartupApplicationListenerExample.java rename to spring-core-2/src/main/java/org/baeldung/startup/StartupApplicationListenerExample.java diff --git a/spring-all/src/main/resources/application.properties b/spring-core-2/src/main/resources/application.properties similarity index 100% rename from spring-all/src/main/resources/application.properties rename to spring-core-2/src/main/resources/application.properties diff --git a/spring-core-2/src/main/resources/beanInjection-constructor.xml b/spring-core-2/src/main/resources/beanInjection-constructor.xml new file mode 100644 index 0000000000..5a2ffe767c --- /dev/null +++ b/spring-core-2/src/main/resources/beanInjection-constructor.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-core-2/src/main/resources/beanInjection-setter.xml b/spring-core-2/src/main/resources/beanInjection-setter.xml new file mode 100644 index 0000000000..0e82e3be1c --- /dev/null +++ b/spring-core-2/src/main/resources/beanInjection-setter.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/spring-all/src/main/resources/jdbc/schema.sql b/spring-core-2/src/main/resources/jdbc/schema.sql similarity index 100% rename from spring-all/src/main/resources/jdbc/schema.sql rename to spring-core-2/src/main/resources/jdbc/schema.sql diff --git a/spring-all/src/main/resources/jdbc/springJdbc-config.xml b/spring-core-2/src/main/resources/jdbc/springJdbc-config.xml similarity index 100% rename from spring-all/src/main/resources/jdbc/springJdbc-config.xml rename to spring-core-2/src/main/resources/jdbc/springJdbc-config.xml diff --git a/spring-all/src/main/resources/jdbc/test-data.sql b/spring-core-2/src/main/resources/jdbc/test-data.sql similarity index 100% rename from spring-all/src/main/resources/jdbc/test-data.sql rename to spring-core-2/src/main/resources/jdbc/test-data.sql diff --git a/spring-all/src/main/resources/log4j2.properties b/spring-core-2/src/main/resources/log4j2.properties similarity index 100% rename from spring-all/src/main/resources/log4j2.properties rename to spring-core-2/src/main/resources/log4j2.properties diff --git a/spring-all/src/main/resources/logback.xml b/spring-core-2/src/main/resources/logback.xml similarity index 74% rename from spring-all/src/main/resources/logback.xml rename to spring-core-2/src/main/resources/logback.xml index 56af2d397e..7bd5154680 100644 --- a/spring-all/src/main/resources/logback.xml +++ b/spring-core-2/src/main/resources/logback.xml @@ -7,13 +7,13 @@ - - + + - + - + \ No newline at end of file diff --git a/spring-all/src/main/resources/scopes.xml b/spring-core-2/src/main/resources/scopes.xml similarity index 58% rename from spring-all/src/main/resources/scopes.xml rename to spring-core-2/src/main/resources/scopes.xml index faecd727fa..8fdb186c28 100644 --- a/spring-all/src/main/resources/scopes.xml +++ b/spring-core-2/src/main/resources/scopes.xml @@ -1,10 +1,10 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> - + - + diff --git a/spring-all/src/main/resources/springProfiles-config.xml b/spring-core-2/src/main/resources/springProfiles-config.xml similarity index 66% rename from spring-all/src/main/resources/springProfiles-config.xml rename to spring-core-2/src/main/resources/springProfiles-config.xml index 5f71c02e20..985ab6ba86 100644 --- a/spring-all/src/main/resources/springProfiles-config.xml +++ b/spring-core-2/src/main/resources/springProfiles-config.xml @@ -1,6 +1,7 @@ - diff --git a/spring-all/src/main/resources/startupConfig.xml b/spring-core-2/src/main/resources/startupConfig.xml similarity index 100% rename from spring-all/src/main/resources/startupConfig.xml rename to spring-core-2/src/main/resources/startupConfig.xml diff --git a/spring-all/src/test/java/org/baeldung/autowire/sample/FooServiceIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/autowire/sample/FooServiceIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/autowire/sample/FooServiceIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/autowire/sample/FooServiceIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/bean/injection/ConstructorBasedBeanInjectionWithJavaConfigIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/bean/injection/ConstructorBasedBeanInjectionWithJavaConfigIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/bean/injection/ConstructorBasedBeanInjectionWithJavaConfigIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/bean/injection/ConstructorBasedBeanInjectionWithJavaConfigIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/bean/injection/ConstructorBasedBeanInjectionWithXMLConfigIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/bean/injection/ConstructorBasedBeanInjectionWithXMLConfigIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/bean/injection/ConstructorBasedBeanInjectionWithXMLConfigIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/bean/injection/ConstructorBasedBeanInjectionWithXMLConfigIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/bean/injection/SetterBasedBeanInjectionWithJavaConfigIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/bean/injection/SetterBasedBeanInjectionWithJavaConfigIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/bean/injection/SetterBasedBeanInjectionWithJavaConfigIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/bean/injection/SetterBasedBeanInjectionWithJavaConfigIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/bean/injection/SetterBasedBeanInjectionWithXMLConfigIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/bean/injection/SetterBasedBeanInjectionWithXMLConfigIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/bean/injection/SetterBasedBeanInjectionWithXMLConfigIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/bean/injection/SetterBasedBeanInjectionWithXMLConfigIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/customannotation/Account.java b/spring-core-2/src/test/java/org/baeldung/customannotation/Account.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/customannotation/Account.java rename to spring-core-2/src/test/java/org/baeldung/customannotation/Account.java diff --git a/spring-all/src/test/java/org/baeldung/customannotation/BeanWithGenericDAO.java b/spring-core-2/src/test/java/org/baeldung/customannotation/BeanWithGenericDAO.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/customannotation/BeanWithGenericDAO.java rename to spring-core-2/src/test/java/org/baeldung/customannotation/BeanWithGenericDAO.java diff --git a/spring-all/src/test/java/org/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/customannotation/Person.java b/spring-core-2/src/test/java/org/baeldung/customannotation/Person.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/customannotation/Person.java rename to spring-core-2/src/test/java/org/baeldung/customannotation/Person.java diff --git a/spring-all/src/test/java/org/baeldung/customscope/TenantScopeIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/customscope/TenantScopeIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/customscope/TenantScopeIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/customscope/TenantScopeIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/order/RatingRetrieverUnitTest.java b/spring-core-2/src/test/java/org/baeldung/order/RatingRetrieverUnitTest.java similarity index 97% rename from spring-all/src/test/java/org/baeldung/order/RatingRetrieverUnitTest.java rename to spring-core-2/src/test/java/org/baeldung/order/RatingRetrieverUnitTest.java index a624f757fc..96993ccd7c 100644 --- a/spring-all/src/test/java/org/baeldung/order/RatingRetrieverUnitTest.java +++ b/spring-core-2/src/test/java/org/baeldung/order/RatingRetrieverUnitTest.java @@ -1,37 +1,37 @@ -package org.baeldung.order; - - -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -import java.util.List; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(loader = AnnotationConfigContextLoader.class) -public class RatingRetrieverUnitTest { - - @Configuration - @ComponentScan(basePackages = {"org.baeldung.order"}) - static class ContextConfiguration {} - - @Autowired - private List ratings; - - @Test - public void givenOrderOnComponents_whenInjected_thenAutowireByOrderValue() { - assertThat(ratings.get(0).getRating(), is(equalTo(1))); - assertThat(ratings.get(1).getRating(), is(equalTo(2))); - assertThat(ratings.get(2).getRating(), is(equalTo(3))); - } - -} +package org.baeldung.order; + + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import java.util.List; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(loader = AnnotationConfigContextLoader.class) +public class RatingRetrieverUnitTest { + + @Configuration + @ComponentScan(basePackages = {"org.baeldung.order"}) + static class ContextConfiguration {} + + @Autowired + private List ratings; + + @Test + public void givenOrderOnComponents_whenInjected_thenAutowireByOrderValue() { + assertThat(ratings.get(0).getRating(), is(equalTo(1))); + assertThat(ratings.get(1).getRating(), is(equalTo(2))); + assertThat(ratings.get(2).getRating(), is(equalTo(3))); + } + +} diff --git a/spring-all/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/profiles/SpringProfilesWithMavenPropertiesIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/profiles/SpringProfilesWithMavenPropertiesIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/profiles/SpringProfilesWithMavenPropertiesIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/profiles/SpringProfilesWithMavenPropertiesIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/profiles/SpringProfilesWithXMLIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/profiles/SpringProfilesWithXMLIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/profiles/SpringProfilesWithXMLIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/profiles/SpringProfilesWithXMLIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/scopes/ScopesIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/scopes/ScopesIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/scopes/ScopesIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/scopes/ScopesIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/springevents/synchronous/GenericAppEventListenerIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/springevents/synchronous/GenericAppEventListenerIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/springevents/synchronous/GenericAppEventListenerIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/springevents/synchronous/GenericAppEventListenerIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/startup/SpringStartupIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/startup/SpringStartupIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/startup/SpringStartupIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/startup/SpringStartupIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java b/spring-core-2/src/test/java/org/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java rename to spring-core-2/src/test/java/org/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java diff --git a/guava-collections/src/test/resources/.gitignore b/spring-core-2/src/test/resources/.gitignore similarity index 100% rename from guava-collections/src/test/resources/.gitignore rename to spring-core-2/src/test/resources/.gitignore diff --git a/spring-core-3/README.md b/spring-core-3/README.md new file mode 100644 index 0000000000..7ca95ae78e --- /dev/null +++ b/spring-core-3/README.md @@ -0,0 +1,7 @@ +## Relevant Articles: + +- [Understanding getBean() in Spring](https://www.baeldung.com/spring-getbean) +- [Exploring the Spring BeanFactory API](https://www.baeldung.com/spring-beanfactory) +- [How to use the Spring FactoryBean?](https://www.baeldung.com/spring-factorybean) +- [Spring – Injecting Collections](https://www.baeldung.com/spring-injecting-collections) +- More articles: [[<-- prev]](/spring-core-2) \ No newline at end of file diff --git a/spring-core-3/pom.xml b/spring-core-3/pom.xml new file mode 100644 index 0000000000..cd82f23320 --- /dev/null +++ b/spring-core-3/pom.xml @@ -0,0 +1,72 @@ + + + 4.0.0 + spring-core-3 + spring-core-3 + + + com.baeldung + parent-spring-5 + 0.0.1-SNAPSHOT + ../parent-spring-5 + + + + + org.springframework + spring-beans + ${spring.version} + + + org.springframework + spring-context + ${spring.version} + + + org.springframework + spring-core + ${spring.version} + + + javax.annotation + javax.annotation-api + ${annotation-api.version} + + + org.springframework + spring-test + ${spring.version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit-jupiter.version} + test + + + org.junit.jupiter + junit-jupiter-api + ${junit-jupiter.version} + test + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven.surefire.version} + + + + + + 2.22.1 + 1.3.2 + + + \ No newline at end of file diff --git a/spring-core-2/src/main/java/com/baeldung/beanfactory/Employee.java b/spring-core-3/src/main/java/com/baeldung/beanfactory/Employee.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/beanfactory/Employee.java rename to spring-core-3/src/main/java/com/baeldung/beanfactory/Employee.java diff --git a/spring-core-2/src/main/java/com/baeldung/collection/BaeldungBean.java b/spring-core-3/src/main/java/com/baeldung/collection/BaeldungBean.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/collection/BaeldungBean.java rename to spring-core-3/src/main/java/com/baeldung/collection/BaeldungBean.java diff --git a/spring-core-2/src/main/java/com/baeldung/collection/CollectionConfig.java b/spring-core-3/src/main/java/com/baeldung/collection/CollectionConfig.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/collection/CollectionConfig.java rename to spring-core-3/src/main/java/com/baeldung/collection/CollectionConfig.java diff --git a/spring-core-2/src/main/java/com/baeldung/collection/CollectionInjectionDemo.java b/spring-core-3/src/main/java/com/baeldung/collection/CollectionInjectionDemo.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/collection/CollectionInjectionDemo.java rename to spring-core-3/src/main/java/com/baeldung/collection/CollectionInjectionDemo.java diff --git a/spring-core-2/src/main/java/com/baeldung/collection/CollectionsBean.java b/spring-core-3/src/main/java/com/baeldung/collection/CollectionsBean.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/collection/CollectionsBean.java rename to spring-core-3/src/main/java/com/baeldung/collection/CollectionsBean.java diff --git a/spring-core-2/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java b/spring-core-3/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java rename to spring-core-3/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java diff --git a/spring-core-2/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java b/spring-core-3/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java rename to spring-core-3/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java diff --git a/spring-core-2/src/main/java/com/baeldung/factorybean/README.md b/spring-core-3/src/main/java/com/baeldung/factorybean/README.md similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/factorybean/README.md rename to spring-core-3/src/main/java/com/baeldung/factorybean/README.md diff --git a/spring-core-2/src/main/java/com/baeldung/factorybean/SingleToolFactory.java b/spring-core-3/src/main/java/com/baeldung/factorybean/SingleToolFactory.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/factorybean/SingleToolFactory.java rename to spring-core-3/src/main/java/com/baeldung/factorybean/SingleToolFactory.java diff --git a/spring-core-2/src/main/java/com/baeldung/factorybean/Tool.java b/spring-core-3/src/main/java/com/baeldung/factorybean/Tool.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/factorybean/Tool.java rename to spring-core-3/src/main/java/com/baeldung/factorybean/Tool.java diff --git a/spring-core-2/src/main/java/com/baeldung/factorybean/ToolFactory.java b/spring-core-3/src/main/java/com/baeldung/factorybean/ToolFactory.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/factorybean/ToolFactory.java rename to spring-core-3/src/main/java/com/baeldung/factorybean/ToolFactory.java diff --git a/spring-core-2/src/main/java/com/baeldung/getbean/AnnotationConfig.java b/spring-core-3/src/main/java/com/baeldung/getbean/AnnotationConfig.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/getbean/AnnotationConfig.java rename to spring-core-3/src/main/java/com/baeldung/getbean/AnnotationConfig.java diff --git a/spring-core-2/src/main/java/com/baeldung/getbean/Lion.java b/spring-core-3/src/main/java/com/baeldung/getbean/Lion.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/getbean/Lion.java rename to spring-core-3/src/main/java/com/baeldung/getbean/Lion.java diff --git a/spring-core-2/src/main/java/com/baeldung/getbean/Tiger.java b/spring-core-3/src/main/java/com/baeldung/getbean/Tiger.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/getbean/Tiger.java rename to spring-core-3/src/main/java/com/baeldung/getbean/Tiger.java diff --git a/spring-core-2/src/main/resources/factorybean-abstract-spring-ctx.xml b/spring-core-3/src/main/resources/factorybean-abstract-spring-ctx.xml similarity index 100% rename from spring-core-2/src/main/resources/factorybean-abstract-spring-ctx.xml rename to spring-core-3/src/main/resources/factorybean-abstract-spring-ctx.xml diff --git a/spring-core-2/src/main/resources/factorybean-spring-ctx.xml b/spring-core-3/src/main/resources/factorybean-spring-ctx.xml similarity index 100% rename from spring-core-2/src/main/resources/factorybean-spring-ctx.xml rename to spring-core-3/src/main/resources/factorybean-spring-ctx.xml diff --git a/spring-core-2/src/test/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResourceIntegrationTest.java b/spring-core-3/src/test/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResourceIntegrationTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResourceIntegrationTest.java rename to spring-core-3/src/test/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResourceIntegrationTest.java diff --git a/spring-core-2/src/test/java/com/baeldung/beanfactory/README.md b/spring-core-3/src/test/java/com/baeldung/beanfactory/README.md similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/beanfactory/README.md rename to spring-core-3/src/test/java/com/baeldung/beanfactory/README.md diff --git a/spring-core-2/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanIntegrationTest.java b/spring-core-3/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanIntegrationTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanIntegrationTest.java rename to spring-core-3/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanIntegrationTest.java diff --git a/spring-core-2/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigIntegrationTest.java b/spring-core-3/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigIntegrationTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigIntegrationTest.java rename to spring-core-3/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigIntegrationTest.java diff --git a/spring-core-2/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigIntegrationTest.java b/spring-core-3/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigIntegrationTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigIntegrationTest.java rename to spring-core-3/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigIntegrationTest.java diff --git a/spring-core-2/src/test/java/com/baeldung/getbean/GetBeanByNameAndTypeUnitTest.java b/spring-core-3/src/test/java/com/baeldung/getbean/GetBeanByNameAndTypeUnitTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/getbean/GetBeanByNameAndTypeUnitTest.java rename to spring-core-3/src/test/java/com/baeldung/getbean/GetBeanByNameAndTypeUnitTest.java diff --git a/spring-core-2/src/test/java/com/baeldung/getbean/GetBeanByNameUnitTest.java b/spring-core-3/src/test/java/com/baeldung/getbean/GetBeanByNameUnitTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/getbean/GetBeanByNameUnitTest.java rename to spring-core-3/src/test/java/com/baeldung/getbean/GetBeanByNameUnitTest.java diff --git a/spring-core-2/src/test/java/com/baeldung/getbean/GetBeanByNameWithConstructorParametersUnitTest.java b/spring-core-3/src/test/java/com/baeldung/getbean/GetBeanByNameWithConstructorParametersUnitTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/getbean/GetBeanByNameWithConstructorParametersUnitTest.java rename to spring-core-3/src/test/java/com/baeldung/getbean/GetBeanByNameWithConstructorParametersUnitTest.java diff --git a/spring-core-2/src/test/java/com/baeldung/getbean/GetBeanByTypeUnitTest.java b/spring-core-3/src/test/java/com/baeldung/getbean/GetBeanByTypeUnitTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/getbean/GetBeanByTypeUnitTest.java rename to spring-core-3/src/test/java/com/baeldung/getbean/GetBeanByTypeUnitTest.java diff --git a/spring-core-2/src/test/java/com/baeldung/getbean/GetBeanByTypeWithConstructorParametersUnitTest.java b/spring-core-3/src/test/java/com/baeldung/getbean/GetBeanByTypeWithConstructorParametersUnitTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/getbean/GetBeanByTypeWithConstructorParametersUnitTest.java rename to spring-core-3/src/test/java/com/baeldung/getbean/GetBeanByTypeWithConstructorParametersUnitTest.java diff --git a/spring-core-2/src/test/resources/beanfactory-example.xml b/spring-core-3/src/test/resources/beanfactory-example.xml similarity index 100% rename from spring-core-2/src/test/resources/beanfactory-example.xml rename to spring-core-3/src/test/resources/beanfactory-example.xml diff --git a/spring-core/README.md b/spring-core/README.md index 3ff3f1ea41..6d274e89f0 100644 --- a/spring-core/README.md +++ b/spring-core/README.md @@ -1,12 +1,17 @@ +## Spring Core + +This module contains articles about core Spring functionality + ### Relevant Articles: -- [Wiring in Spring: @Autowired, @Resource and @Inject](http://www.baeldung.com/spring-annotations-resource-inject-autowire) -- [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) -- [BeanNameAware and BeanFactoryAware Interfaces in Spring](http://www.baeldung.com/spring-bean-name-factory-aware) -- [Access a File from the Classpath in a Spring Application](http://www.baeldung.com/spring-classpath-file-access) +- [Wiring in Spring: @Autowired, @Resource and @Inject](https://www.baeldung.com/spring-annotations-resource-inject-autowire) +- [Constructor Injection in Spring with Lombok](httsp://www.baeldung.com/spring-injection-lombok) +- [Introduction to Spring’s StreamUtils](https://www.baeldung.com/spring-stream-utils) +- [XML-Based Injection in Spring](httsp://www.baeldung.com/spring-xml-injection) +- [A Quick Guide to the Spring @Lazy Annotation](https://www.baeldung.com/spring-lazy-annotation) +- [BeanNameAware and BeanFactoryAware Interfaces in Spring](https://www.baeldung.com/spring-bean-name-factory-aware) +- [Access a File from the Classpath in a Spring Application](https://www.baeldung.com/spring-classpath-file-access) - [Spring Application Context Events](https://www.baeldung.com/spring-context-events) - [What is a Spring Bean?](https://www.baeldung.com/spring-bean) - [Spring PostConstruct and PreDestroy Annotations](https://www.baeldung.com/spring-postconstruct-predestroy) +- More articles: [[next -->]](/spring-core-2) diff --git a/spring-cucumber/README.md b/spring-cucumber/README.md index 1e506f3a09..85bc1f65d5 100644 --- a/spring-cucumber/README.md +++ b/spring-cucumber/README.md @@ -1,2 +1,6 @@ +## Spring Cucumber + +This module contains articles about Spring testing with Cucumber + ### Relevant Articles: -- [Cucumber Spring Integration](http://www.baeldung.com/cucumber-spring-integration) +- [Cucumber Spring Integration](https://www.baeldung.com/cucumber-spring-integration) diff --git a/spring-data-rest-querydsl/README.md b/spring-data-rest-querydsl/README.md index 03b5fee06a..05ae03ab87 100644 --- a/spring-data-rest-querydsl/README.md +++ b/spring-data-rest-querydsl/README.md @@ -1,2 +1,6 @@ +## Spring Data REST Querydsl + +This module contains articles about Querydsl with Spring Data REST + ### Relevant Articles: -- [REST Query Language Over Multiple Tables with Querydsl Web Support](http://www.baeldung.com/rest-querydsl-multiple-tables) +- [REST Query Language Over Multiple Tables with Querydsl Web Support](https://www.baeldung.com/rest-querydsl-multiple-tables) diff --git a/spring-data-rest/README.md b/spring-data-rest/README.md index 4b89a24bbc..bae2fe8eaf 100644 --- a/spring-data-rest/README.md +++ b/spring-data-rest/README.md @@ -1,9 +1,21 @@ +## Spring Data REST + +This module contains articles about Spring Data REST + +### Relevant Articles: +- [Introduction to Spring Data REST](https://www.baeldung.com/spring-data-rest-intro) +- [Guide to Spring Data REST Validators](https://www.baeldung.com/spring-data-rest-validators) +- [Working with Relationships in Spring Data REST](https://www.baeldung.com/spring-data-rest-relationships) +- [AngularJS CRUD Application with Spring Data REST](https://www.baeldung.com/angularjs-crud-with-spring-data-rest) +- [Projections and Excerpts in Spring Data REST](https://www.baeldung.com/spring-data-rest-projections-excerpts) +- [Spring Data REST Events with @RepositoryEventHandler](https://www.baeldung.com/spring-data-rest-events) +- [Customizing HTTP Endpoints in Spring Data REST](https://www.baeldung.com/spring-data-rest-customize-http-endpoints) +- [Spring Boot with SQLite](https://www.baeldung.com/spring-boot-sqlite) +- [Spring Data Web Support](https://www.baeldung.com/spring-data-web-support) + ### The Course The "REST With Spring" Classes: http://bit.ly/restwithspring -# About this project -This project contains examples from the [Introduction to Spring Data REST](http://www.baeldung.com/spring-data-rest-intro) article from Baeldung. - # Running the project The application uses [Spring Boot](http://projects.spring.io/spring-boot/), so it is easy to run. You can start it any of a few ways: * Run the `main` method from `SpringDataRestApplication` @@ -12,13 +24,3 @@ The application uses [Spring Boot](http://projects.spring.io/spring-boot/), so i # Viewing the running application To view the running application, visit [http://localhost:8080](http://localhost:8080) in your browser - -### Relevant Articles: -- [Guide to Spring Data REST Validators](http://www.baeldung.com/spring-data-rest-validators) -- [Working with Relationships in Spring Data REST](http://www.baeldung.com/spring-data-rest-relationships) -- [AngularJS CRUD Application with Spring Data REST](http://www.baeldung.com/angularjs-crud-with-spring-data-rest) -- [Projections and Excerpts in Spring Data REST](http://www.baeldung.com/spring-data-rest-projections-excerpts) -- [Spring Data REST Events with @RepositoryEventHandler](http://www.baeldung.com/spring-data-rest-events) -- [Customizing HTTP Endpoints in Spring Data REST](https://www.baeldung.com/spring-data-rest-customize-http-endpoints) -- [Spring Boot with SQLite](https://www.baeldung.com/spring-boot-sqlite) -- [Spring Data Web Support](https://www.baeldung.com/spring-data-web-support) diff --git a/spring-di/README.md b/spring-di/README.md index 17f50ba410..7571b12916 100644 --- a/spring-di/README.md +++ b/spring-di/README.md @@ -5,11 +5,11 @@ 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) +- [Constructor Dependency Injection in Spring](https://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) +- [Injecting Prototype Beans into a Singleton Instance in Spring](https://www.baeldung.com/spring-inject-prototype-bean-into-singleton) +- [@Lookup Annotation in Spring](https://www.baeldung.com/spring-lookup) +- [Controlling Bean Creation Order with @DependsOn Annotation](https://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) +- [Circular Dependencies in Spring](https://www.baeldung.com/circular-dependencies-in-spring) diff --git a/spring-dispatcher-servlet/README.md b/spring-dispatcher-servlet/README.md index a93993679f..3027546152 100644 --- a/spring-dispatcher-servlet/README.md +++ b/spring-dispatcher-servlet/README.md @@ -1,3 +1,7 @@ +## Spring DispatcherServlet + +This module contains articles about Spring DispatcherServlet + ## Relevant articles: -- [An Intro to the Spring DispatcherServlet](http://www.baeldung.com/spring-dispatcherservlet) +- [An Intro to the Spring DispatcherServlet](https://www.baeldung.com/spring-dispatcherservlet) diff --git a/spring-drools/README.md b/spring-drools/README.md index 3685a399bc..08ab4de465 100644 --- a/spring-drools/README.md +++ b/spring-drools/README.md @@ -4,4 +4,4 @@ This modules contains articles about Spring with Drools ## Relevant articles: -- [Drools Spring Integration](http://www.baeldung.com/drools-spring-integration) +- [Drools Spring Integration](https://www.baeldung.com/drools-spring-integration) diff --git a/spring-ejb/README.md b/spring-ejb/README.md index f475aafc7f..6c63c2709f 100644 --- a/spring-ejb/README.md +++ b/spring-ejb/README.md @@ -4,10 +4,10 @@ This module contains articles about Spring with EJB ### Relevant Articles -- [Guide to EJB Set-up](http://www.baeldung.com/ejb-intro) -- [Java EE Session Beans](http://www.baeldung.com/ejb-session-beans) -- [Introduction to EJB JNDI Lookup on WildFly Application Server](http://www.baeldung.com/wildfly-ejb-jndi) -- [A Guide to Message Driven Beans in EJB](http://www.baeldung.com/ejb-message-driven-beans) -- [Integration Guide for Spring and EJB](http://www.baeldung.com/spring-ejb) -- [Singleton Session Bean in Java EE](http://www.baeldung.com/java-ee-singleton-session-bean) +- [Guide to EJB Set-up](https://www.baeldung.com/ejb-intro) +- [Java EE Session Beans](https://www.baeldung.com/ejb-session-beans) +- [Introduction to EJB JNDI Lookup on WildFly Application Server](httpss://www.baeldung.com/wildfly-ejb-jndi) +- [A Guide to Message Driven Beans in EJB](https://www.baeldung.com/ejb-message-driven-beans) +- [Integration Guide for Spring and EJB](https://www.baeldung.com/spring-ejb) +- [Singleton Session Bean in Java EE](https://www.baeldung.com/java-ee-singleton-session-bean) diff --git a/spring-exceptions/README.md b/spring-exceptions/README.md index 026e8485c8..f8c7553f05 100644 --- a/spring-exceptions/README.md +++ b/spring-exceptions/README.md @@ -3,9 +3,9 @@ This module contains articles about Spring `Exception`s ### Relevant articles: -- [Spring BeanCreationException](http://www.baeldung.com/spring-beancreationexception) -- [Spring DataIntegrityViolationException](http://www.baeldung.com/spring-dataIntegrityviolationexception) -- [Spring BeanDefinitionStoreException](http://www.baeldung.com/spring-beandefinitionstoreexception) -- [Spring NoSuchBeanDefinitionException](http://www.baeldung.com/spring-nosuchbeandefinitionexception) -- [Guide to Spring NonTransientDataAccessException](http://www.baeldung.com/nontransientdataaccessexception) -- [Hibernate Mapping Exception – Unknown Entity](http://www.baeldung.com/hibernate-mappingexception-unknown-entity) +- [Spring BeanCreationException](https://www.baeldung.com/spring-beancreationexception) +- [Spring DataIntegrityViolationException](https://www.baeldung.com/spring-dataIntegrityviolationexception) +- [Spring BeanDefinitionStoreException](https://www.baeldung.com/spring-beandefinitionstoreexception) +- [Spring NoSuchBeanDefinitionException](https://www.baeldung.com/spring-nosuchbeandefinitionexception) +- [Guide to Spring NonTransientDataAccessException](https://www.baeldung.com/nontransientdataaccessexception) +- [Hibernate Mapping Exception – Unknown Entity](https://www.baeldung.com/hibernate-mappingexception-unknown-entity) diff --git a/spring-freemarker/README.md b/spring-freemarker/README.md index ce8fb78f4d..410781f2ca 100644 --- a/spring-freemarker/README.md +++ b/spring-freemarker/README.md @@ -3,4 +3,4 @@ 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) +- [Introduction to Using FreeMarker in Spring MVC](https://www.baeldung.com/freemarker-in-spring-mvc-tutorial) diff --git a/spring-integration/README.md b/spring-integration/README.md index f2fbfe48b5..2e719a8674 100644 --- a/spring-integration/README.md +++ b/spring-integration/README.md @@ -3,8 +3,8 @@ 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) +- [Introduction to Spring Integration](https://www.baeldung.com/spring-integration) +- [Security In Spring Integration](https://www.baeldung.com/spring-integration-security) - [Spring Integration Java DSL](https://www.baeldung.com/spring-integration-java-dsl) - [Using Subflows in Spring Integration](https://www.baeldung.com/spring-integration-subflows) diff --git a/spring-jenkins-pipeline/README.md b/spring-jenkins-pipeline/README.md index 0086ae256d..9182823f52 100644 --- a/spring-jenkins-pipeline/README.md +++ b/spring-jenkins-pipeline/README.md @@ -4,7 +4,7 @@ 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) +- [Intro to Jenkins 2 and the Power of Pipelines](https://www.baeldung.com/jenkins-pipelines) ## Basic CRUD API with Spring Boot @@ -27,5 +27,3 @@ $ mvn spring-boot:run -Dserver.port=8989 Now with default configurations it will be available at: [http://localhost:8080](http://localhost:8080) Enjoy it :) - - diff --git a/spring-jersey/README.md b/spring-jersey/README.md index 6adc5f1375..3c6b0577c0 100644 --- a/spring-jersey/README.md +++ b/spring-jersey/README.md @@ -3,6 +3,6 @@ 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) -- [JAX-RS Client with Jersey](http://www.baeldung.com/jersey-jax-rs-client) +- [REST API with Jersey and Spring](https://www.baeldung.com/jersey-rest-api-with-spring) +- [JAX-RS Client with Jersey](https://www.baeldung.com/jersey-jax-rs-client) - [Reactive JAX-RS Client API](https://www.baeldung.com/jax-rs-reactive-client) diff --git a/spring-jinq/README.md b/spring-jinq/README.md index 10d7903f49..e049dc2ba8 100644 --- a/spring-jinq/README.md +++ b/spring-jinq/README.md @@ -1,4 +1,8 @@ +## Spring Jinq + +This module contains articles about Spring with Jinq + ## Relevant articles: -- [Introduction to Jinq with Spring](http://www.baeldung.com/spring-jinq) +- [Introduction to Jinq with Spring](https://www.baeldung.com/spring-jinq) diff --git a/spring-jms/README.md b/spring-jms/README.md index 55e74f18ff..fdeb64953a 100644 --- a/spring-jms/README.md +++ b/spring-jms/README.md @@ -1,2 +1,6 @@ +## Spring JMS + +This module contains articles about Spring with JMS + ### Relevant Articles: -- [Getting Started with Spring JMS](http://www.baeldung.com/spring-jms) +- [Getting Started with Spring JMS](https://www.baeldung.com/spring-jms) diff --git a/spring-jooq/README.md b/spring-jooq/README.md index 2777aa450c..515ab8be3c 100644 --- a/spring-jooq/README.md +++ b/spring-jooq/README.md @@ -1,6 +1,10 @@ +## Spring jOOQ + +This module contains articles about Spring with jOOQ + ### Relevant Articles: -- [Spring Boot Support for jOOQ](http://www.baeldung.com/spring-boot-support-for-jooq) -- [Introduction to jOOQ with Spring](http://www.baeldung.com/jooq-with-spring) +- [Spring Boot Support for jOOQ](https://www.baeldung.com/spring-boot-support-for-jooq) +- [Introduction to jOOQ with Spring](https://www.baeldung.com/jooq-with-spring) In order to fix the error "Plugin execution not covered by lifecycle configuration: org.jooq:jooq-codegen-maven:3.7.3:generate (execution: default, phase: generate-sources)", right-click on the error message and choose "Mark goal generated as ignore in pom.xml". Until version 1.4.x, the maven-plugin-plugin was covered by the default lifecycle mapping that ships with m2e. diff --git a/spring-kafka/README.md b/spring-kafka/README.md index 291bbca6f6..f2fecde894 100644 --- a/spring-kafka/README.md +++ b/spring-kafka/README.md @@ -1,10 +1,12 @@ +## Spring Kafka + +This module contains articles about Spring with Kafka + ### Relevant articles -- [Intro to Apache Kafka with Spring](http://www.baeldung.com/spring-kafka) +- [Intro to Apache Kafka with Spring](https://www.baeldung.com/spring-kafka) - - -# Spring Kafka +### Intro This is a simple Spring Boot app to demonstrate sending and receiving of messages in Kafka using spring-kafka. diff --git a/spring-katharsis/README.md b/spring-katharsis/README.md index 2082de2dda..d7454e6841 100644 --- a/spring-katharsis/README.md +++ b/spring-katharsis/README.md @@ -1,9 +1,11 @@ -========= +## Spring Katharsis -## Java Web Application - -###The Course -The "REST With Spring" Classes: http://bit.ly/restwithspring +This module contains articles about Spring with Katharsis ### Relevant Articles: -- [JSON API in a Spring Application](http://www.baeldung.com/json-api-java-spring-web-app) + +- [JSON API in a Spring Application](https://www.baeldung.com/json-api-java-spring-web-app) + +### The Course + +The "REST With Spring" Classes: http://bit.ly/restwithspring diff --git a/spring-ldap/README.md b/spring-ldap/README.md index b8163ab44d..4872f897e1 100644 --- a/spring-ldap/README.md +++ b/spring-ldap/README.md @@ -1,6 +1,8 @@ -## Spring LDAP Example Project +## Spring LDAP + +This module contains articles about Spring LDAP ### Relevant articles -- [Spring LDAP Overview](http://www.baeldung.com/spring-ldap) -- [Guide to Spring Data LDAP](http://www.baeldung.com/spring-data-ldap) +- [Spring LDAP Overview](https://www.baeldung.com/spring-ldap) +- [Guide to Spring Data LDAP](https://www.baeldung.com/spring-data-ldap) diff --git a/spring-mobile/README.md b/spring-mobile/README.md index e3d23bcda6..badd79d162 100644 --- a/spring-mobile/README.md +++ b/spring-mobile/README.md @@ -1,4 +1,8 @@ +## Spring Mobile + +This module contains articles about Spring Mobile + ## Relevant articles: -- [A Guide to Spring Mobile](http://www.baeldung.com/spring-mobile) +- [A Guide to Spring Mobile](https://www.baeldung.com/spring-mobile) diff --git a/spring-mockito/README.md b/spring-mockito/README.md index 969954c15e..0ad8e05ce3 100644 --- a/spring-mockito/README.md +++ b/spring-mockito/README.md @@ -1,8 +1,7 @@ -========= - -## Mockito Mocks into Spring Beans +## Spring Mockito +This module contains articles about Spring with Mockito ### Relevant Articles: -- [Injecting Mockito Mocks into Spring Beans](http://www.baeldung.com/injecting-mocks-in-spring) -- [Mockito ArgumentMatchers](http://www.baeldung.com/mockito-argument-matchers) +- [Injecting Mockito Mocks into Spring Beans](https://www.baeldung.com/injecting-mocks-in-spring) +- [Mockito ArgumentMatchers](https://www.baeldung.com/mockito-argument-matchers) diff --git a/spring-all/.gitignore b/spring-mvc-basics-2/.gitignore similarity index 100% rename from spring-all/.gitignore rename to spring-mvc-basics-2/.gitignore diff --git a/spring-mvc-basics-2/README.md b/spring-mvc-basics-2/README.md new file mode 100644 index 0000000000..8cf753bbdc --- /dev/null +++ b/spring-mvc-basics-2/README.md @@ -0,0 +1,11 @@ +========= + +## Spring MVC Basics with Java Configuration Example Project + +### The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring + +### Relevant Articles: +- [Quick Guide to Spring Controllers](http://www.baeldung.com/spring-controllers)- [The Spring @Controller and @RestController Annotations](http://www.baeldung.com/spring-controller-vs-restcontroller) +- [Model, ModelMap, and ModelView in Spring MVC](http://www.baeldung.com/spring-mvc-model-model-map-model-view) +- [Spring Web Contexts](http://www.baeldung.com/spring-web-contexts) \ No newline at end of file diff --git a/spring-mvc-basics-2/pom.xml b/spring-mvc-basics-2/pom.xml new file mode 100644 index 0000000000..706459a268 --- /dev/null +++ b/spring-mvc-basics-2/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + spring-mvc-basics-2 + spring-mvc-basics-2 + war + + + parent-boot-2 + com.baeldung + 0.0.1-SNAPSHOT + ../parent-boot-2 + + + + + com.fasterxml.jackson.core + jackson-databind + + + org.springframework + spring-web + + + javax.servlet + javax.servlet-api + provided + + + org.springframework + spring-webmvc + + + + \ No newline at end of file diff --git a/spring-all/src/main/java/com/baeldung/contexts/Greeting.java b/spring-mvc-basics-2/src/main/java/com/baeldung/contexts/Greeting.java similarity index 100% rename from spring-all/src/main/java/com/baeldung/contexts/Greeting.java rename to spring-mvc-basics-2/src/main/java/com/baeldung/contexts/Greeting.java diff --git a/spring-all/src/main/java/com/baeldung/contexts/config/AnnotationsBasedApplicationAndServletInitializer.java b/spring-mvc-basics-2/src/main/java/com/baeldung/contexts/config/AnnotationsBasedApplicationAndServletInitializer.java similarity index 94% rename from spring-all/src/main/java/com/baeldung/contexts/config/AnnotationsBasedApplicationAndServletInitializer.java rename to spring-mvc-basics-2/src/main/java/com/baeldung/contexts/config/AnnotationsBasedApplicationAndServletInitializer.java index 318dc5ea65..1dffad637a 100644 --- a/spring-all/src/main/java/com/baeldung/contexts/config/AnnotationsBasedApplicationAndServletInitializer.java +++ b/spring-mvc-basics-2/src/main/java/com/baeldung/contexts/config/AnnotationsBasedApplicationAndServletInitializer.java @@ -2,7 +2,6 @@ package com.baeldung.contexts.config; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; -import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer; public class AnnotationsBasedApplicationAndServletInitializer //extends AbstractDispatcherServletInitializer { diff --git a/spring-all/src/main/java/com/baeldung/contexts/config/AnnotationsBasedApplicationInitializer.java b/spring-mvc-basics-2/src/main/java/com/baeldung/contexts/config/AnnotationsBasedApplicationInitializer.java similarity index 89% rename from spring-all/src/main/java/com/baeldung/contexts/config/AnnotationsBasedApplicationInitializer.java rename to spring-mvc-basics-2/src/main/java/com/baeldung/contexts/config/AnnotationsBasedApplicationInitializer.java index b685d2fa83..ffa80d58bf 100644 --- a/spring-all/src/main/java/com/baeldung/contexts/config/AnnotationsBasedApplicationInitializer.java +++ b/spring-mvc-basics-2/src/main/java/com/baeldung/contexts/config/AnnotationsBasedApplicationInitializer.java @@ -1,6 +1,5 @@ package com.baeldung.contexts.config; -import org.springframework.web.context.AbstractContextLoaderInitializer; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; diff --git a/spring-all/src/main/java/com/baeldung/contexts/config/ApplicationInitializer.java b/spring-mvc-basics-2/src/main/java/com/baeldung/contexts/config/ApplicationInitializer.java similarity index 100% rename from spring-all/src/main/java/com/baeldung/contexts/config/ApplicationInitializer.java rename to spring-mvc-basics-2/src/main/java/com/baeldung/contexts/config/ApplicationInitializer.java diff --git a/spring-all/src/main/java/com/baeldung/contexts/config/NormalWebAppConfig.java b/spring-mvc-basics-2/src/main/java/com/baeldung/contexts/config/NormalWebAppConfig.java similarity index 100% rename from spring-all/src/main/java/com/baeldung/contexts/config/NormalWebAppConfig.java rename to spring-mvc-basics-2/src/main/java/com/baeldung/contexts/config/NormalWebAppConfig.java diff --git a/spring-all/src/main/java/com/baeldung/contexts/config/RootApplicationConfig.java b/spring-mvc-basics-2/src/main/java/com/baeldung/contexts/config/RootApplicationConfig.java similarity index 100% rename from spring-all/src/main/java/com/baeldung/contexts/config/RootApplicationConfig.java rename to spring-mvc-basics-2/src/main/java/com/baeldung/contexts/config/RootApplicationConfig.java diff --git a/spring-all/src/main/java/com/baeldung/contexts/config/SecureAnnotationsBasedApplicationAndServletInitializer.java b/spring-mvc-basics-2/src/main/java/com/baeldung/contexts/config/SecureAnnotationsBasedApplicationAndServletInitializer.java similarity index 92% rename from spring-all/src/main/java/com/baeldung/contexts/config/SecureAnnotationsBasedApplicationAndServletInitializer.java rename to spring-mvc-basics-2/src/main/java/com/baeldung/contexts/config/SecureAnnotationsBasedApplicationAndServletInitializer.java index d74d4a6c63..580e86d2b5 100644 --- a/spring-all/src/main/java/com/baeldung/contexts/config/SecureAnnotationsBasedApplicationAndServletInitializer.java +++ b/spring-mvc-basics-2/src/main/java/com/baeldung/contexts/config/SecureAnnotationsBasedApplicationAndServletInitializer.java @@ -2,7 +2,6 @@ package com.baeldung.contexts.config; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; -import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer; public class SecureAnnotationsBasedApplicationAndServletInitializer// extends AbstractDispatcherServletInitializer { diff --git a/spring-all/src/main/java/com/baeldung/contexts/config/SecureWebAppConfig.java b/spring-mvc-basics-2/src/main/java/com/baeldung/contexts/config/SecureWebAppConfig.java similarity index 100% rename from spring-all/src/main/java/com/baeldung/contexts/config/SecureWebAppConfig.java rename to spring-mvc-basics-2/src/main/java/com/baeldung/contexts/config/SecureWebAppConfig.java diff --git a/spring-all/src/main/java/com/baeldung/contexts/normal/HelloWorldController.java b/spring-mvc-basics-2/src/main/java/com/baeldung/contexts/normal/HelloWorldController.java similarity index 100% rename from spring-all/src/main/java/com/baeldung/contexts/normal/HelloWorldController.java rename to spring-mvc-basics-2/src/main/java/com/baeldung/contexts/normal/HelloWorldController.java diff --git a/spring-all/src/main/java/com/baeldung/contexts/secure/HelloWorldSecureController.java b/spring-mvc-basics-2/src/main/java/com/baeldung/contexts/secure/HelloWorldSecureController.java similarity index 100% rename from spring-all/src/main/java/com/baeldung/contexts/secure/HelloWorldSecureController.java rename to spring-mvc-basics-2/src/main/java/com/baeldung/contexts/secure/HelloWorldSecureController.java diff --git a/spring-all/src/main/java/com/baeldung/contexts/services/ApplicationContextUtilService.java b/spring-mvc-basics-2/src/main/java/com/baeldung/contexts/services/ApplicationContextUtilService.java similarity index 100% rename from spring-all/src/main/java/com/baeldung/contexts/services/ApplicationContextUtilService.java rename to spring-mvc-basics-2/src/main/java/com/baeldung/contexts/services/ApplicationContextUtilService.java diff --git a/spring-all/src/main/java/com/baeldung/contexts/services/GreeterService.java b/spring-mvc-basics-2/src/main/java/com/baeldung/contexts/services/GreeterService.java similarity index 100% rename from spring-all/src/main/java/com/baeldung/contexts/services/GreeterService.java rename to spring-mvc-basics-2/src/main/java/com/baeldung/contexts/services/GreeterService.java diff --git a/spring-all/src/main/java/org/baeldung/controller/config/StudentControllerConfig.java b/spring-mvc-basics-2/src/main/java/org/baeldung/controller/config/StudentControllerConfig.java similarity index 77% rename from spring-all/src/main/java/org/baeldung/controller/config/StudentControllerConfig.java rename to spring-mvc-basics-2/src/main/java/org/baeldung/controller/config/StudentControllerConfig.java index 85305e057f..218418ecc8 100644 --- a/spring-all/src/main/java/org/baeldung/controller/config/StudentControllerConfig.java +++ b/spring-mvc-basics-2/src/main/java/org/baeldung/controller/config/StudentControllerConfig.java @@ -1,32 +1,28 @@ -package org.baeldung.controller.config; - -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRegistration; - -import org.springframework.context.support.GenericApplicationContext; -import org.springframework.web.WebApplicationInitializer; -import org.springframework.web.context.ContextLoaderListener; -import org.springframework.web.context.WebApplicationContext; -import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; -import org.springframework.web.context.support.GenericWebApplicationContext; -import org.springframework.web.servlet.DispatcherServlet; - -public class StudentControllerConfig //implements WebApplicationInitializer -{ - - //uncomment to run the student controller example - //@Override - public void onStartup(ServletContext sc) throws ServletException { - AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext(); - root.register(WebConfig.class); - root.setServletContext(sc); - sc.addListener(new ContextLoaderListener(root)); - - DispatcherServlet dv = new DispatcherServlet(root); - - ServletRegistration.Dynamic appServlet = sc.addServlet("test-mvc", dv); - appServlet.setLoadOnStartup(1); - appServlet.addMapping("/test/*"); - } -} +package org.baeldung.controller.config; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; + +import org.springframework.web.context.ContextLoaderListener; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; + +public class StudentControllerConfig //implements WebApplicationInitializer +{ + + //uncomment to run the student controller example + //@Override + public void onStartup(ServletContext sc) throws ServletException { + AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext(); + root.register(WebConfig.class); + root.setServletContext(sc); + sc.addListener(new ContextLoaderListener(root)); + + DispatcherServlet dv = new DispatcherServlet(root); + + ServletRegistration.Dynamic appServlet = sc.addServlet("test-mvc", dv); + appServlet.setLoadOnStartup(1); + appServlet.addMapping("/test/*"); + } +} diff --git a/spring-all/src/main/java/org/baeldung/controller/config/WebConfig.java b/spring-mvc-basics-2/src/main/java/org/baeldung/controller/config/WebConfig.java similarity index 97% rename from spring-all/src/main/java/org/baeldung/controller/config/WebConfig.java rename to spring-mvc-basics-2/src/main/java/org/baeldung/controller/config/WebConfig.java index a17210f3b8..485c1d9032 100644 --- a/spring-all/src/main/java/org/baeldung/controller/config/WebConfig.java +++ b/spring-mvc-basics-2/src/main/java/org/baeldung/controller/config/WebConfig.java @@ -1,28 +1,28 @@ -package org.baeldung.controller.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.ViewResolver; -import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import org.springframework.web.servlet.view.InternalResourceViewResolver; - -@Configuration -@EnableWebMvc -@ComponentScan(basePackages = { "org.baeldung.controller.controller", "org.baeldung.controller.config" }) -public class WebConfig implements WebMvcConfigurer { - @Override - public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { - configurer.enable(); - } - - @Bean - public ViewResolver viewResolver() { - InternalResourceViewResolver bean = new InternalResourceViewResolver(); - bean.setPrefix("/WEB-INF/"); - bean.setSuffix(".jsp"); - return bean; - } +package org.baeldung.controller.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.ViewResolver; +import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.web.servlet.view.InternalResourceViewResolver; + +@Configuration +@EnableWebMvc +@ComponentScan(basePackages = { "org.baeldung.controller.controller", "org.baeldung.controller.config" }) +public class WebConfig implements WebMvcConfigurer { + @Override + public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { + configurer.enable(); + } + + @Bean + public ViewResolver viewResolver() { + InternalResourceViewResolver bean = new InternalResourceViewResolver(); + bean.setPrefix("/WEB-INF/"); + bean.setSuffix(".jsp"); + return bean; + } } \ No newline at end of file diff --git a/spring-all/src/main/java/org/baeldung/controller/controller/PassParametersController.java b/spring-mvc-basics-2/src/main/java/org/baeldung/controller/controller/PassParametersController.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/controller/controller/PassParametersController.java rename to spring-mvc-basics-2/src/main/java/org/baeldung/controller/controller/PassParametersController.java diff --git a/spring-all/src/main/java/org/baeldung/controller/controller/RestAnnotatedController.java b/spring-mvc-basics-2/src/main/java/org/baeldung/controller/controller/RestAnnotatedController.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/controller/controller/RestAnnotatedController.java rename to spring-mvc-basics-2/src/main/java/org/baeldung/controller/controller/RestAnnotatedController.java diff --git a/spring-all/src/main/java/org/baeldung/controller/controller/RestController.java b/spring-mvc-basics-2/src/main/java/org/baeldung/controller/controller/RestController.java similarity index 86% rename from spring-all/src/main/java/org/baeldung/controller/controller/RestController.java rename to spring-mvc-basics-2/src/main/java/org/baeldung/controller/controller/RestController.java index 4b38b4dd34..4e5d1d9e17 100644 --- a/spring-all/src/main/java/org/baeldung/controller/controller/RestController.java +++ b/spring-mvc-basics-2/src/main/java/org/baeldung/controller/controller/RestController.java @@ -10,7 +10,8 @@ import org.springframework.web.bind.annotation.ResponseBody; public class RestController { @GetMapping(value = "/student/{studentId}") - public @ResponseBody Student getTestData(@PathVariable Integer studentId) { + public @ResponseBody + Student getTestData(@PathVariable Integer studentId) { Student student = new Student(); student.setName("Peter"); student.setId(studentId); diff --git a/spring-all/src/main/java/org/baeldung/controller/controller/TestController.java b/spring-mvc-basics-2/src/main/java/org/baeldung/controller/controller/TestController.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/controller/controller/TestController.java rename to spring-mvc-basics-2/src/main/java/org/baeldung/controller/controller/TestController.java diff --git a/spring-all/src/main/java/org/baeldung/controller/student/Student.java b/spring-mvc-basics-2/src/main/java/org/baeldung/controller/student/Student.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/controller/student/Student.java rename to spring-mvc-basics-2/src/main/java/org/baeldung/controller/student/Student.java diff --git a/spring-mvc-basics-2/src/main/resources/application.properties b/spring-mvc-basics-2/src/main/resources/application.properties new file mode 100644 index 0000000000..709574239b --- /dev/null +++ b/spring-mvc-basics-2/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.main.allow-bean-definition-overriding=true \ No newline at end of file diff --git a/spring-mvc-basics-2/src/main/resources/logback.xml b/spring-mvc-basics-2/src/main/resources/logback.xml new file mode 100644 index 0000000000..7d900d8ea8 --- /dev/null +++ b/spring-mvc-basics-2/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-mvc-basics-2/src/main/resources/test-mvc.xml b/spring-mvc-basics-2/src/main/resources/test-mvc.xml new file mode 100644 index 0000000000..8013170379 --- /dev/null +++ b/spring-mvc-basics-2/src/main/resources/test-mvc.xml @@ -0,0 +1,24 @@ + + + + + + + + /WEB-INF/ + + + .jsp + + + \ No newline at end of file diff --git a/spring-mvc-basics-2/src/main/webapp/WEB-INF/greeting.xml b/spring-mvc-basics-2/src/main/webapp/WEB-INF/greeting.xml new file mode 100644 index 0000000000..1ad5484d80 --- /dev/null +++ b/spring-mvc-basics-2/src/main/webapp/WEB-INF/greeting.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/spring-all/src/main/webapp/WEB-INF/index.jsp b/spring-mvc-basics-2/src/main/webapp/WEB-INF/index.jsp similarity index 100% rename from spring-all/src/main/webapp/WEB-INF/index.jsp rename to spring-mvc-basics-2/src/main/webapp/WEB-INF/index.jsp diff --git a/spring-mvc-basics-2/src/main/webapp/WEB-INF/normal-webapp-servlet.xml b/spring-mvc-basics-2/src/main/webapp/WEB-INF/normal-webapp-servlet.xml new file mode 100644 index 0000000000..8addbe3cf3 --- /dev/null +++ b/spring-mvc-basics-2/src/main/webapp/WEB-INF/normal-webapp-servlet.xml @@ -0,0 +1,16 @@ + + + + + + + + + + \ No newline at end of file diff --git a/spring-mvc-basics-2/src/main/webapp/WEB-INF/rootApplicationContext.xml b/spring-mvc-basics-2/src/main/webapp/WEB-INF/rootApplicationContext.xml new file mode 100644 index 0000000000..12e5d8f161 --- /dev/null +++ b/spring-mvc-basics-2/src/main/webapp/WEB-INF/rootApplicationContext.xml @@ -0,0 +1,14 @@ + + + + + + + + \ No newline at end of file diff --git a/spring-mvc-basics-2/src/main/webapp/WEB-INF/secure-webapp-servlet.xml b/spring-mvc-basics-2/src/main/webapp/WEB-INF/secure-webapp-servlet.xml new file mode 100644 index 0000000000..86797ad081 --- /dev/null +++ b/spring-mvc-basics-2/src/main/webapp/WEB-INF/secure-webapp-servlet.xml @@ -0,0 +1,16 @@ + + + + + + + + + + \ No newline at end of file diff --git a/spring-all/src/main/webapp/WEB-INF/secure/view/welcome.jsp b/spring-mvc-basics-2/src/main/webapp/WEB-INF/secure/view/welcome.jsp similarity index 100% rename from spring-all/src/main/webapp/WEB-INF/secure/view/welcome.jsp rename to spring-mvc-basics-2/src/main/webapp/WEB-INF/secure/view/welcome.jsp diff --git a/spring-mvc-basics-2/src/main/webapp/WEB-INF/view/sample.jsp b/spring-mvc-basics-2/src/main/webapp/WEB-INF/view/sample.jsp new file mode 100644 index 0000000000..4c64bf97f2 --- /dev/null +++ b/spring-mvc-basics-2/src/main/webapp/WEB-INF/view/sample.jsp @@ -0,0 +1,7 @@ + + + + +

This is the body of the sample view

+ + \ No newline at end of file diff --git a/spring-mvc-basics-2/src/main/webapp/WEB-INF/view/scopesExample.jsp b/spring-mvc-basics-2/src/main/webapp/WEB-INF/view/scopesExample.jsp new file mode 100644 index 0000000000..e9abcf194c --- /dev/null +++ b/spring-mvc-basics-2/src/main/webapp/WEB-INF/view/scopesExample.jsp @@ -0,0 +1,10 @@ + + + + +

Bean Scopes Examples

+
Previous Message: ${previousMessage } +
Current Message: ${currentMessage } +
+ + \ No newline at end of file diff --git a/spring-all/src/main/webapp/WEB-INF/view/viewPage.html b/spring-mvc-basics-2/src/main/webapp/WEB-INF/view/viewPage.html similarity index 100% rename from spring-all/src/main/webapp/WEB-INF/view/viewPage.html rename to spring-mvc-basics-2/src/main/webapp/WEB-INF/view/viewPage.html diff --git a/spring-mvc-basics-2/src/main/webapp/WEB-INF/view/welcome.jsp b/spring-mvc-basics-2/src/main/webapp/WEB-INF/view/welcome.jsp new file mode 100644 index 0000000000..4eda3c58e2 --- /dev/null +++ b/spring-mvc-basics-2/src/main/webapp/WEB-INF/view/welcome.jsp @@ -0,0 +1,11 @@ + + + Spring Web Contexts + + +
+
+ Normal Web Application : ${message} +
+ + \ No newline at end of file diff --git a/spring-all/src/main/webapp/WEB-INF/web-old.xml b/spring-mvc-basics-2/src/main/webapp/WEB-INF/web-old.xml similarity index 94% rename from spring-all/src/main/webapp/WEB-INF/web-old.xml rename to spring-mvc-basics-2/src/main/webapp/WEB-INF/web-old.xml index 42020e75c4..03322279e2 100644 --- a/spring-all/src/main/webapp/WEB-INF/web-old.xml +++ b/spring-mvc-basics-2/src/main/webapp/WEB-INF/web-old.xml @@ -15,10 +15,10 @@ org.springframework.web.context.ContextLoaderListener --> - + - + - + + org.baeldung.boot.Application + 3.1.1 + 3.3.7-1 + 2.2 + 18.0 + 3.1.7 + 2.0.2.RELEASE + 4.5.8 - - - - org.apache.maven.plugins - maven-war-plugin - - - spring-mvc-simple2 - diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/Application.java b/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/Application.java new file mode 100644 index 0000000000..4fb6938694 --- /dev/null +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/Application.java @@ -0,0 +1,17 @@ +package com.baeldung.exclude_urls_filter; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@ComponentScan(basePackages = "com.baeldung.exclude_urls_filter") +@Configuration +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/controller/FAQController.java b/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/controller/FAQController.java new file mode 100644 index 0000000000..1463af6bfd --- /dev/null +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/controller/FAQController.java @@ -0,0 +1,32 @@ +package com.baeldung.exclude_urls_filter.controller; + +import com.baeldung.exclude_urls_filter.service.FAQService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class FAQController { + + private final FAQService faqService; + + @Autowired + public FAQController(FAQService faqService) { + this.faqService = faqService; + } + + @RequestMapping(value = "/faq/helpline", method = RequestMethod.GET) + public ResponseEntity getHelpLineNumber() { + String helplineNumber = faqService.getHelpLineNumber(); + if (helplineNumber != null) { + return new ResponseEntity(helplineNumber, HttpStatus.OK); + } else { + return new ResponseEntity("Unavailable", HttpStatus.NOT_FOUND); + } + } + + +} diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/controller/Ping.java b/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/controller/Ping.java new file mode 100644 index 0000000000..c8a0723ba6 --- /dev/null +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/controller/Ping.java @@ -0,0 +1,22 @@ +package com.baeldung.exclude_urls_filter.controller; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class Ping { + + @RequestMapping(value = "/health", method = RequestMethod.GET) + public ResponseEntity pingGet() { + return new ResponseEntity("pong", HttpStatus.OK); + } + + @RequestMapping(value = "/health", method = RequestMethod.POST) + public ResponseEntity pingPost() { + return new ResponseEntity("pong", HttpStatus.OK); + } + +} diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/filter/FilterRegistrationConfig.java b/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/filter/FilterRegistrationConfig.java new file mode 100644 index 0000000000..ff99b4cc25 --- /dev/null +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/filter/FilterRegistrationConfig.java @@ -0,0 +1,26 @@ +package com.baeldung.exclude_urls_filter.filter; + +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class FilterRegistrationConfig { + + @Bean + public FilterRegistrationBean logFilter() { + FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); + registrationBean.setFilter(new LogFilter()); + registrationBean.addUrlPatterns("/health", "/faq/*"); + return registrationBean; + } + + + @Bean + public FilterRegistrationBean headerValidatorFilter() { + FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); + registrationBean.setFilter(new HeaderValidatorFilter()); + registrationBean.addUrlPatterns("*"); + return registrationBean; + } +} \ No newline at end of file diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/filter/HeaderValidatorFilter.java b/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/filter/HeaderValidatorFilter.java new file mode 100644 index 0000000000..2af90badae --- /dev/null +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/filter/HeaderValidatorFilter.java @@ -0,0 +1,30 @@ +package com.baeldung.exclude_urls_filter.filter; + +import org.springframework.core.annotation.Order; +import org.springframework.http.HttpStatus; +import org.springframework.web.filter.OncePerRequestFilter; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@Order(1) +public class HeaderValidatorFilter extends OncePerRequestFilter { + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) + throws ServletException, IOException { + String path = request.getRequestURI(); + if ("/health".equals(path)) { + filterChain.doFilter(request, response); + return; + } + String countryCode = request.getHeader("X-Country-Code"); + if (!"US".equals(countryCode)) { + response.sendError(HttpStatus.BAD_REQUEST.value(), "Invalid Locale"); + return; + } + + filterChain.doFilter(request, response); + } +} \ No newline at end of file diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/filter/LogFilter.java b/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/filter/LogFilter.java new file mode 100644 index 0000000000..fcde4f7f8f --- /dev/null +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/filter/LogFilter.java @@ -0,0 +1,25 @@ +package com.baeldung.exclude_urls_filter.filter; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.annotation.Order; +import org.springframework.web.filter.OncePerRequestFilter; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@Order(1) +public class LogFilter extends OncePerRequestFilter { + private final Logger logger = LoggerFactory.getLogger(LogFilter.class); + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, + FilterChain filterChain) throws ServletException, IOException { + String path = request.getRequestURI(); + String contentType = request.getContentType(); + logger.info("Request URL path : {}, Request content type: {}", path, contentType); + filterChain.doFilter(request, response); + } +} \ No newline at end of file diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/service/FAQService.java b/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/service/FAQService.java new file mode 100644 index 0000000000..a2949ea0a2 --- /dev/null +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/service/FAQService.java @@ -0,0 +1,5 @@ +package com.baeldung.exclude_urls_filter.service; + +public interface FAQService { + String getHelpLineNumber(); +} \ No newline at end of file diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/service/FAQServiceImpl.java b/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/service/FAQServiceImpl.java new file mode 100644 index 0000000000..6f841e4ec1 --- /dev/null +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/exclude_urls_filter/service/FAQServiceImpl.java @@ -0,0 +1,15 @@ +package com.baeldung.exclude_urls_filter.service; + +import org.springframework.stereotype.Service; + +@Service +public class FAQServiceImpl implements FAQService { + + private static final String HELPLINE_NUMBER = "+1 888-777-66"; + + @Override + public String getHelpLineNumber() { + return HELPLINE_NUMBER; + } + +} diff --git a/spring-mvc-simple-2/src/main/java/com/baeldung/spring/config/MvcConfig.java b/spring-mvc-simple-2/src/main/java/com/baeldung/spring/config/MvcConfig.java new file mode 100644 index 0000000000..ad99e8169b --- /dev/null +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/spring/config/MvcConfig.java @@ -0,0 +1,22 @@ +package com.baeldung.spring.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.format.FormatterRegistry; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import com.baeldung.spring.config.converter.StringToEnumConverter; + +@Configuration +@EnableWebMvc +public class MvcConfig implements WebMvcConfigurer { + + public MvcConfig() { + super(); + } + + @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-mvc-simple-2/src/main/java/com/baeldung/spring/config/converter/StringToEnumConverter.java similarity index 86% rename from spring-rest-simple/src/main/java/com/baeldung/config/converter/StringToEnumConverter.java rename to spring-mvc-simple-2/src/main/java/com/baeldung/spring/config/converter/StringToEnumConverter.java index 349ee5a796..b481f691bf 100644 --- a/spring-rest-simple/src/main/java/com/baeldung/config/converter/StringToEnumConverter.java +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/spring/config/converter/StringToEnumConverter.java @@ -1,9 +1,9 @@ -package com.baeldung.config.converter; +package com.baeldung.spring.config.converter; import org.springframework.core.convert.converter.Converter; import org.springframework.stereotype.Component; -import com.baeldung.model.Modes; +import com.baeldung.spring.model.Modes; @Component public class StringToEnumConverter implements Converter { diff --git a/spring-rest-simple/src/main/java/com/baeldung/cors/EnumController.java b/spring-mvc-simple-2/src/main/java/com/baeldung/spring/enums/EnumController.java similarity index 81% rename from spring-rest-simple/src/main/java/com/baeldung/cors/EnumController.java rename to spring-mvc-simple-2/src/main/java/com/baeldung/spring/enums/EnumController.java index 34ce4d3927..356e751d5e 100644 --- a/spring-rest-simple/src/main/java/com/baeldung/cors/EnumController.java +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/spring/enums/EnumController.java @@ -1,15 +1,13 @@ -package com.baeldung.cors; +package com.baeldung.spring.enums; -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; +import com.baeldung.spring.model.Modes; -@CrossOrigin(maxAge = 3600) @RestController @RequestMapping("/enums") public class EnumController { diff --git a/spring-rest-simple/src/main/java/com/baeldung/exceptions/GlobalControllerExceptionHandler.java b/spring-mvc-simple-2/src/main/java/com/baeldung/spring/exceptions/GlobalControllerExceptionHandler.java similarity index 94% rename from spring-rest-simple/src/main/java/com/baeldung/exceptions/GlobalControllerExceptionHandler.java rename to spring-mvc-simple-2/src/main/java/com/baeldung/spring/exceptions/GlobalControllerExceptionHandler.java index 78fbcf97dd..2e0f1b6559 100644 --- a/spring-rest-simple/src/main/java/com/baeldung/exceptions/GlobalControllerExceptionHandler.java +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/spring/exceptions/GlobalControllerExceptionHandler.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptions; +package com.baeldung.spring.exceptions; import org.springframework.core.convert.ConversionFailedException; import org.springframework.http.HttpStatus; diff --git a/spring-rest-simple/src/main/java/com/baeldung/model/Modes.java b/spring-mvc-simple-2/src/main/java/com/baeldung/spring/model/Modes.java similarity index 53% rename from spring-rest-simple/src/main/java/com/baeldung/model/Modes.java rename to spring-mvc-simple-2/src/main/java/com/baeldung/spring/model/Modes.java index d3a1ab4a61..dc05448f3f 100644 --- a/spring-rest-simple/src/main/java/com/baeldung/model/Modes.java +++ b/spring-mvc-simple-2/src/main/java/com/baeldung/spring/model/Modes.java @@ -1,4 +1,4 @@ -package com.baeldung.model; +package com.baeldung.spring.model; public enum Modes { ALPHA, BETA; diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/Application.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/Application.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/Application.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/Application.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/config/WebConfig.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/config/WebConfig.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/config/WebConfig.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/config/WebConfig.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/controller/GenericEntityController.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/controller/GenericEntityController.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/controller/GenericEntityController.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/controller/GenericEntityController.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/converter/GenericBigDecimalConverter.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/converter/GenericBigDecimalConverter.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/converter/GenericBigDecimalConverter.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/converter/GenericBigDecimalConverter.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/converter/StringToAbstractEntityConverterFactory.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/converter/StringToAbstractEntityConverterFactory.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/converter/StringToAbstractEntityConverterFactory.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/converter/StringToAbstractEntityConverterFactory.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/converter/StringToEmployeeConverter.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/converter/StringToEmployeeConverter.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/converter/StringToEmployeeConverter.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/converter/StringToEmployeeConverter.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/converter/StringToEnumConverter.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/converter/StringToEnumConverter.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/converter/StringToEnumConverter.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/converter/StringToEnumConverter.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/converter/StringToLocalDateTimeConverter.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/converter/StringToLocalDateTimeConverter.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/converter/StringToLocalDateTimeConverter.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/converter/StringToLocalDateTimeConverter.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/converter/controller/AbstractEntityController.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/converter/controller/AbstractEntityController.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/converter/controller/AbstractEntityController.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/converter/controller/AbstractEntityController.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/converter/controller/StringToEmployeeConverterController.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/converter/controller/StringToEmployeeConverterController.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/converter/controller/StringToEmployeeConverterController.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/converter/controller/StringToEmployeeConverterController.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/domain/AbstractEntity.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/domain/AbstractEntity.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/domain/AbstractEntity.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/domain/AbstractEntity.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/domain/Bar.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/domain/Bar.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/domain/Bar.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/domain/Bar.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/domain/Employee.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/domain/Employee.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/domain/Employee.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/domain/Employee.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/domain/Foo.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/domain/Foo.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/domain/Foo.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/domain/Foo.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/domain/GenericEntity.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/domain/GenericEntity.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/domain/GenericEntity.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/domain/GenericEntity.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/domain/Modes.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/domain/Modes.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/domain/Modes.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/domain/Modes.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/repository/GenericEntityRepository.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/repository/GenericEntityRepository.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/repository/GenericEntityRepository.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/repository/GenericEntityRepository.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/web/resolver/HeaderVersionArgumentResolver.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/web/resolver/HeaderVersionArgumentResolver.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/web/resolver/HeaderVersionArgumentResolver.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/web/resolver/HeaderVersionArgumentResolver.java diff --git a/spring-boot-ops/src/main/java/org/baeldung/boot/web/resolver/Version.java b/spring-mvc-simple-2/src/main/java/org/baeldung/boot/web/resolver/Version.java similarity index 100% rename from spring-boot-ops/src/main/java/org/baeldung/boot/web/resolver/Version.java rename to spring-mvc-simple-2/src/main/java/org/baeldung/boot/web/resolver/Version.java diff --git a/spring-mvc-simple-2/src/main/resources/application.properties b/spring-mvc-simple-2/src/main/resources/application.properties new file mode 100644 index 0000000000..709574239b --- /dev/null +++ b/spring-mvc-simple-2/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.main.allow-bean-definition-overriding=true \ No newline at end of file diff --git a/spring-boot-ops/src/test/java/org/baeldung/SpringBootApplicationIntegrationTest.java b/spring-mvc-simple-2/src/test/java/com/baeldung/SpringBootApplicationIntegrationTest.java similarity index 99% rename from spring-boot-ops/src/test/java/org/baeldung/SpringBootApplicationIntegrationTest.java rename to spring-mvc-simple-2/src/test/java/com/baeldung/SpringBootApplicationIntegrationTest.java index 5627543b62..7190c4f427 100644 --- a/spring-boot-ops/src/test/java/org/baeldung/SpringBootApplicationIntegrationTest.java +++ b/spring-mvc-simple-2/src/test/java/com/baeldung/SpringBootApplicationIntegrationTest.java @@ -1,4 +1,4 @@ -package org.baeldung; +package com.baeldung; import org.baeldung.boot.Application; import org.baeldung.boot.domain.Modes; diff --git a/spring-boot-ops/src/test/java/org/baeldung/SpringBootJPAIntegrationTest.java b/spring-mvc-simple-2/src/test/java/com/baeldung/SpringBootJPAIntegrationTest.java similarity index 98% rename from spring-boot-ops/src/test/java/org/baeldung/SpringBootJPAIntegrationTest.java rename to spring-mvc-simple-2/src/test/java/com/baeldung/SpringBootJPAIntegrationTest.java index c368cf5219..c283529435 100644 --- a/spring-boot-ops/src/test/java/org/baeldung/SpringBootJPAIntegrationTest.java +++ b/spring-mvc-simple-2/src/test/java/com/baeldung/SpringBootJPAIntegrationTest.java @@ -1,4 +1,4 @@ -package org.baeldung; +package com.baeldung; import org.baeldung.boot.Application; import org.baeldung.boot.domain.GenericEntity; diff --git a/spring-boot-ops/src/test/java/org/baeldung/SpringBootMailIntegrationTest.java b/spring-mvc-simple-2/src/test/java/com/baeldung/SpringBootMailIntegrationTest.java similarity index 99% rename from spring-boot-ops/src/test/java/org/baeldung/SpringBootMailIntegrationTest.java rename to spring-mvc-simple-2/src/test/java/com/baeldung/SpringBootMailIntegrationTest.java index a6a84184fa..1a2a4e22d9 100644 --- a/spring-boot-ops/src/test/java/org/baeldung/SpringBootMailIntegrationTest.java +++ b/spring-mvc-simple-2/src/test/java/com/baeldung/SpringBootMailIntegrationTest.java @@ -1,4 +1,4 @@ -package org.baeldung; +package com.baeldung; import org.baeldung.boot.Application; import org.junit.After; diff --git a/spring-mvc-simple/README.md b/spring-mvc-simple/README.md index 755e0932fc..ae03fedf3c 100644 --- a/spring-mvc-simple/README.md +++ b/spring-mvc-simple/README.md @@ -1,10 +1,15 @@ +## Spring MVC Simple + +This module contains articles about Spring MVC + ## Relevant articles: -- [HandlerAdapters in Spring MVC](http://www.baeldung.com/spring-mvc-handler-adapters) -- [Template Engines for Spring](http://www.baeldung.com/spring-template-engines) -- [Spring 5 and Servlet 4 – The PushBuilder](http://www.baeldung.com/spring-5-push) -- [Servlet Redirect vs Forward](http://www.baeldung.com/servlet-redirect-forward) -- [Apache Tiles Integration with Spring MVC](http://www.baeldung.com/spring-mvc-apache-tiles) -- [Guide to Spring Email](http://www.baeldung.com/spring-email) +- [HandlerAdapters in Spring MVC](https://www.baeldung.com/spring-mvc-handler-adapters) +- [Template Engines for Spring](https://www.baeldung.com/spring-template-engines) +- [Spring 5 and Servlet 4 – The PushBuilder](https://www.baeldung.com/spring-5-push) +- [Servlet Redirect vs Forward](https://www.baeldung.com/servlet-redirect-forward) +- [Apache Tiles Integration with Spring MVC](https://www.baeldung.com/spring-mvc-apache-tiles) +- [Guide to Spring Email](https://www.baeldung.com/spring-email) - [Request Method Not Supported (405) in Spring](https://www.baeldung.com/spring-request-method-not-supported-405) - [Spring @RequestParam Annotation](https://www.baeldung.com/spring-request-param) +- More articles: [[more -->]](/spring-mvc-simple-2) \ No newline at end of file diff --git a/spring-mvc-velocity/README.md b/spring-mvc-velocity/README.md index 401e135f75..99c4c032de 100644 --- a/spring-mvc-velocity/README.md +++ b/spring-mvc-velocity/README.md @@ -1,2 +1,6 @@ +## Spring MVC Velocity + +This module contains articles about Spring MVC with Velocity + ### Relevant Articles: -- [Quick Guide to Spring MVC with Velocity](http://www.baeldung.com/spring-mvc-with-velocity) +- [Quick Guide to Spring MVC with Velocity](https://www.baeldung.com/spring-mvc-with-velocity) diff --git a/spring-mvc-webflow/README.md b/spring-mvc-webflow/README.md index 2df4716e31..f89b97963e 100644 --- a/spring-mvc-webflow/README.md +++ b/spring-mvc-webflow/README.md @@ -1,9 +1,7 @@ -========= +## Spring MVC WebFlow -## Spring MVC with Spring Web Flow - -###The Course +This module contains articles about Spring MVC Web Flow ### Relevant Articles: -- -- [Guide to Spring Web Flow](http://www.baeldung.com/spring-web-flow) + +- [Guide to Spring Web Flow](https://www.baeldung.com/spring-web-flow) diff --git a/spring-mvc-xml/README.md b/spring-mvc-xml/README.md index c8ec074d17..b6a34475ea 100644 --- a/spring-mvc-xml/README.md +++ b/spring-mvc-xml/README.md @@ -1,18 +1,19 @@ -========= +## Spring MVC XML + +This module contains articles about Spring MVC with XML configuration ###The Course The "REST With Spring" Classes: http://bit.ly/restwithspring +### Relevant Articles: +- [Java Session Timeout](https://www.baeldung.com/servlet-session-timeout) +- [Returning Image/Media Data with Spring MVC](https://www.baeldung.com/spring-mvc-image-media-data) +- [Geolocation by IP in Java](https://www.baeldung.com/geolocation-by-ip-with-maxmind) +- [Guide to JavaServer Pages (JSP)](https://www.baeldung.com/jsp) +- [Exploring SpringMVC’s Form Tag Library](https://www.baeldung.com/spring-mvc-form-tags) +- [web.xml vs Initializer with Spring](https://www.baeldung.com/spring-xml-vs-java-config) +- [A Java Web Application Without a web.xml](https://www.baeldung.com/java-web-app-without-web-xml) +- [Validating RequestParams and PathVariables in Spring](https://www.baeldung.com/spring-validate-requestparam-pathvariable) + ## Spring MVC with XML Configuration Example Project - access a sample jsp page at: `http://localhost:8080/spring-mvc-xml/sample.html` - - -### Relevant Articles: -- [Java Session Timeout](http://www.baeldung.com/servlet-session-timeout) -- [Returning Image/Media Data with Spring MVC](http://www.baeldung.com/spring-mvc-image-media-data) -- [Geolocation by IP in Java](http://www.baeldung.com/geolocation-by-ip-with-maxmind) -- [Guide to JavaServer Pages (JSP)](http://www.baeldung.com/jsp) -- [Exploring SpringMVC’s Form Tag Library](http://www.baeldung.com/spring-mvc-form-tags) -- [web.xml vs Initializer with Spring](http://www.baeldung.com/spring-xml-vs-java-config) -- [A Java Web Application Without a web.xml](https://www.baeldung.com/java-web-app-without-web-xml) -- [Validating RequestParams and PathVariables in Spring](https://www.baeldung.com/spring-validate-requestparam-pathvariable) \ No newline at end of file diff --git a/spring-protobuf/README.md b/spring-protobuf/README.md index dad0e3f54a..37f35808e1 100644 --- a/spring-protobuf/README.md +++ b/spring-protobuf/README.md @@ -1,2 +1,6 @@ +## Spring Protocol Buffers + +This module contains articles about Spring with Protocol Buffers + ### Relevant Articles: -- [Spring REST API with Protocol Buffers](http://www.baeldung.com/spring-rest-api-with-protocol-buffers) +- [Spring REST API with Protocol Buffers](https://www.baeldung.com/spring-rest-api-with-protocol-buffers) diff --git a/spring-quartz/README.md b/spring-quartz/README.md index 5d32e65053..d9257066d4 100644 --- a/spring-quartz/README.md +++ b/spring-quartz/README.md @@ -1,26 +1,25 @@ -========================================================================= +## Spring Quartz -## Scheduling in Spring with Quartz Example Project -This is the first example where we configure a basic scheduler. -##### Spring boot application, Main class -### -``` -org.baeldung.springquartz.SpringQuartzApp -``` -###### - -##### Configuration in *application.properties* -#### - - - Default: configures scheduler using Spring convenience classes: - ``` - using.spring.schedulerFactory=true - ``` - - To configure scheduler using Quartz API: - ``` - using.spring.schedulerFactory=false - ``` +This module contains articles about Spring with Quartz ### Relevant Articles: -- [Scheduling in Spring with Quartz](http://www.baeldung.com/spring-quartz-schedule) +- [Scheduling in Spring with Quartz](https://www.baeldung.com/spring-quartz-schedule) + +## #Scheduling in Spring with Quartz Example Project +This is the first example where we configure a basic scheduler. + +##### Spring boot application, Main class + + +`org.baeldung.springquartz.SpringQuartzApp` + +##### Configuration in *application.properties* + + - Default: configures scheduler using Spring convenience classes: + + `using.spring.schedulerFactory=true` + + - To configure scheduler using Quartz API: + + `using.spring.schedulerFactory=false` diff --git a/spring-reactive-kotlin/README.md b/spring-reactive-kotlin/README.md index 46f4b580fd..629f7e7f58 100644 --- a/spring-reactive-kotlin/README.md +++ b/spring-reactive-kotlin/README.md @@ -3,4 +3,4 @@ This module contains articles about reactive Kotlin ### Relevant Articles: -- [Spring Webflux with Kotlin](http://www.baeldung.com/spring-webflux-kotlin) +- [Spring Webflux with Kotlin](https://www.baeldung.com/spring-webflux-kotlin) diff --git a/spring-reactor/README.md b/spring-reactor/README.md index e7d7eb927d..b92478f6fb 100644 --- a/spring-reactor/README.md +++ b/spring-reactor/README.md @@ -4,4 +4,4 @@ This module contains articles about Spring Reactor ## Relevant articles: -- [Introduction to Spring Reactor](http://www.baeldung.com/spring-reactor) +- [Introduction to Spring Reactor](https://www.baeldung.com/spring-reactor) diff --git a/spring-remoting/README.md b/spring-remoting/README.md index 247aa52db2..a98893ebcb 100644 --- a/spring-remoting/README.md +++ b/spring-remoting/README.md @@ -3,11 +3,11 @@ This module contains articles about Spring Remoting ### Relevant Articles -- [Intro to Spring Remoting with HTTP Invokers](http://www.baeldung.com/spring-remoting-http-invoker) -- [Spring Remoting with Hessian and Burlap](http://www.baeldung.com/spring-remoting-hessian-burlap) -- [Spring Remoting with AMQP](http://www.baeldung.com/spring-remoting-amqp) -- [Spring Remoting with JMS and ActiveMQ](http://www.baeldung.com/spring-remoting-jms) -- [Spring Remoting with RMI](http://www.baeldung.com/spring-remoting-rmi) +- [Intro to Spring Remoting with HTTP Invokers](https://www.baeldung.com/spring-remoting-http-invoker) +- [Spring Remoting with Hessian and Burlap](https://www.baeldung.com/spring-remoting-hessian-burlap) +- [Spring Remoting with AMQP](https://www.baeldung.com/spring-remoting-amqp) +- [Spring Remoting with JMS and ActiveMQ](https://www.baeldung.com/spring-remoting-jms) +- [Spring Remoting with RMI](https://www.baeldung.com/spring-remoting-rmi) ### Overview This Maven project contains the Java source code for various modules used in the Spring Remoting series of articles. diff --git a/spring-rest-angular/README.md b/spring-rest-angular/README.md index 5cd2570152..038160db9d 100644 --- a/spring-rest-angular/README.md +++ b/spring-rest-angular/README.md @@ -4,4 +4,4 @@ This module contains articles about REST APIs with Spring and Angular ### Relevant Articles: -- [Pagination with Spring REST and AngularJS table](http://www.baeldung.com/pagination-with-a-spring-rest-api-and-an-angularjs-table) +- [Pagination with Spring REST and AngularJS table](https://www.baeldung.com/pagination-with-a-spring-rest-api-and-an-angularjs-table) diff --git a/spring-rest-full/README.md b/spring-rest-full/README.md index a0e6e74179..a0ba8df27d 100644 --- a/spring-rest-full/README.md +++ b/spring-rest-full/README.md @@ -9,9 +9,9 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Articles: -- [Integration Testing with the Maven Cargo plugin](http://www.baeldung.com/integration-testing-with-the-maven-cargo-plugin) -- [Project Configuration with Spring](http://www.baeldung.com/project-configuration-with-spring) -- [Metrics for your Spring REST API](http://www.baeldung.com/spring-rest-api-metrics) +- [Integration Testing with the Maven Cargo plugin](https://www.baeldung.com/integration-testing-with-the-maven-cargo-plugin) +- [Project Configuration with Spring](https://www.baeldung.com/project-configuration-with-spring) +- [Metrics for your Spring REST API](https://www.baeldung.com/spring-rest-api-metrics) - [Spring Security Expressions - hasRole Example](https://www.baeldung.com/spring-security-expressions-basic) diff --git a/spring-rest-hal-browser/README.md b/spring-rest-hal-browser/README.md index 027937f116..90337aad1a 100644 --- a/spring-rest-hal-browser/README.md +++ b/spring-rest-hal-browser/README.md @@ -3,4 +3,4 @@ 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) +- [Spring REST and HAL Browser](https://www.baeldung.com/spring-rest-hal) diff --git a/spring-rest-query-language/README.md b/spring-rest-query-language/README.md index 383cecec36..4458fc93fb 100644 --- a/spring-rest-query-language/README.md +++ b/spring-rest-query-language/README.md @@ -10,12 +10,12 @@ The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Articles: -- [REST Query Language with Spring and JPA Criteria](http://www.baeldung.com/rest-search-language-spring-jpa-criteria) -- [REST Query Language with Spring Data JPA Specifications](http://www.baeldung.com/rest-api-search-language-spring-data-specifications) -- [REST Query Language with Spring Data JPA and QueryDSL](http://www.baeldung.com/rest-api-search-language-spring-data-querydsl) -- [REST Query Language – Advanced Search Operations](http://www.baeldung.com/rest-api-query-search-language-more-operations) -- [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) +- [REST Query Language with Spring and JPA Criteria](https://www.baeldung.com/rest-search-language-spring-jpa-criteria) +- [REST Query Language with Spring Data JPA Specifications](https://www.baeldung.com/rest-api-search-language-spring-data-specifications) +- [REST Query Language with Spring Data JPA and QueryDSL](https://www.baeldung.com/rest-api-search-language-spring-data-querydsl) +- [REST Query Language – Advanced Search Operations](https://www.baeldung.com/rest-api-query-search-language-more-operations) +- [REST Query Language with RSQL](https://www.baeldung.com/rest-api-search-language-rsql-fiql) +- [REST Query Language – Implementing OR Operation](https://www.baeldung.com/rest-api-query-search-or-operation) ### Build the Project ``` diff --git a/spring-rest-shell/README.md b/spring-rest-shell/README.md index 0b126e6b1c..3c04bb457e 100644 --- a/spring-rest-shell/README.md +++ b/spring-rest-shell/README.md @@ -4,4 +4,4 @@ This module contains articles about Spring REST Shell ### Relevant Articles -- [Introduction to Spring REST Shell](http://www.baeldung.com/spring-rest-shell) +- [Introduction to Spring REST Shell](https://www.baeldung.com/spring-rest-shell) diff --git a/spring-rest-simple/README.md b/spring-rest-simple/README.md index d60f57b227..1ad32bf120 100644 --- a/spring-rest-simple/README.md +++ b/spring-rest-simple/README.md @@ -4,9 +4,9 @@ This module contains articles about REST APIs in Spring ## Relevant articles: -- [Guide to UriComponentsBuilder in Spring](http://www.baeldung.com/spring-uricomponentsbuilder) -- [Returning Custom Status Codes from Spring Controllers](http://www.baeldung.com/spring-mvc-controller-custom-http-status-code) -- [Spring RequestMapping](http://www.baeldung.com/spring-requestmapping) -- [Spring and Apache FileUpload](http://www.baeldung.com/spring-apache-file-upload) -- [Test a REST API with curl](http://www.baeldung.com/curl-rest) +- [Guide to UriComponentsBuilder in Spring](https://www.baeldung.com/spring-uricomponentsbuilder) +- [Returning Custom Status Codes from Spring Controllers](https://www.baeldung.com/spring-mvc-controller-custom-http-status-code) +- [Spring RequestMapping](https://www.baeldung.com/spring-requestmapping) +- [Spring and Apache FileUpload](https://www.baeldung.com/spring-apache-file-upload) +- [Test a REST API with curl](https://www.baeldung.com/curl-rest) - [CORS with Spring](https://www.baeldung.com/spring-cors) 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 246049b722..48b627a344 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,7 +2,6 @@ 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; @@ -18,7 +17,6 @@ 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; @@ -73,9 +71,4 @@ 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/repository/BookRepository.java b/spring-rest-simple/src/main/java/com/baeldung/repository/BookRepository.java new file mode 100644 index 0000000000..239d74b19c --- /dev/null +++ b/spring-rest-simple/src/main/java/com/baeldung/repository/BookRepository.java @@ -0,0 +1,25 @@ +package com.baeldung.repository; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import org.springframework.stereotype.Repository; + +import com.baeldung.web.dto.Book; + +@Repository +public class BookRepository { + + private List books = new ArrayList<>(); + + public Optional findById(long id) { + return books.stream() + .filter(book -> book.getId() == id) + .findFirst(); + } + + public void add(Book book) { + books.add(book); + } +} diff --git a/spring-rest-simple/src/main/java/com/baeldung/web/controller/ApiExceptionHandler.java b/spring-rest-simple/src/main/java/com/baeldung/web/controller/ApiExceptionHandler.java new file mode 100644 index 0000000000..e7f0ac3510 --- /dev/null +++ b/spring-rest-simple/src/main/java/com/baeldung/web/controller/ApiExceptionHandler.java @@ -0,0 +1,22 @@ +package com.baeldung.web.controller; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +import com.baeldung.web.error.ApiErrorResponse; +import com.baeldung.web.error.BookNotFoundException; + +@RestControllerAdvice +public class ApiExceptionHandler { + + @ExceptionHandler(BookNotFoundException.class) + public ResponseEntity handleApiException( + BookNotFoundException ex) { + ApiErrorResponse response = + new ApiErrorResponse("error-0001", + "No book found with ID " + ex.getId()); + return new ResponseEntity<>(response, HttpStatus.NOT_FOUND); + } +} \ No newline at end of file diff --git a/spring-rest-simple/src/main/java/com/baeldung/web/controller/BookController.java b/spring-rest-simple/src/main/java/com/baeldung/web/controller/BookController.java new file mode 100644 index 0000000000..126b40517d --- /dev/null +++ b/spring-rest-simple/src/main/java/com/baeldung/web/controller/BookController.java @@ -0,0 +1,25 @@ +package com.baeldung.web.controller; + +import org.springframework.beans.factory.annotation.Autowired; +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.RestController; + +import com.baeldung.repository.BookRepository; +import com.baeldung.web.dto.Book; +import com.baeldung.web.error.BookNotFoundException; + +@RestController +@RequestMapping("/api/book") +public class BookController { + + @Autowired + private BookRepository repository; + + @GetMapping("/{id}") + public Book findById(@PathVariable long id) { + return repository.findById(id) + .orElseThrow(() -> new BookNotFoundException(id)); + } +} \ No newline at end of file diff --git a/spring-rest-simple/src/main/java/com/baeldung/web/dto/Book.java b/spring-rest-simple/src/main/java/com/baeldung/web/dto/Book.java new file mode 100644 index 0000000000..9ccd640319 --- /dev/null +++ b/spring-rest-simple/src/main/java/com/baeldung/web/dto/Book.java @@ -0,0 +1,32 @@ +package com.baeldung.web.dto; + +public class Book { + + private long id; + private String title; + private String author; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } +} \ No newline at end of file diff --git a/spring-rest-simple/src/main/java/com/baeldung/web/error/ApiErrorResponse.java b/spring-rest-simple/src/main/java/com/baeldung/web/error/ApiErrorResponse.java new file mode 100644 index 0000000000..a67a7a3f2f --- /dev/null +++ b/spring-rest-simple/src/main/java/com/baeldung/web/error/ApiErrorResponse.java @@ -0,0 +1,29 @@ +package com.baeldung.web.error; + +public class ApiErrorResponse { + + private String error; + private String message; + + public ApiErrorResponse(String error, String message) { + super(); + this.error = error; + this.message = message; + } + + public String getError() { + return error; + } + + public void setError(String error) { + this.error = error; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} \ No newline at end of file diff --git a/spring-rest-simple/src/main/java/com/baeldung/web/error/BookNotFoundException.java b/spring-rest-simple/src/main/java/com/baeldung/web/error/BookNotFoundException.java new file mode 100644 index 0000000000..ad93ef7f20 --- /dev/null +++ b/spring-rest-simple/src/main/java/com/baeldung/web/error/BookNotFoundException.java @@ -0,0 +1,19 @@ +package com.baeldung.web.error; + +@SuppressWarnings("serial") +public class BookNotFoundException extends RuntimeException { + + private long id; + + public BookNotFoundException(long id) { + this.id = id; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } +} \ No newline at end of file diff --git a/spring-rest-simple/src/test/java/com/baeldung/repository/BookRepositoryUnitTest.java b/spring-rest-simple/src/test/java/com/baeldung/repository/BookRepositoryUnitTest.java new file mode 100644 index 0000000000..dd64f302fe --- /dev/null +++ b/spring-rest-simple/src/test/java/com/baeldung/repository/BookRepositoryUnitTest.java @@ -0,0 +1,60 @@ +package com.baeldung.repository; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.Optional; + +import org.junit.Before; +import org.junit.Test; + +import com.baeldung.web.dto.Book; + +public class BookRepositoryUnitTest { + + private BookRepository repository; + + @Before + public void setUp() { + repository = new BookRepository(); + } + + @Test + public void givenNoBooks_WhenFindById_ThenReturnEmptyOptional() { + assertFalse(repository.findById(1).isPresent()); + } + + @Test + public void givenOneMatchingBook_WhenFindById_ThenReturnEmptyOptional() { + + long id = 1; + Book expected = bookWithId(id); + + repository.add(expected); + + Optional found = repository.findById(id); + + assertTrue(found.isPresent()); + assertEquals(expected, found.get()); + } + + private static Book bookWithId(long id) { + Book book = new Book(); + book.setId(id); + return book; + } + + @Test + public void givenOneNonMatchingBook_WhenFindById_ThenReturnEmptyOptional() { + + long id = 1; + Book expected = bookWithId(id); + + repository.add(expected); + + Optional found = repository.findById(id + 1); + + assertFalse(found.isPresent()); + } +} \ No newline at end of file diff --git a/spring-rest-simple/src/test/java/com/baeldung/web/controller/BookControllerIntegrationTest.java b/spring-rest-simple/src/test/java/com/baeldung/web/controller/BookControllerIntegrationTest.java new file mode 100644 index 0000000000..3bf5ce3c3d --- /dev/null +++ b/spring-rest-simple/src/test/java/com/baeldung/web/controller/BookControllerIntegrationTest.java @@ -0,0 +1,74 @@ +package com.baeldung.web.controller; + +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doReturn; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import java.util.Optional; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; + +import com.baeldung.Application; +import com.baeldung.repository.BookRepository; +import com.baeldung.web.dto.Book; +import com.baeldung.web.error.ApiErrorResponse; +import com.fasterxml.jackson.databind.ObjectMapper; + +@RunWith(SpringRunner.class) +@WebMvcTest(BookController.class) +@ComponentScan(basePackageClasses = Application.class) +public class BookControllerIntegrationTest { + + private static final ObjectMapper MAPPER = new ObjectMapper(); + + @Autowired + private MockMvc mvc; + + @MockBean + private BookRepository repository; + + @Test + public void givenNoExistingBooks_WhenGetBookWithId1_ThenErrorReturned() throws Exception { + + long id = 1; + + doReturn(Optional.empty()).when(repository).findById(eq(id)); + + mvc.perform(get("/api/book/{id}", id)) + .andExpect(status().isNotFound()) + .andExpect(content().json(MAPPER.writeValueAsString(new ApiErrorResponse("error-0001", "No book found with ID " + id)))); + } + + @Test + public void givenMatchingBookExists_WhenGetBookWithId1_ThenBookReturned() throws Exception { + + long id = 1; + Book book = book(id, "foo", "bar"); + + doReturn(Optional.of(book)).when(repository).findById(eq(id)); + + mvc.perform(get("/api/book/{id}", id)) + .andExpect(status().isOk()) + .andExpect(content().json(MAPPER.writeValueAsString(book))); + } + + private static Book book(long id, String title, String author) { + + Book book = new Book(); + + book.setId(id); + book.setTitle(title); + book.setAuthor(author); + + return book; + } +} \ No newline at end of file diff --git a/spring-rest-simple/src/test/java/com/baeldung/web/controller/mediatypes/TestConfig.java b/spring-rest-simple/src/test/java/com/baeldung/web/controller/mediatypes/TestConfig.java index 4bbfa2818e..bc644af428 100644 --- a/spring-rest-simple/src/test/java/com/baeldung/web/controller/mediatypes/TestConfig.java +++ b/spring-rest-simple/src/test/java/com/baeldung/web/controller/mediatypes/TestConfig.java @@ -5,7 +5,7 @@ import org.springframework.context.annotation.Configuration; @Configuration -@ComponentScan({ "com.baeldung.web" }) +@ComponentScan({ "com.baeldung.web", "com.baeldung.repository" }) public class TestConfig { } diff --git a/spring-rest/README.md b/spring-rest/README.md index 1d713c05c0..ac12066e8f 100644 --- a/spring-rest/README.md +++ b/spring-rest/README.md @@ -6,20 +6,20 @@ This module contains articles about REST APIs with Spring The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: -- [Spring @RequestMapping](http://www.baeldung.com/spring-requestmapping) -- [Returning Custom Status Codes from Spring Controllers](http://www.baeldung.com/spring-mvc-controller-custom-http-status-code) -- [Binary Data Formats in a Spring REST API](http://www.baeldung.com/spring-rest-api-with-binary-data-formats) -- [Guide to UriComponentsBuilder in Spring](http://www.baeldung.com/spring-uricomponentsbuilder) -- [Introduction to FindBugs](http://www.baeldung.com/intro-to-findbugs) -- [A Custom Media Type for a Spring REST API](http://www.baeldung.com/spring-rest-custom-media-type) -- [HTTP PUT vs HTTP PATCH in a REST API](http://www.baeldung.com/http-put-patch-difference-spring) -- [Spring – Log Incoming Requests](http://www.baeldung.com/spring-http-logging) -- [Introduction to CheckStyle](http://www.baeldung.com/checkstyle-java) -- [How to Change the Default Port in Spring Boot](http://www.baeldung.com/spring-boot-change-port) -- [Guide to DeferredResult in Spring](http://www.baeldung.com/spring-deferred-result) -- [Spring Custom Property Editor](http://www.baeldung.com/spring-mvc-custom-property-editor) -- [Using the Spring RestTemplate Interceptor](http://www.baeldung.com/spring-rest-template-interceptor) -- [Get and Post Lists of Objects with RestTemplate](http://www.baeldung.com/spring-rest-template-list) -- [How to Set a Header on a Response with Spring 5](http://www.baeldung.com/spring-response-header) -- [Uploading MultipartFile with Spring RestTemplate](http://www.baeldung.com/spring-rest-template-multipart-upload) -- [Download an Image or a File with Spring MVC](http://www.baeldung.com/spring-controller-return-image-file) +- [Spring @RequestMapping](https://www.baeldung.com/spring-requestmapping) +- [Returning Custom Status Codes from Spring Controllers](https://www.baeldung.com/spring-mvc-controller-custom-http-status-code) +- [Binary Data Formats in a Spring REST API](https://www.baeldung.com/spring-rest-api-with-binary-data-formats) +- [Guide to UriComponentsBuilder in Spring](https://www.baeldung.com/spring-uricomponentsbuilder) +- [Introduction to FindBugs](https://www.baeldung.com/intro-to-findbugs) +- [A Custom Media Type for a Spring REST API](https://www.baeldung.com/spring-rest-custom-media-type) +- [HTTP PUT vs HTTP PATCH in a REST API](https://www.baeldung.com/http-put-patch-difference-spring) +- [Spring – Log Incoming Requests](https://www.baeldung.com/spring-http-logging) +- [Introduction to CheckStyle](https://www.baeldung.com/checkstyle-java) +- [How to Change the Default Port in Spring Boot](https://www.baeldung.com/spring-boot-change-port) +- [Guide to DeferredResult in Spring](https://www.baeldung.com/spring-deferred-result) +- [Spring Custom Property Editor](https://www.baeldung.com/spring-mvc-custom-property-editor) +- [Using the Spring RestTemplate Interceptor](https://www.baeldung.com/spring-rest-template-interceptor) +- [Get and Post Lists of Objects with RestTemplate](https://www.baeldung.com/spring-rest-template-list) +- [How to Set a Header on a Response with Spring 5](https://www.baeldung.com/spring-response-header) +- [Uploading MultipartFile with Spring RestTemplate](https://www.baeldung.com/spring-rest-template-multipart-upload) +- [Download an Image or a File with Spring MVC](https://www.baeldung.com/spring-controller-return-image-file) diff --git a/spring-resttemplate/README.md b/spring-resttemplate/README.md index 9b75e1aa81..e98af0e787 100644 --- a/spring-resttemplate/README.md +++ b/spring-resttemplate/README.md @@ -6,10 +6,10 @@ This module contains articles about Spring RestTemplate The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: -- [The Guide to RestTemplate](http://www.baeldung.com/rest-template) -- [Exploring the Spring Boot TestRestTemplate](http://www.baeldung.com/spring-boot-testresttemplate) -- [Spring RestTemplate Error Handling](http://www.baeldung.com/spring-rest-template-error-handling) -- [Configure a RestTemplate with RestTemplateBuilder](http://www.baeldung.com/spring-rest-template-builder) +- [The Guide to RestTemplate](https://www.baeldung.com/rest-template) +- [Exploring the Spring Boot TestRestTemplate](https://www.baeldung.com/spring-boot-testresttemplate) +- [Spring RestTemplate Error Handling](https://www.baeldung.com/spring-rest-template-error-handling) +- [Configure a RestTemplate with RestTemplateBuilder](https://www.baeldung.com/spring-rest-template-builder) - [Mocking a RestTemplate in Spring](https://www.baeldung.com/spring-mock-rest-template) - [RestTemplate Post Request with JSON](https://www.baeldung.com/spring-resttemplate-post-json) - [Download a Large File Through a Spring RestTemplate](https://www.baeldung.com/spring-resttemplate-download-large-file) diff --git a/spring-roo/README.md b/spring-roo/README.md index 5a8ce6e30f..abbc4249d4 100644 --- a/spring-roo/README.md +++ b/spring-roo/README.md @@ -3,4 +3,4 @@ This module contains articles about Spring Roo ### Relevant Articles: -[Quick Guide to Spring Roo](http://www.baeldung.com/spring-roo) +[Quick Guide to Spring Roo](https://www.baeldung.com/spring-roo) diff --git a/spring-scheduling/README.md b/spring-scheduling/README.md new file mode 100644 index 0000000000..72d5a7dc83 --- /dev/null +++ b/spring-scheduling/README.md @@ -0,0 +1,5 @@ +### Relevant articles: +- [A Guide to the Spring Task Scheduler](http://www.baeldung.com/spring-task-scheduler) +- [Guide to Spring Retry](http://www.baeldung.com/spring-retry) +- [How To Do @Async in Spring](http://www.baeldung.com/spring-async) + diff --git a/spring-scheduling/pom.xml b/spring-scheduling/pom.xml new file mode 100644 index 0000000000..21327cf52f --- /dev/null +++ b/spring-scheduling/pom.xml @@ -0,0 +1,45 @@ + + 4.0.0 + spring-scheduling + 0.1-SNAPSHOT + spring-scheduling + war + + + parent-boot-2 + com.baeldung + 0.0.1-SNAPSHOT + ../parent-boot-2 + + + + + org.springframework + spring-context + + + org.springframework.retry + spring-retry + + + org.springframework + spring-aspects + + + javax.annotation + javax.annotation-api + ${annotation-api.version} + + + org.springframework + spring-test + test + + + + + 1.3.2 + + + \ No newline at end of file diff --git a/spring-all/src/main/java/com/baeldung/scheduling/ScheduledFixedRateExample.java b/spring-scheduling/src/main/java/com/baeldung/scheduling/ScheduledFixedRateExample.java similarity index 100% rename from spring-all/src/main/java/com/baeldung/scheduling/ScheduledFixedRateExample.java rename to spring-scheduling/src/main/java/com/baeldung/scheduling/ScheduledFixedRateExample.java diff --git a/spring-all/src/main/java/com/baeldung/scheduling/SpringSchedulingFixedRateConfig.java b/spring-scheduling/src/main/java/com/baeldung/scheduling/SpringSchedulingFixedRateConfig.java similarity index 100% rename from spring-all/src/main/java/com/baeldung/scheduling/SpringSchedulingFixedRateConfig.java rename to spring-scheduling/src/main/java/com/baeldung/scheduling/SpringSchedulingFixedRateConfig.java diff --git a/spring-all/src/main/java/org/baeldung/async/AsyncComponent.java b/spring-scheduling/src/main/java/org/baeldung/async/AsyncComponent.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/async/AsyncComponent.java rename to spring-scheduling/src/main/java/org/baeldung/async/AsyncComponent.java diff --git a/spring-all/src/main/java/org/baeldung/async/CustomAsyncExceptionHandler.java b/spring-scheduling/src/main/java/org/baeldung/async/CustomAsyncExceptionHandler.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/async/CustomAsyncExceptionHandler.java rename to spring-scheduling/src/main/java/org/baeldung/async/CustomAsyncExceptionHandler.java diff --git a/spring-all/src/main/java/org/baeldung/async/config/SpringAsyncConfig.java b/spring-scheduling/src/main/java/org/baeldung/async/config/SpringAsyncConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/async/config/SpringAsyncConfig.java rename to spring-scheduling/src/main/java/org/baeldung/async/config/SpringAsyncConfig.java diff --git a/spring-all/src/main/java/org/baeldung/scheduling/ScheduledAnnotationExample.java b/spring-scheduling/src/main/java/org/baeldung/scheduling/ScheduledAnnotationExample.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/scheduling/ScheduledAnnotationExample.java rename to spring-scheduling/src/main/java/org/baeldung/scheduling/ScheduledAnnotationExample.java diff --git a/spring-all/src/main/java/org/baeldung/scheduling/SchedulingWithXmlConfig.java b/spring-scheduling/src/main/java/org/baeldung/scheduling/SchedulingWithXmlConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/scheduling/SchedulingWithXmlConfig.java rename to spring-scheduling/src/main/java/org/baeldung/scheduling/SchedulingWithXmlConfig.java diff --git a/spring-all/src/main/java/org/baeldung/scheduling/SpringSchedulingConfig.java b/spring-scheduling/src/main/java/org/baeldung/scheduling/SpringSchedulingConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/scheduling/SpringSchedulingConfig.java rename to spring-scheduling/src/main/java/org/baeldung/scheduling/SpringSchedulingConfig.java diff --git a/spring-all/src/main/java/org/baeldung/springretry/AppConfig.java b/spring-scheduling/src/main/java/org/baeldung/springretry/AppConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/springretry/AppConfig.java rename to spring-scheduling/src/main/java/org/baeldung/springretry/AppConfig.java diff --git a/spring-all/src/main/java/org/baeldung/springretry/DefaultListenerSupport.java b/spring-scheduling/src/main/java/org/baeldung/springretry/DefaultListenerSupport.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/springretry/DefaultListenerSupport.java rename to spring-scheduling/src/main/java/org/baeldung/springretry/DefaultListenerSupport.java diff --git a/spring-all/src/main/java/org/baeldung/springretry/MyService.java b/spring-scheduling/src/main/java/org/baeldung/springretry/MyService.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/springretry/MyService.java rename to spring-scheduling/src/main/java/org/baeldung/springretry/MyService.java diff --git a/spring-all/src/main/java/org/baeldung/springretry/MyServiceImpl.java b/spring-scheduling/src/main/java/org/baeldung/springretry/MyServiceImpl.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/springretry/MyServiceImpl.java rename to spring-scheduling/src/main/java/org/baeldung/springretry/MyServiceImpl.java diff --git a/spring-all/src/main/java/org/baeldung/taskscheduler/ThreadPoolTaskSchedulerConfig.java b/spring-scheduling/src/main/java/org/baeldung/taskscheduler/ThreadPoolTaskSchedulerConfig.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/taskscheduler/ThreadPoolTaskSchedulerConfig.java rename to spring-scheduling/src/main/java/org/baeldung/taskscheduler/ThreadPoolTaskSchedulerConfig.java diff --git a/spring-all/src/main/java/org/baeldung/taskscheduler/ThreadPoolTaskSchedulerExamples.java b/spring-scheduling/src/main/java/org/baeldung/taskscheduler/ThreadPoolTaskSchedulerExamples.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/taskscheduler/ThreadPoolTaskSchedulerExamples.java rename to spring-scheduling/src/main/java/org/baeldung/taskscheduler/ThreadPoolTaskSchedulerExamples.java diff --git a/spring-all/src/main/resources/retryadvice.xml b/spring-scheduling/src/main/resources/retryadvice.xml similarity index 97% rename from spring-all/src/main/resources/retryadvice.xml rename to spring-scheduling/src/main/resources/retryadvice.xml index 8de7801a58..79a9fc8660 100644 --- a/spring-all/src/main/resources/retryadvice.xml +++ b/spring-scheduling/src/main/resources/retryadvice.xml @@ -7,7 +7,7 @@ http://www.springframework.org/schema/beans/spring-beans.xsd"> + expression="execution(* org.baeldung.springretry..*MyService.defaultXmlRetryService(..))" /> diff --git a/spring-all/src/main/resources/springAsync-config.xml b/spring-scheduling/src/main/resources/springAsync-config.xml similarity index 62% rename from spring-all/src/main/resources/springAsync-config.xml rename to spring-scheduling/src/main/resources/springAsync-config.xml index 34e8b33f45..40fc40c79f 100644 --- a/spring-all/src/main/resources/springAsync-config.xml +++ b/spring-scheduling/src/main/resources/springAsync-config.xml @@ -1,7 +1,8 @@ - diff --git a/spring-all/src/main/resources/springScheduled-config.xml b/spring-scheduling/src/main/resources/springScheduled-config.xml similarity index 66% rename from spring-all/src/main/resources/springScheduled-config.xml rename to spring-scheduling/src/main/resources/springScheduled-config.xml index 65566ee779..d1ff9dc028 100644 --- a/spring-all/src/main/resources/springScheduled-config.xml +++ b/spring-scheduling/src/main/resources/springScheduled-config.xml @@ -1,7 +1,8 @@ - - - - + + + \ No newline at end of file diff --git a/spring-all/src/main/resources/springScheduled.properties b/spring-scheduling/src/main/resources/springScheduled.properties similarity index 100% rename from spring-all/src/main/resources/springScheduled.properties rename to spring-scheduling/src/main/resources/springScheduled.properties diff --git a/spring-all/src/test/java/com/baeldung/scheduling/ScheduledFixedRateExampleIntegrationTest.java b/spring-scheduling/src/test/java/com/baeldung/scheduling/ScheduledFixedRateExampleIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/com/baeldung/scheduling/ScheduledFixedRateExampleIntegrationTest.java rename to spring-scheduling/src/test/java/com/baeldung/scheduling/ScheduledFixedRateExampleIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/async/AsyncAnnotationExampleIntegrationTest.java b/spring-scheduling/src/test/java/org/baeldung/async/AsyncAnnotationExampleIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/async/AsyncAnnotationExampleIntegrationTest.java rename to spring-scheduling/src/test/java/org/baeldung/async/AsyncAnnotationExampleIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/async/AsyncWithXMLIntegrationTest.java b/spring-scheduling/src/test/java/org/baeldung/async/AsyncWithXMLIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/async/AsyncWithXMLIntegrationTest.java rename to spring-scheduling/src/test/java/org/baeldung/async/AsyncWithXMLIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/scheduling/ScheduledAnnotationExampleIntegrationTest.java b/spring-scheduling/src/test/java/org/baeldung/scheduling/ScheduledAnnotationExampleIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/scheduling/ScheduledAnnotationExampleIntegrationTest.java rename to spring-scheduling/src/test/java/org/baeldung/scheduling/ScheduledAnnotationExampleIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/scheduling/SchedulingWithXmlConfigIntegrationTest.java b/spring-scheduling/src/test/java/org/baeldung/scheduling/SchedulingWithXmlConfigIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/scheduling/SchedulingWithXmlConfigIntegrationTest.java rename to spring-scheduling/src/test/java/org/baeldung/scheduling/SchedulingWithXmlConfigIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/springretry/SpringRetryIntegrationTest.java b/spring-scheduling/src/test/java/org/baeldung/springretry/SpringRetryIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/springretry/SpringRetryIntegrationTest.java rename to spring-scheduling/src/test/java/org/baeldung/springretry/SpringRetryIntegrationTest.java diff --git a/spring-all/src/test/java/org/baeldung/taskscheduler/ThreadPoolTaskSchedulerIntegrationTest.java b/spring-scheduling/src/test/java/org/baeldung/taskscheduler/ThreadPoolTaskSchedulerIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/taskscheduler/ThreadPoolTaskSchedulerIntegrationTest.java rename to spring-scheduling/src/test/java/org/baeldung/taskscheduler/ThreadPoolTaskSchedulerIntegrationTest.java diff --git a/spring-security-acl/README.md b/spring-security-acl/README.md index 2f95793f8d..b2f42d5c29 100644 --- a/spring-security-acl/README.md +++ b/spring-security-acl/README.md @@ -3,4 +3,4 @@ This module contains articles about Spring Security ACL ### Relevant Articles -- [Introduction to Spring Security ACL](http://www.baeldung.com/spring-security-acl) +- [Introduction to Spring Security ACL](https://www.baeldung.com/spring-security-acl) diff --git a/spring-security-cache-control/README.md b/spring-security-cache-control/README.md index fc5bdda1f6..1c7cbfd096 100644 --- a/spring-security-cache-control/README.md +++ b/spring-security-cache-control/README.md @@ -3,4 +3,4 @@ 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) +- [Spring Security – Cache Control Headers](https://www.baeldung.com/spring-security-cache-control-headers) diff --git a/spring-security-core/README.md b/spring-security-core/README.md index 3dfcb276d7..3579e5e759 100644 --- a/spring-security-core/README.md +++ b/spring-security-core/README.md @@ -3,9 +3,9 @@ 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) +- [Spring Security – @PreFilter and @PostFilter](https://www.baeldung.com/spring-security-prefilter-postfilter) +- [Spring Boot Authentication Auditing Support](https://www.baeldung.com/spring-boot-authentication-audit) +- [Introduction to Spring Method Security](https://www.baeldung.com/spring-security-method-security) - [Overview and Need for DelegatingFilterProxy in Spring](https://www.baeldung.com/spring-delegating-filter-proxy) ### @PreFilter and @PostFilter annotations @@ -13,5 +13,3 @@ This module contains articles about core Spring Security #### Build the Project `mvn clean install` - - diff --git a/spring-security-cors/README.md b/spring-security-cors/README.md index 2ab5e33ee3..c9e00e04d7 100644 --- a/spring-security-cors/README.md +++ b/spring-security-cors/README.md @@ -1,3 +1,7 @@ +## Spring Security CORS + +This module contains articles about Spring Security with CORS (Cross Origin Requests) + ## Relevant Articles - [Fixing 401s with CORS Preflights and Spring Security](https://www.baeldung.com/spring-security-cors-preflight) diff --git a/spring-security-mvc-boot/README.md b/spring-security-mvc-boot/README.md index 150ea3eee9..7dcfe4d70f 100644 --- a/spring-security-mvc-boot/README.md +++ b/spring-security-mvc-boot/README.md @@ -6,13 +6,13 @@ This module contains articles about Spring Security with Spring MVC in Boot appl The "REST With Spring" Classes: http://github.learnspringsecurity.com ### Relevant Articles: -- [A Custom Security Expression with Spring Security](http://www.baeldung.com/spring-security-create-new-custom-security-expression) -- [Custom AccessDecisionVoters in Spring Security](http://www.baeldung.com/spring-security-custom-voter) -- [Spring Security: Authentication with a Database-backed UserDetailsService](http://www.baeldung.com/spring-security-authentication-with-a-database) -- [Two Login Pages with Spring Security](http://www.baeldung.com/spring-security-two-login-pages) -- [Multiple Entry Points in Spring Security](http://www.baeldung.com/spring-security-multiple-entry-points) -- [Multiple Authentication Providers in Spring Security](http://www.baeldung.com/spring-security-multiple-auth-providers) -- [Granted Authority Versus Role in Spring Security](http://www.baeldung.com/spring-security-granted-authority-vs-role) +- [A Custom Security Expression with Spring Security](https://www.baeldung.com/spring-security-create-new-custom-security-expression) +- [Custom AccessDecisionVoters in Spring Security](https://www.baeldung.com/spring-security-custom-voter) +- [Spring Security: Authentication with a Database-backed UserDetailsService](https://www.baeldung.com/spring-security-authentication-with-a-database) +- [Two Login Pages with Spring Security](https://www.baeldung.com/spring-security-two-login-pages) +- [Multiple Entry Points in Spring Security](https://www.baeldung.com/spring-security-multiple-entry-points) +- [Multiple Authentication Providers in Spring Security](https://www.baeldung.com/spring-security-multiple-auth-providers) +- [Granted Authority Versus Role in Spring Security](https://www.baeldung.com/spring-security-granted-authority-vs-role) - [Spring Data with Spring Security](https://www.baeldung.com/spring-data-security) - [Spring Security – Whitelist IP Range](https://www.baeldung.com/spring-security-whitelist-ip-range) - [Find the Registered Spring Security Filters](https://www.baeldung.com/spring-security-registered-filters) diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/jdbcauthentication/README.md b/spring-security-mvc-boot/src/main/java/org/baeldung/jdbcauthentication/README.md new file mode 100644 index 0000000000..a7cdfec7d8 --- /dev/null +++ b/spring-security-mvc-boot/src/main/java/org/baeldung/jdbcauthentication/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Spring Security: Exploring JDBC Authentication](https://www.baeldung.com/spring-security-jdbc-authentication) diff --git a/spring-security-mvc-custom/README.md b/spring-security-mvc-custom/README.md index 84bdec3c10..1a131f4c23 100644 --- a/spring-security-mvc-custom/README.md +++ b/spring-security-mvc-custom/README.md @@ -6,13 +6,13 @@ This module contains articles about Spring Security with custom MVC applications The "REST With Spring" Classes: http://github.learnspringsecurity.com ### Relevant Articles: -- [Spring Security Remember Me](http://www.baeldung.com/spring-security-remember-me) -- [Redirect to different pages after Login with Spring Security](http://www.baeldung.com/spring_redirect_after_login) -- [Changing Spring Model Parameters with Handler Interceptor](http://www.baeldung.com/spring-model-parameters-with-handler-interceptor) -- [Introduction to Spring MVC HandlerInterceptor](http://www.baeldung.com/spring-mvc-handlerinterceptor) -- [Using a Custom Spring MVC’s Handler Interceptor to Manage Sessions](http://www.baeldung.com/spring-mvc-custom-handler-interceptor) -- [A Guide to CSRF Protection in Spring Security](http://www.baeldung.com/spring-security-csrf) -- [How to Manually Authenticate User with Spring Security](http://www.baeldung.com/manually-set-user-authentication-spring-security) +- [Spring Security Remember Me](https://www.baeldung.com/spring-security-remember-me) +- [Redirect to different pages after Login with Spring Security](https://www.baeldung.com/spring_redirect_after_login) +- [Changing Spring Model Parameters with Handler Interceptor](https://www.baeldung.com/spring-model-parameters-with-handler-interceptor) +- [Introduction to Spring MVC HandlerInterceptor](https://www.baeldung.com/spring-mvc-handlerinterceptor) +- [Using a Custom Spring MVC’s Handler Interceptor to Manage Sessions](https://www.baeldung.com/spring-mvc-custom-handler-interceptor) +- [A Guide to CSRF Protection in Spring Security](https://www.baeldung.com/spring-security-csrf) +- [How to Manually Authenticate User with Spring Security](https://www.baeldung.com/manually-set-user-authentication-spring-security) ### Build the Project ``` diff --git a/spring-security-mvc-digest-auth/README.md b/spring-security-mvc-digest-auth/README.md index da612e273b..0d36dbfd63 100644 --- a/spring-security-mvc-digest-auth/README.md +++ b/spring-security-mvc-digest-auth/README.md @@ -6,6 +6,6 @@ This module contains articles about digest authentication with Spring Security The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Article: -- [Spring Security Digest Authentication](http://www.baeldung.com/spring-security-digest-authentication) -- [RestTemplate with Digest Authentication](http://www.baeldung.com/resttemplate-digest-authentication) +- [Spring Security Digest Authentication](https://www.baeldung.com/spring-security-digest-authentication) +- [RestTemplate with Digest Authentication](https://www.baeldung.com/resttemplate-digest-authentication) diff --git a/spring-security-mvc-ldap/README.md b/spring-security-mvc-ldap/README.md index fe04cd23fa..3230c0398a 100644 --- a/spring-security-mvc-ldap/README.md +++ b/spring-security-mvc-ldap/README.md @@ -6,8 +6,8 @@ This module contains articles about Spring Security LDAP The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Article: -- [Spring Security – security none, filters none, access permitAll](http://www.baeldung.com/security-none-filters-none-access-permitAll) -- [Intro to Spring Security LDAP](http://www.baeldung.com/spring-security-ldap) +- [Spring Security – security none, filters none, access permitAll](https://www.baeldung.com/security-none-filters-none-access-permitAll) +- [Intro to Spring Security LDAP](https://www.baeldung.com/spring-security-ldap) ### Notes - the project uses Spring Boot - simply run 'SampleLDAPApplication.java' to start up Spring Boot with a Tomcat container and embedded LDAP server. diff --git a/spring-security-mvc-login/README.md b/spring-security-mvc-login/README.md index a20a04edec..5d92a8e1b4 100644 --- a/spring-security-mvc-login/README.md +++ b/spring-security-mvc-login/README.md @@ -6,13 +6,13 @@ This module contains articles about login mechanisms with Spring Security The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Articles: -- [Spring Security Form Login](http://www.baeldung.com/spring-security-login) -- [Spring Security Logout](http://www.baeldung.com/spring-security-logout) -- [Spring Security Expressions – hasRole Example](http://www.baeldung.com/spring-security-expressions-basic) -- [Spring HTTP/HTTPS Channel Security](http://www.baeldung.com/spring-channel-security-https) -- [Spring Security – Customize the 403 Forbidden/Access Denied Page](http://www.baeldung.com/spring-security-custom-access-denied-page) -- [Spring Security – Redirect to the Previous URL After Login](http://www.baeldung.com/spring-security-redirect-login) -- [Spring Security Custom AuthenticationFailureHandler](http://www.baeldung.com/spring-security-custom-authentication-failure-handler) +- [Spring Security Form Login](https://www.baeldung.com/spring-security-login) +- [Spring Security Logout](https://www.baeldung.com/spring-security-logout) +- [Spring Security Expressions – hasRole Example](https://www.baeldung.com/spring-security-expressions-basic) +- [Spring HTTP/HTTPS Channel Security](https://www.baeldung.com/spring-channel-security-https) +- [Spring Security – Customize the 403 Forbidden/Access Denied Page](https://www.baeldung.com/spring-security-custom-access-denied-page) +- [Spring Security – Redirect to the Previous URL After Login](https://www.baeldung.com/spring-security-redirect-login) +- [Spring Security Custom AuthenticationFailureHandler](https://www.baeldung.com/spring-security-custom-authentication-failure-handler) ### Build the Project ``` diff --git a/spring-security-mvc-persisted-remember-me/README.md b/spring-security-mvc-persisted-remember-me/README.md index 260e55198a..e3003e89e2 100644 --- a/spring-security-mvc-persisted-remember-me/README.md +++ b/spring-security-mvc-persisted-remember-me/README.md @@ -6,7 +6,7 @@ This module contains articles about 'remember me' with Spring Security The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Articles: -- [Spring Security – Persistent Remember Me](http://www.baeldung.com/spring-security-persistent-remember-me) +- [Spring Security – Persistent Remember Me](https://www.baeldung.com/spring-security-persistent-remember-me) ### Build the Project ``` diff --git a/spring-security-mvc-socket/README.md b/spring-security-mvc-socket/README.md index 187bbe82b0..d134d19c84 100644 --- a/spring-security-mvc-socket/README.md +++ b/spring-security-mvc-socket/README.md @@ -4,7 +4,7 @@ This module contains articles about WebSockets with Spring Security ### Relevant Articles: -- [Intro to Security and WebSockets](http://www.baeldung.com/spring-security-websockets) +- [Intro to Security and WebSockets](https://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) @@ -15,5 +15,3 @@ To build the project, run the command: mvn clean install. This will build a war Alternatively, run the project from an IDE. To login, use credentials from the data.sql file in src/main/resource, eg: user/password. - - diff --git a/spring-security-mvc/README.md b/spring-security-mvc/README.md index ad55e903c5..a458127c61 100644 --- a/spring-security-mvc/README.md +++ b/spring-security-mvc/README.md @@ -6,8 +6,8 @@ This module contains articles about Spring Security in MVC applications The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Articles: -- [HttpSessionListener Example – Monitoring](http://www.baeldung.com/httpsessionlistener_with_metrics) -- [Control the Session with Spring Security](http://www.baeldung.com/spring-security-session) +- [HttpSessionListener Example – Monitoring](https://www.baeldung.com/httpsessionlistener_with_metrics) +- [Control the Session with Spring Security](https://www.baeldung.com/spring-security-session) ### Build the Project diff --git a/spring-security-openid/README.md b/spring-security-openid/README.md index 1512ffbde5..1f856fe191 100644 --- a/spring-security-openid/README.md +++ b/spring-security-openid/README.md @@ -4,7 +4,7 @@ This module contains articles about OpenID with Spring Security ### Relevant articles -- [Spring Security and OpenID Connect](http://www.baeldung.com/spring-security-openid-connect) +- [Spring Security and OpenID Connect](https://www.baeldung.com/spring-security-openid-connect) ### OpenID Connect with Spring Security diff --git a/spring-security-react/README.md b/spring-security-react/README.md index 4eb402c699..6c9e1dad7a 100644 --- a/spring-security-react/README.md +++ b/spring-security-react/README.md @@ -8,7 +8,7 @@ The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Articles: -* [Spring Security Login Page with React](http://www.baeldung.com/spring-security-login-react) +* [Spring Security Login Page with React](https://www.baeldung.com/spring-security-login-react) ### Build the Project diff --git a/spring-security-rest-basic-auth/README.md b/spring-security-rest-basic-auth/README.md index 41d463f1e2..d12427a106 100644 --- a/spring-security-rest-basic-auth/README.md +++ b/spring-security-rest-basic-auth/README.md @@ -7,6 +7,6 @@ This module contains articles about basic authentication in RESTful APIs with Sp The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Articles: -- [Basic Authentication with the RestTemplate](http://www.baeldung.com/how-to-use-resttemplate-with-basic-authentication-in-spring) -- [A Custom Filter in the Spring Security Filter Chain](http://www.baeldung.com/spring-security-custom-filter) -- [Spring Security Basic Authentication](http://www.baeldung.com/spring-security-basic-authentication) +- [Basic Authentication with the RestTemplate](https://www.baeldung.com/how-to-use-resttemplate-with-basic-authentication-in-spring) +- [A Custom Filter in the Spring Security Filter Chain](https://www.baeldung.com/spring-security-custom-filter) +- [Spring Security Basic Authentication](https://www.baeldung.com/spring-security-basic-authentication) diff --git a/spring-security-rest-custom/README.md b/spring-security-rest-custom/README.md index 846093b554..15cbc22b5f 100644 --- a/spring-security-rest-custom/README.md +++ b/spring-security-rest-custom/README.md @@ -6,6 +6,6 @@ This module contains articles about REST APIs with Spring Security The "REST With Spring" Classes: http://github.learnspringsecurity.com ### Relevant Articles: -- [Spring Security Authentication Provider](http://www.baeldung.com/spring-security-authentication-provider) -- [Retrieve User Information in Spring Security](http://www.baeldung.com/get-user-in-spring-security) +- [Spring Security Authentication Provider](https://www.baeldung.com/spring-security-authentication-provider) +- [Retrieve User Information in Spring Security](https://www.baeldung.com/get-user-in-spring-security) - [Spring Security – Run-As Authentication](https://www.baeldung.com/spring-security-run-as-auth) diff --git a/spring-security-rest/README.md b/spring-security-rest/README.md index c7ac45e38f..d61a52070c 100644 --- a/spring-security-rest/README.md +++ b/spring-security-rest/README.md @@ -8,10 +8,10 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Articles: -- [Spring REST Service Security](http://www.baeldung.com/2011/10/31/securing-a-restful-web-service-with-spring-security-3-1-part-3/) -- [Setting Up Swagger 2 with a Spring REST API](http://www.baeldung.com/swagger-2-documentation-for-spring-rest-api) -- [Custom Error Message Handling for REST API](http://www.baeldung.com/global-error-handler-in-a-spring-rest-api) -- [Spring Security Context Propagation with @Async](http://www.baeldung.com/spring-security-async-principal-propagation) -- [Servlet 3 Async Support with Spring MVC and Spring Security](http://www.baeldung.com/spring-mvc-async-security) -- [Intro to Spring Security Expressions](http://www.baeldung.com/spring-security-expressions) -- [Spring Security for a REST API](http://www.baeldung.com/securing-a-restful-web-service-with-spring-security) +- [Spring REST Service Security](https://www.baeldung.com/2011/10/31/securing-a-restful-web-service-with-spring-security-3-1-part-3/) +- [Setting Up Swagger 2 with a Spring REST API](https://www.baeldung.com/swagger-2-documentation-for-spring-rest-api) +- [Custom Error Message Handling for REST API](https://www.baeldung.com/global-error-handler-in-a-spring-rest-api) +- [Spring Security Context Propagation with @Async](https://www.baeldung.com/spring-security-async-principal-propagation) +- [Servlet 3 Async Support with Spring MVC and Spring Security](https://www.baeldung.com/spring-mvc-async-security) +- [Intro to Spring Security Expressions](https://www.baeldung.com/spring-security-expressions) +- [Spring Security for a REST API](https://www.baeldung.com/securing-a-restful-web-service-with-spring-security) diff --git a/spring-security-sso/README.md b/spring-security-sso/README.md index 31694bee45..23b53521be 100644 --- a/spring-security-sso/README.md +++ b/spring-security-sso/README.md @@ -3,5 +3,5 @@ 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) +- [Simple Single Sign-On with Spring Security OAuth2](https://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 abd65294a3..971d4cc858 100644 --- a/spring-security-stormpath/README.md +++ b/spring-security-stormpath/README.md @@ -4,4 +4,4 @@ This module contains articles about Spring Security with Stormpath ### Relevant articles -- [Spring Security with Stormpath](http://www.baeldung.com/spring-security-stormpath) +- [Spring Security with Stormpath](https://www.baeldung.com/spring-security-stormpath) diff --git a/spring-security-thymeleaf/README.MD b/spring-security-thymeleaf/README.MD index 67b811fac8..ad533faefd 100644 --- a/spring-security-thymeleaf/README.MD +++ b/spring-security-thymeleaf/README.MD @@ -1,7 +1,7 @@ ## Spring Security Thymeleaf -This module contains articles about Spring Security with Thymeleaf +This module contains articles about Spring Security with Thymeleaf. ### Relevant Articles: -- [Spring Security with Thymeleaf](http://www.baeldung.com/spring-security-thymeleaf) +- [Spring Security with Thymeleaf](https://www.baeldung.com/spring-security-thymeleaf) diff --git a/spring-security-x509/README.md b/spring-security-x509/README.md index 2c0e25a229..b1eb0debf5 100644 --- a/spring-security-x509/README.md +++ b/spring-security-x509/README.md @@ -3,4 +3,4 @@ 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) +- [X.509 Authentication in Spring Security](https://www.baeldung.com/x-509-authentication-in-spring-security) diff --git a/spring-session/spring-session-jdbc/README.md b/spring-session/spring-session-jdbc/README.md index 94fd1cd3e7..a31ee044e8 100644 --- a/spring-session/spring-session-jdbc/README.md +++ b/spring-session/spring-session-jdbc/README.md @@ -1,4 +1,7 @@ -This module is for Spring Session with JDBC tutorial. -Jira BAEL-1911 +## Spring Session with JDBC + +This module contains articles about Spring Session with JDBC. ### Relevant Articles: + +- [Spring Session with JDBC](https://www.baeldung.com/spring-session-jdbc) diff --git a/spring-shell/.gitignore b/spring-shell/.gitignore new file mode 100644 index 0000000000..786d76230c --- /dev/null +++ b/spring-shell/.gitignore @@ -0,0 +1,15 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear + +*-shell.log \ No newline at end of file diff --git a/spring-shell/README.md b/spring-shell/README.md new file mode 100644 index 0000000000..2762f3a9c0 --- /dev/null +++ b/spring-shell/README.md @@ -0,0 +1,3 @@ +### Relevant articles: + +- [A CLI with Spring Shell](http://www.baeldung.com/spring-shell-cli) diff --git a/spring-shell/pom.xml b/spring-shell/pom.xml new file mode 100644 index 0000000000..1b6fe28fdd --- /dev/null +++ b/spring-shell/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + spring-shell + 0.1-SNAPSHOT + spring-shell + war + + + parent-boot-2 + com.baeldung + 0.0.1-SNAPSHOT + ../parent-boot-2 + + + + + org.springframework.shell + spring-shell + ${org.springframework.shell.version} + + + + + 1.2.0.RELEASE + + + diff --git a/spring-all/src/main/java/org/baeldung/shell/Main.java b/spring-shell/src/main/java/org/baeldung/shell/Main.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/shell/Main.java rename to spring-shell/src/main/java/org/baeldung/shell/Main.java diff --git a/spring-all/src/main/java/org/baeldung/shell/simple/SimpleBannerProvider.java b/spring-shell/src/main/java/org/baeldung/shell/simple/SimpleBannerProvider.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/shell/simple/SimpleBannerProvider.java rename to spring-shell/src/main/java/org/baeldung/shell/simple/SimpleBannerProvider.java diff --git a/spring-all/src/main/java/org/baeldung/shell/simple/SimpleCLI.java b/spring-shell/src/main/java/org/baeldung/shell/simple/SimpleCLI.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/shell/simple/SimpleCLI.java rename to spring-shell/src/main/java/org/baeldung/shell/simple/SimpleCLI.java diff --git a/spring-all/src/main/java/org/baeldung/shell/simple/SimpleHistoryFileNameProvider.java b/spring-shell/src/main/java/org/baeldung/shell/simple/SimpleHistoryFileNameProvider.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/shell/simple/SimpleHistoryFileNameProvider.java rename to spring-shell/src/main/java/org/baeldung/shell/simple/SimpleHistoryFileNameProvider.java diff --git a/spring-all/src/main/java/org/baeldung/shell/simple/SimplePromptProvider.java b/spring-shell/src/main/java/org/baeldung/shell/simple/SimplePromptProvider.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/shell/simple/SimplePromptProvider.java rename to spring-shell/src/main/java/org/baeldung/shell/simple/SimplePromptProvider.java diff --git a/spring-all/src/main/java/org/baeldung/shell/simple/SimpleURLConverter.java b/spring-shell/src/main/java/org/baeldung/shell/simple/SimpleURLConverter.java similarity index 100% rename from spring-all/src/main/java/org/baeldung/shell/simple/SimpleURLConverter.java rename to spring-shell/src/main/java/org/baeldung/shell/simple/SimpleURLConverter.java diff --git a/spring-all/src/main/resources/META-INF/spring/spring-shell-plugin.xml b/spring-shell/src/main/resources/META-INF/spring/spring-shell-plugin.xml similarity index 81% rename from spring-all/src/main/resources/META-INF/spring/spring-shell-plugin.xml rename to spring-shell/src/main/resources/META-INF/spring/spring-shell-plugin.xml index aea1a663c1..1b97ab3b59 100644 --- a/spring-all/src/main/resources/META-INF/spring/spring-shell-plugin.xml +++ b/spring-shell/src/main/resources/META-INF/spring/spring-shell-plugin.xml @@ -1,12 +1,13 @@ - + \ No newline at end of file diff --git a/spring-all/src/test/java/org/baeldung/shell/simple/SimpleCLIIntegrationTest.java b/spring-shell/src/test/java/org/baeldung/shell/simple/SimpleCLIIntegrationTest.java similarity index 100% rename from spring-all/src/test/java/org/baeldung/shell/simple/SimpleCLIIntegrationTest.java rename to spring-shell/src/test/java/org/baeldung/shell/simple/SimpleCLIIntegrationTest.java diff --git a/spring-all/src/test/resources/.gitignore b/spring-shell/src/test/resources/.gitignore similarity index 100% rename from spring-all/src/test/resources/.gitignore rename to spring-shell/src/test/resources/.gitignore diff --git a/spring-sleuth/README.md b/spring-sleuth/README.md index 692fbaa8b7..ebaebde6c9 100644 --- a/spring-sleuth/README.md +++ b/spring-sleuth/README.md @@ -4,4 +4,4 @@ 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) +- [Spring Cloud Sleuth in a Monolith Application](https://www.baeldung.com/spring-cloud-sleuth-single-application) diff --git a/spring-social-login/README.md b/spring-social-login/README.md index c3ca867a95..2d97584e62 100644 --- a/spring-social-login/README.md +++ b/spring-social-login/README.md @@ -3,4 +3,4 @@ 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) +- [A Secondary Facebook Login with Spring Social](https://www.baeldung.com/facebook-authentication-with-spring-security-and-social) diff --git a/spring-spel/README.md b/spring-spel/README.md index f81d304e1a..2a1d900e38 100644 --- a/spring-spel/README.md +++ b/spring-spel/README.md @@ -3,4 +3,4 @@ This module contains articles about the Spring Expression Language (SpEL) ### Relevant Articles: -- [Spring Expression Language Guide](http://www.baeldung.com/spring-expression-language) +- [Spring Expression Language Guide](https://www.baeldung.com/spring-expression-language) diff --git a/spring-state-machine/README.md b/spring-state-machine/README.md index f80ef34ef8..dadb628572 100644 --- a/spring-state-machine/README.md +++ b/spring-state-machine/README.md @@ -4,4 +4,4 @@ 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) +- [A Guide to the Spring State Machine Project](https://www.baeldung.com/spring-state-machine) diff --git a/spring-static-resources/README.md b/spring-static-resources/README.md index 8d77e6fe94..206421ed0e 100644 --- a/spring-static-resources/README.md +++ b/spring-static-resources/README.md @@ -3,7 +3,7 @@ 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) -- [Serve Static Resources with Spring](http://www.baeldung.com/spring-mvc-static-resources) +- [Cachable Static Assets with Spring MVC](https://www.baeldung.com/cachable-static-assets-with-spring-mvc) +- [Minification of JS and CSS Assets with Maven](https://www.baeldung.com/maven-minification-of-js-and-css-assets) +- [Serve Static Resources with Spring](https://www.baeldung.com/spring-mvc-static-resources) - [Load a Resource as a String in Spring](https://www.baeldung.com/spring-load-resource-as-string) diff --git a/spring-swagger-codegen/README.md b/spring-swagger-codegen/README.md index dbcf2b3e8d..e375ae7594 100644 --- a/spring-swagger-codegen/README.md +++ b/spring-swagger-codegen/README.md @@ -4,4 +4,4 @@ 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) +- [Generate Spring Boot REST Client with Swagger](https://www.baeldung.com/spring-boot-rest-client-swagger-codegen) diff --git a/spring-swagger-codegen/spring-swagger-codegen-api-client/README.md b/spring-swagger-codegen/spring-swagger-codegen-api-client/README.md index 455a69b2f3..cffab6b9c7 100644 --- a/spring-swagger-codegen/spring-swagger-codegen-api-client/README.md +++ b/spring-swagger-codegen/spring-swagger-codegen-api-client/README.md @@ -1,4 +1,6 @@ -# spring-swagger-codegen-api-client +## Spring Swagger Codegen API Client + +This module contains the code for [Generate Spring Boot REST Client with Swagger](http://www.baeldung.com/spring-boot-rest-client-swagger-codegen). ## Requirements diff --git a/spring-swagger-codegen/spring-swagger-codegen-app/README.md b/spring-swagger-codegen/spring-swagger-codegen-app/README.md new file mode 100644 index 0000000000..1cb9e35d99 --- /dev/null +++ b/spring-swagger-codegen/spring-swagger-codegen-app/README.md @@ -0,0 +1,3 @@ +## Spring Swagger Codegen App + +This module contains the code for [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 88f3e35f8c..329ef8580c 100644 --- a/spring-thymeleaf/README.md +++ b/spring-thymeleaf/README.md @@ -3,20 +3,20 @@ This module contains articles about Spring with Thymeleaf ### Relevant Articles: -- [Introduction to Using Thymeleaf in Spring](http://www.baeldung.com/thymeleaf-in-spring-mvc) -- [CSRF Protection with Spring MVC and Thymeleaf](http://www.baeldung.com/csrf-thymeleaf-with-spring-security) -- [Thymeleaf: Custom Layout Dialect](http://www.baeldung.com/thymeleaf-spring-layouts) -- [Spring and Thymeleaf 3: Expressions](http://www.baeldung.com/spring-thymeleaf-3-expressions) -- [Spring MVC + Thymeleaf 3.0: New Features](http://www.baeldung.com/spring-thymeleaf-3) -- [How to Work with Dates in Thymeleaf](http://www.baeldung.com/dates-in-thymeleaf) -- [How to Create an Executable JAR with Maven](http://www.baeldung.com/executable-jar-with-maven) -- [Working with Boolean in Thymeleaf](http://www.baeldung.com/thymeleaf-boolean) -- [Working with Fragments in Thymeleaf](http://www.baeldung.com/spring-thymeleaf-fragments) -- [Conditionals in Thymeleaf](http://www.baeldung.com/spring-thymeleaf-conditionals) -- [Iteration in Thymeleaf](http://www.baeldung.com/thymeleaf-iteration) -- [Working With Arrays in Thymeleaf](http://www.baeldung.com/thymeleaf-arrays) -- [Spring with Thymeleaf Pagination for a List](http://www.baeldung.com/spring-thymeleaf-pagination) -- [Working with Select and Option in Thymeleaf](http://www.baeldung.com/thymeleaf-select-option) +- [Introduction to Using Thymeleaf in Spring](https://www.baeldung.com/thymeleaf-in-spring-mvc) +- [CSRF Protection with Spring MVC and Thymeleaf](https://www.baeldung.com/csrf-thymeleaf-with-spring-security) +- [Thymeleaf: Custom Layout Dialect](https://www.baeldung.com/thymeleaf-spring-layouts) +- [Spring and Thymeleaf 3: Expressions](https://www.baeldung.com/spring-thymeleaf-3-expressions) +- [Spring MVC + Thymeleaf 3.0: New Features](https://www.baeldung.com/spring-thymeleaf-3) +- [How to Work with Dates in Thymeleaf](https://www.baeldung.com/dates-in-thymeleaf) +- [How to Create an Executable JAR with Maven](https://www.baeldung.com/executable-jar-with-maven) +- [Working with Boolean in Thymeleaf](https://www.baeldung.com/thymeleaf-boolean) +- [Working with Fragments in Thymeleaf](https://www.baeldung.com/spring-thymeleaf-fragments) +- [Conditionals in Thymeleaf](https://www.baeldung.com/spring-thymeleaf-conditionals) +- [Iteration in Thymeleaf](https://www.baeldung.com/thymeleaf-iteration) +- [Working With Arrays in Thymeleaf](https://www.baeldung.com/thymeleaf-arrays) +- [Spring with Thymeleaf Pagination for a List](https://www.baeldung.com/spring-thymeleaf-pagination) +- [Working with Select and Option in Thymeleaf](https://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) diff --git a/spring-vertx/README.md b/spring-vertx/README.md index e9557f330b..e310079ff4 100644 --- a/spring-vertx/README.md +++ b/spring-vertx/README.md @@ -3,4 +3,4 @@ This module contains articles about Spring with Vert.x ### Relevant Articles: -- [Vert.x Spring Integration](http://www.baeldung.com/spring-vertx) +- [Vert.x Spring Integration](https://www.baeldung.com/spring-vertx) diff --git a/spring-webflux-amqp/README.md b/spring-webflux-amqp/README.md index b7ac73b53d..20ddbe469a 100644 --- a/spring-webflux-amqp/README.md +++ b/spring-webflux-amqp/README.md @@ -4,4 +4,4 @@ This module contains articles about Spring WebFlux with AMQP ### Relevant Articles: -- [Spring AMQP in Reactive Applications](http://www.baeldung.com/spring-amqp-reactive) +- [Spring AMQP in Reactive Applications](https://www.baeldung.com/spring-amqp-reactive) diff --git a/spring-zuul/README.md b/spring-zuul/README.md index a2ea211195..e1067ebb9f 100644 --- a/spring-zuul/README.md +++ b/spring-zuul/README.md @@ -3,4 +3,4 @@ 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) +- [Spring REST with a Zuul Proxy](https://www.baeldung.com/spring-rest-with-zuul-proxy) diff --git a/static-analysis/README.md b/static-analysis/README.md index e3710831cf..235b79853b 100644 --- a/static-analysis/README.md +++ b/static-analysis/README.md @@ -4,5 +4,5 @@ This module contains articles about static program analysis ## Relevant articles: -- [Introduction to PMD](http://www.baeldung.com/pmd) -- [Java Static Analysis Tools in Eclipse and IntelliJ IDEA](http://www.baeldung.com/java-static-analysis-tools) +- [Introduction to PMD](https://www.baeldung.com/pmd) +- [Java Static Analysis Tools in Eclipse and IntelliJ IDEA](https://www.baeldung.com/java-static-analysis-tools) diff --git a/stripe/README.md b/stripe/README.md index a7134b9633..9e41dcf945 100644 --- a/stripe/README.md +++ b/stripe/README.md @@ -4,5 +4,5 @@ This module contains articles about Stripe ### Relevant articles -- [Introduction to the Stripe API for Java](http://www.baeldung.com/java-stripe-api) +- [Introduction to the Stripe API for Java](https://www.baeldung.com/java-stripe-api) diff --git a/structurizr/README.md b/structurizr/README.md index 90ce49b482..15331228bd 100644 --- a/structurizr/README.md +++ b/structurizr/README.md @@ -3,4 +3,4 @@ This module contains articles about Structurizr ### Relevant Articles: -- [Intro to Structurizr](http://www.baeldung.com/structurizr) +- [Intro to Structurizr](https://www.baeldung.com/structurizr) diff --git a/struts-2/README.md b/struts-2/README.md index 6121ab3166..d15b94f662 100644 --- a/struts-2/README.md +++ b/struts-2/README.md @@ -4,4 +4,4 @@ This module contains articles about Struts 2 ### Relevant articles -- [A Quick Struts 2 Intro](http://www.baeldung.com/struts-2-intro) +- [A Quick Struts 2 Intro](https://www.baeldung.com/struts-2-intro) diff --git a/testing-modules/easymock/README.md b/testing-modules/easymock/README.md new file mode 100644 index 0000000000..c24ffa9099 --- /dev/null +++ b/testing-modules/easymock/README.md @@ -0,0 +1,3 @@ +## Relevant Articles + +- [Mocking a Void Method with EasyMock](https://www.baeldung.com/easymock-mocking-void-method) diff --git a/testing-modules/junit-4/README.md b/testing-modules/junit-4/README.md index dd975daf58..d19a0a1e47 100644 --- a/testing-modules/junit-4/README.md +++ b/testing-modules/junit-4/README.md @@ -3,3 +3,4 @@ - [Guide to JUnit 4 Rules](https://www.baeldung.com/junit-4-rules) - [Custom JUnit 4 Test Runners](http://www.baeldung.com/junit-4-custom-runners) - [Introduction to JUnitParams](http://www.baeldung.com/junit-params) +- [Running JUnit Tests Programmatically, from a Java Application](https://www.baeldung.com/junit-tests-run-programmatically-from-java) diff --git a/testing-modules/junit-5/README.md b/testing-modules/junit-5/README.md index 14e018a5f9..ede60c45a9 100644 --- a/testing-modules/junit-5/README.md +++ b/testing-modules/junit-5/README.md @@ -1,14 +1,8 @@ ### Relevant Articles: -- [A Guide to @RepeatedTest in Junit 5](http://www.baeldung.com/junit-5-repeated-test) -- [Guide to Dynamic Tests in Junit 5](http://www.baeldung.com/junit5-dynamic-tests) -- [A Guide to JUnit 5 Extensions](http://www.baeldung.com/junit-5-extensions) -- [Inject Parameters into JUnit Jupiter Unit Tests](http://www.baeldung.com/junit-5-parameters) -- [Mockito and JUnit 5 – Using ExtendWith](http://www.baeldung.com/mockito-junit-5-extension) -- [JUnit5 Programmatic Extension Registration with @RegisterExtension](http://www.baeldung.com/junit-5-registerextension-annotation) -- [The Order of Tests in JUnit](http://www.baeldung.com/junit-5-test-order) +- [A Guide to JUnit 5 Extensions](https://www.baeldung.com/junit-5-extensions) +- [Inject Parameters into JUnit Jupiter Unit Tests](https://www.baeldung.com/junit-5-parameters) +- [Mockito and JUnit 5 – Using ExtendWith](https://www.baeldung.com/mockito-junit-5-extension) +- [The Order of Tests in JUnit](https://www.baeldung.com/junit-5-test-order) - [Running JUnit Tests Programmatically, from a Java Application](https://www.baeldung.com/junit-tests-run-programmatically-from-java) - [Testing an Abstract Class With JUnit](https://www.baeldung.com/junit-test-abstract-class) -- [A Quick JUnit vs TestNG Comparison](http://www.baeldung.com/junit-vs-testng) -- [Guide to JUnit 5 Parameterized Tests](https://www.baeldung.com/parameterized-tests-junit-5) -- [JUnit 5 Conditional Test Execution with Annotations](https://www.baeldung.com/junit-5-conditional-test-execution) -- [Assertions in JUnit 4 and JUnit 5](http://www.baeldung.com/junit-assertions) +- [Guide to Dynamic Tests in JUnit 5](https://www.baeldung.com/junit5-dynamic-tests) diff --git a/testing-modules/junit-5/pom.xml b/testing-modules/junit-5/pom.xml index b3074635a7..96944b4dc6 100644 --- a/testing-modules/junit-5/pom.xml +++ b/testing-modules/junit-5/pom.xml @@ -26,11 +26,6 @@ junit-jupiter-engine ${junit.jupiter.version} - - org.junit.jupiter - junit-jupiter-params - ${junit.jupiter.version} - org.junit.jupiter junit-jupiter-api diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/DynamicTestsExample.java b/testing-modules/junit-5/src/test/java/com/baeldung/dynamictests/DynamicTestsUnitTest.java similarity index 97% rename from testing-modules/junit-5/src/test/java/com/baeldung/DynamicTestsExample.java rename to testing-modules/junit-5/src/test/java/com/baeldung/dynamictests/DynamicTestsUnitTest.java index b684f3603f..8b3087497b 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/DynamicTestsExample.java +++ b/testing-modules/junit-5/src/test/java/com/baeldung/dynamictests/DynamicTestsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung; +package com.baeldung.dynamictests; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -17,10 +17,8 @@ import org.junit.jupiter.api.DynamicTest; import org.junit.jupiter.api.TestFactory; import org.junit.jupiter.api.function.ThrowingConsumer; -import com.baeldung.helpers.Employee; -import com.baeldung.helpers.EmployeeDao; -public class DynamicTestsExample { +public class DynamicTestsUnitTest { @TestFactory Collection dynamicTestsWithCollection() { diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/dynamictests/Employee.java b/testing-modules/junit-5/src/test/java/com/baeldung/dynamictests/Employee.java new file mode 100644 index 0000000000..4b58a71135 --- /dev/null +++ b/testing-modules/junit-5/src/test/java/com/baeldung/dynamictests/Employee.java @@ -0,0 +1,38 @@ +package com.baeldung.dynamictests; + +public class Employee { + + private long id; + private String firstName; + + public Employee(long id) { + this.id = id; + this.firstName = ""; + } + + public Employee(long id, String firstName) { + this.id = id; + this.firstName = firstName; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + @Override + public String toString() { + return "Employee [id=" + id + ", firstName=" + firstName + "]"; + } +} diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/dynamictests/EmployeeDao.java b/testing-modules/junit-5/src/test/java/com/baeldung/dynamictests/EmployeeDao.java new file mode 100644 index 0000000000..4e2d9a5140 --- /dev/null +++ b/testing-modules/junit-5/src/test/java/com/baeldung/dynamictests/EmployeeDao.java @@ -0,0 +1,16 @@ +package com.baeldung.dynamictests; + +public class EmployeeDao { + + public Employee save(long id) { + return new Employee(id); + } + + public Employee save(long id, String firstName) { + return new Employee(id, firstName); + } + + public Employee update(Employee employee) { + return employee; + } +} diff --git a/testing-modules/junit5-annotations/README.md b/testing-modules/junit5-annotations/README.md new file mode 100644 index 0000000000..02d4cd652a --- /dev/null +++ b/testing-modules/junit5-annotations/README.md @@ -0,0 +1,9 @@ +## JUnit 5 Annotations + +This module contains articles about JUnit 5 Annotations + +### Relevant Articles: +- [A Guide to @RepeatedTest in JUnit 5](https://www.baeldung.com/junit-5-repeated-test) +- [JUnit 5 Conditional Test Execution with Annotations](https://www.baeldung.com/junit-5-conditional-test-execution) +- [JUnit5 Programmatic Extension Registration with @RegisterExtension](https://www.baeldung.com/junit-5-registerextension-annotation) +- [Guide to JUnit 5 Parameterized Tests](https://www.baeldung.com/parameterized-tests-junit-5) diff --git a/testing-modules/junit5-annotations/pom.xml b/testing-modules/junit5-annotations/pom.xml new file mode 100644 index 0000000000..c8abfe909d --- /dev/null +++ b/testing-modules/junit5-annotations/pom.xml @@ -0,0 +1,57 @@ + + + 4.0.0 + junit5-annotations + 1.0-SNAPSHOT + junit5-annotations + Intro to JUnit 5 + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + ../../ + + + + + org.junit.platform + junit-platform-engine + ${junit.platform.version} + + + org.junit.jupiter + junit-jupiter-engine + ${junit.jupiter.version} + + + org.junit.jupiter + junit-jupiter-params + ${junit.jupiter.version} + + + org.junit.jupiter + junit-jupiter-api + ${junit.jupiter.version} + + + org.apache.logging.log4j + log4j-core + ${log4j2.version} + + + org.junit.platform + junit-platform-runner + ${junit.platform.version} + test + + + + + 5.4.2 + 1.4.2 + 2.8.2 + + + diff --git a/testing-modules/junit5-annotations/src/main/java/com/baeldung/junit5/registerextension/LoggingExtension.java b/testing-modules/junit5-annotations/src/main/java/com/baeldung/junit5/registerextension/LoggingExtension.java new file mode 100644 index 0000000000..5de49e028b --- /dev/null +++ b/testing-modules/junit5-annotations/src/main/java/com/baeldung/junit5/registerextension/LoggingExtension.java @@ -0,0 +1,18 @@ +package com.baeldung.junit5.registerextension; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.api.extension.TestInstancePostProcessor; + +public class LoggingExtension implements TestInstancePostProcessor { + + @Override + public void postProcessTestInstance(Object testInstance, ExtensionContext context) throws Exception { + Logger logger = LogManager.getLogger(testInstance.getClass()); + testInstance.getClass() + .getMethod("setLogger", Logger.class) + .invoke(testInstance, logger); + } + +} diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/extensions/RegisterExtensionSampleExtension.java b/testing-modules/junit5-annotations/src/main/java/com/baeldung/junit5/registerextension/RegisterExtensionSampleExtension.java similarity index 95% rename from testing-modules/junit-5/src/test/java/com/baeldung/extensions/RegisterExtensionSampleExtension.java rename to testing-modules/junit5-annotations/src/main/java/com/baeldung/junit5/registerextension/RegisterExtensionSampleExtension.java index 64f4d8fd3e..5339f98875 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/extensions/RegisterExtensionSampleExtension.java +++ b/testing-modules/junit5-annotations/src/main/java/com/baeldung/junit5/registerextension/RegisterExtensionSampleExtension.java @@ -1,4 +1,4 @@ -package com.baeldung.extensions; +package com.baeldung.junit5.registerextension; import org.junit.jupiter.api.extension.BeforeAllCallback; import org.junit.jupiter.api.extension.BeforeEachCallback; diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/RepeatedTestExample.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/RepeatedTestAnnotationUnitTest.java similarity index 95% rename from testing-modules/junit-5/src/test/java/com/baeldung/RepeatedTestExample.java rename to testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/RepeatedTestAnnotationUnitTest.java index 749d7064bc..f9121d8790 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/RepeatedTestExample.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/RepeatedTestAnnotationUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung; +package com.baeldung.junit5; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -8,7 +8,7 @@ import org.junit.jupiter.api.RepeatedTest; import org.junit.jupiter.api.RepetitionInfo; import org.junit.jupiter.api.TestInfo; -public class RepeatedTestExample { +public class RepeatedTestAnnotationUnitTest { @BeforeEach void beforeEachTest() { diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/conditional/ConditionalAnnotationsUnitTest.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/conditional/ConditionalAnnotationsUnitTest.java similarity index 98% rename from testing-modules/junit-5/src/test/java/com/baeldung/conditional/ConditionalAnnotationsUnitTest.java rename to testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/conditional/ConditionalAnnotationsUnitTest.java index ec76bd1488..ddceb78cac 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/conditional/ConditionalAnnotationsUnitTest.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/conditional/ConditionalAnnotationsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.conditional; +package com.baeldung.junit5.conditional; import org.junit.jupiter.api.RepeatedTest; import org.junit.jupiter.api.Test; diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/BlankStringsArgumentsProvider.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/BlankStringsArgumentsProvider.java similarity index 92% rename from testing-modules/junit-5/src/test/java/com/baeldung/parameterized/BlankStringsArgumentsProvider.java rename to testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/BlankStringsArgumentsProvider.java index 1d2c76d37b..6c626efa40 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/BlankStringsArgumentsProvider.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/BlankStringsArgumentsProvider.java @@ -1,4 +1,4 @@ -package com.baeldung.parameterized; +package com.baeldung.junit5.parameterized; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.provider.Arguments; diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/EnumsUnitTest.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/EnumsUnitTest.java similarity index 97% rename from testing-modules/junit-5/src/test/java/com/baeldung/parameterized/EnumsUnitTest.java rename to testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/EnumsUnitTest.java index 0b2068dbf1..1e3bbcc772 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/EnumsUnitTest.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/EnumsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.parameterized; +package com.baeldung.junit5.parameterized; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/LocalDateUnitTest.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/LocalDateUnitTest.java similarity index 92% rename from testing-modules/junit-5/src/test/java/com/baeldung/parameterized/LocalDateUnitTest.java rename to testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/LocalDateUnitTest.java index 95487705f5..d411fcb7e2 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/LocalDateUnitTest.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/LocalDateUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.parameterized; +package com.baeldung.junit5.parameterized; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.converter.ConvertWith; diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/Numbers.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/Numbers.java similarity index 72% rename from testing-modules/junit-5/src/test/java/com/baeldung/parameterized/Numbers.java rename to testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/Numbers.java index 8a9b229aac..094da6de05 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/Numbers.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/Numbers.java @@ -1,4 +1,4 @@ -package com.baeldung.parameterized; +package com.baeldung.junit5.parameterized; public class Numbers { diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/NumbersUnitTest.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/NumbersUnitTest.java similarity index 89% rename from testing-modules/junit-5/src/test/java/com/baeldung/parameterized/NumbersUnitTest.java rename to testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/NumbersUnitTest.java index b3a3371bb2..76ebf93f93 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/NumbersUnitTest.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/NumbersUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.parameterized; +package com.baeldung.junit5.parameterized; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/Person.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/Person.java similarity index 92% rename from testing-modules/junit-5/src/test/java/com/baeldung/parameterized/Person.java rename to testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/Person.java index 225f11ba29..c635b2e4da 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/Person.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/Person.java @@ -1,4 +1,4 @@ -package com.baeldung.parameterized; +package com.baeldung.junit5.parameterized; class Person { diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/PersonAggregator.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/PersonAggregator.java similarity index 93% rename from testing-modules/junit-5/src/test/java/com/baeldung/parameterized/PersonAggregator.java rename to testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/PersonAggregator.java index df2ddc9e66..c899115df8 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/PersonAggregator.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/PersonAggregator.java @@ -1,4 +1,4 @@ -package com.baeldung.parameterized; +package com.baeldung.junit5.parameterized; import org.junit.jupiter.api.extension.ParameterContext; import org.junit.jupiter.params.aggregator.ArgumentsAccessor; diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/PersonUnitTest.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/PersonUnitTest.java similarity index 96% rename from testing-modules/junit-5/src/test/java/com/baeldung/parameterized/PersonUnitTest.java rename to testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/PersonUnitTest.java index b30ecc748e..62a2f32a63 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/PersonUnitTest.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/PersonUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.parameterized; +package com.baeldung.junit5.parameterized; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.aggregator.AggregateWith; diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/SlashyDateConverter.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/SlashyDateConverter.java similarity index 95% rename from testing-modules/junit-5/src/test/java/com/baeldung/parameterized/SlashyDateConverter.java rename to testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/SlashyDateConverter.java index 40773d29a9..d96fbce121 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/SlashyDateConverter.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/SlashyDateConverter.java @@ -1,4 +1,4 @@ -package com.baeldung.parameterized; +package com.baeldung.junit5.parameterized; import org.junit.jupiter.api.extension.ParameterContext; import org.junit.jupiter.params.converter.ArgumentConversionException; diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/StringParams.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/StringParams.java similarity index 78% rename from testing-modules/junit-5/src/test/java/com/baeldung/parameterized/StringParams.java rename to testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/StringParams.java index bc9f881bd4..022fb797a4 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/StringParams.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/StringParams.java @@ -1,4 +1,4 @@ -package com.baeldung.parameterized; +package com.baeldung.junit5.parameterized; import java.util.stream.Stream; diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/Strings.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/Strings.java similarity index 74% rename from testing-modules/junit-5/src/test/java/com/baeldung/parameterized/Strings.java rename to testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/Strings.java index f8e29f6b7f..5ee29339d7 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/Strings.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/Strings.java @@ -1,4 +1,4 @@ -package com.baeldung.parameterized; +package com.baeldung.junit5.parameterized; class Strings { diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/StringsUnitTest.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/StringsUnitTest.java similarity index 97% rename from testing-modules/junit-5/src/test/java/com/baeldung/parameterized/StringsUnitTest.java rename to testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/StringsUnitTest.java index 6aea7668f1..064f305295 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/StringsUnitTest.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/StringsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.parameterized; +package com.baeldung.junit5.parameterized; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.*; @@ -44,7 +44,7 @@ class StringsUnitTest { } @ParameterizedTest - @MethodSource("com.baeldung.parameterized.StringParams#blankStrings") + @MethodSource("com.baeldung.junit5.parameterized.StringParams#blankStrings") void isBlank_ShouldReturnTrueForNullOrBlankStringsExternalSource(String input) { assertTrue(Strings.isBlank(input)); } diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/VariableArgumentsProvider.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/VariableArgumentsProvider.java similarity index 96% rename from testing-modules/junit-5/src/test/java/com/baeldung/parameterized/VariableArgumentsProvider.java rename to testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/VariableArgumentsProvider.java index a96d01e854..af10860f6a 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/VariableArgumentsProvider.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/VariableArgumentsProvider.java @@ -1,4 +1,4 @@ -package com.baeldung.parameterized; +package com.baeldung.junit5.parameterized; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.provider.Arguments; diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/VariableSource.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/VariableSource.java similarity index 90% rename from testing-modules/junit-5/src/test/java/com/baeldung/parameterized/VariableSource.java rename to testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/VariableSource.java index 9c1d07c1be..11187a4865 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/parameterized/VariableSource.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/parameterized/VariableSource.java @@ -1,4 +1,4 @@ -package com.baeldung.parameterized; +package com.baeldung.junit5.parameterized; import org.junit.jupiter.params.provider.ArgumentsSource; diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/RegisterExtensionUnitTest.java b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/registerextension/RegisterExtensionUnitTest.java similarity index 86% rename from testing-modules/junit-5/src/test/java/com/baeldung/RegisterExtensionUnitTest.java rename to testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/registerextension/RegisterExtensionUnitTest.java index 721cfdb013..7b787f96d0 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/RegisterExtensionUnitTest.java +++ b/testing-modules/junit5-annotations/src/test/java/com/baeldung/junit5/registerextension/RegisterExtensionUnitTest.java @@ -1,6 +1,6 @@ -package com.baeldung; +package com.baeldung.junit5.registerextension; -import com.baeldung.extensions.RegisterExtensionSampleExtension; +import com.baeldung.junit5.registerextension.RegisterExtensionSampleExtension; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/testing-modules/junit-5/src/test/resources/data.csv b/testing-modules/junit5-annotations/src/test/resources/data.csv similarity index 100% rename from testing-modules/junit-5/src/test/resources/data.csv rename to testing-modules/junit5-annotations/src/test/resources/data.csv diff --git a/testing-modules/junit5-migration/README.md b/testing-modules/junit5-migration/README.md index b97ff8255c..84e540b466 100644 --- a/testing-modules/junit5-migration/README.md +++ b/testing-modules/junit5-migration/README.md @@ -1,2 +1,10 @@ +## JUnit 5 migration -This is the code for the Junit 4 - Junit 5 Migration E-book. +This module contains articles about migrating to JUnit 5. + +The code for the JUnit 4 - JUnit 5 E-book is in `com.baeldung.junit4` and `com.baeldung.junit5`. + +### Relevant Articles: +- [JUnit 5 Migration](https://www.baeldung.com/junit-5-migration) +- [A Quick JUnit vs TestNG Comparison](https://www.baeldung.com/junit-vs-testng) +- [Assertions in JUnit 4 and JUnit 5](https://www.baeldung.com/junit-assertions) diff --git a/testing-modules/junit-5/src/main/java/com/baeldung/junit5vstestng/Calculator.java b/testing-modules/junit5-migration/src/main/java/com/baeldung/junit5vstestng/Calculator.java similarity index 100% rename from testing-modules/junit-5/src/main/java/com/baeldung/junit5vstestng/Calculator.java rename to testing-modules/junit5-migration/src/main/java/com/baeldung/junit5vstestng/Calculator.java diff --git a/testing-modules/junit-5/src/main/java/com/baeldung/junit5vstestng/DivideByZeroException.java b/testing-modules/junit5-migration/src/main/java/com/baeldung/junit5vstestng/DivideByZeroException.java similarity index 100% rename from testing-modules/junit-5/src/main/java/com/baeldung/junit5vstestng/DivideByZeroException.java rename to testing-modules/junit5-migration/src/main/java/com/baeldung/junit5vstestng/DivideByZeroException.java diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/junit4vstestng/SortedUnitTest.java b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit4vstestng/SortedUnitTest.java similarity index 100% rename from testing-modules/junit-5/src/test/java/com/baeldung/junit4vstestng/SortedUnitTest.java rename to testing-modules/junit5-migration/src/test/java/com/baeldung/junit4vstestng/SortedUnitTest.java diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/junit4vstestng/SummationServiceIntegrationTest.java b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit4vstestng/SummationServiceIntegrationTest.java similarity index 100% rename from testing-modules/junit-5/src/test/java/com/baeldung/junit4vstestng/SummationServiceIntegrationTest.java rename to testing-modules/junit5-migration/src/test/java/com/baeldung/junit4vstestng/SummationServiceIntegrationTest.java diff --git a/testing-modules/junit-4/src/test/java/com/baeldung/junit/AssertionsUnitTest.java b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vsjunit4assertions/Junit4AssertionsUnitTest.java similarity index 96% rename from testing-modules/junit-4/src/test/java/com/baeldung/junit/AssertionsUnitTest.java rename to testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vsjunit4assertions/Junit4AssertionsUnitTest.java index b0209b01aa..7e74c2dace 100644 --- a/testing-modules/junit-4/src/test/java/com/baeldung/junit/AssertionsUnitTest.java +++ b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vsjunit4assertions/Junit4AssertionsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.junit; +package com.baeldung.junit5vsjunit4assertions; import org.junit.Test; @@ -10,7 +10,7 @@ import static org.junit.Assert.*; /** * Unit test that demonstrate the different assertions available within JUnit 4 */ -public class AssertionsUnitTest { +public class Junit4AssertionsUnitTest { @Test public void whenAssertingEquality_thenEqual() { diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/AssertionUnitTest.java b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vsjunit4assertions/Junit5AssertionsUnitTest.java similarity index 98% rename from testing-modules/junit-5/src/test/java/com/baeldung/AssertionUnitTest.java rename to testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vsjunit4assertions/Junit5AssertionsUnitTest.java index f1f7c531f2..40b9143a71 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/AssertionUnitTest.java +++ b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vsjunit4assertions/Junit5AssertionsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung; +package com.baeldung.junit5vsjunit4assertions; import static java.time.Duration.ofSeconds; import static java.util.Arrays.asList; @@ -32,7 +32,7 @@ import org.junit.jupiter.api.Test; * Unit test that demonstrate the different assertions available within JUnit 4 */ @DisplayName("Test case for assertions") -public class AssertionUnitTest { +public class Junit5AssertionsUnitTest { @Test @DisplayName("Arrays should be equals") diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/CalculatorUnitTest.java b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/CalculatorUnitTest.java similarity index 100% rename from testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/CalculatorUnitTest.java rename to testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/CalculatorUnitTest.java diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/Class1UnitTest.java b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/Class1UnitTest.java similarity index 100% rename from testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/Class1UnitTest.java rename to testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/Class1UnitTest.java diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/Class2UnitTest.java b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/Class2UnitTest.java similarity index 100% rename from testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/Class2UnitTest.java rename to testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/Class2UnitTest.java diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/CustomNameUnitTest.java b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/CustomNameUnitTest.java similarity index 100% rename from testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/CustomNameUnitTest.java rename to testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/CustomNameUnitTest.java diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/ParameterizedUnitTest.java b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/ParameterizedUnitTest.java similarity index 100% rename from testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/ParameterizedUnitTest.java rename to testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/ParameterizedUnitTest.java diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/PizzaDeliveryStrategy.java b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/PizzaDeliveryStrategy.java similarity index 100% rename from testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/PizzaDeliveryStrategy.java rename to testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/PizzaDeliveryStrategy.java diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/SelectClassesSuiteUnitTest.java b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/SelectClassesSuiteUnitTest.java similarity index 100% rename from testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/SelectClassesSuiteUnitTest.java rename to testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/SelectClassesSuiteUnitTest.java diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/SelectPackagesSuiteUnitTest.java b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/SelectPackagesSuiteUnitTest.java similarity index 100% rename from testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/SelectPackagesSuiteUnitTest.java rename to testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/SelectPackagesSuiteUnitTest.java diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/SummationServiceUnitTest.java b/testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/SummationServiceUnitTest.java similarity index 100% rename from testing-modules/junit-5/src/test/java/com/baeldung/junit5vstestng/SummationServiceUnitTest.java rename to testing-modules/junit5-migration/src/test/java/com/baeldung/junit5vstestng/SummationServiceUnitTest.java diff --git a/testing-modules/pom.xml b/testing-modules/pom.xml index 6400a2d7e7..aad709cfe9 100644 --- a/testing-modules/pom.xml +++ b/testing-modules/pom.xml @@ -19,6 +19,7 @@ gatling groovy-spock junit-5 + junit5-annotations junit5-migration load-testing-comparison mockito @@ -29,7 +30,6 @@ parallel-tests-junit rest-assured rest-testing - selenium-junit-testng spring-testing test-containers diff --git a/testing-modules/runjunitfromjava/src/test/java/com/baeldung/junit4/runfromjava/FirstUnitTest.java b/testing-modules/runjunitfromjava/src/test/java/com/baeldung/junit4/runfromjava/FirstUnitTest.java deleted file mode 100644 index 588a1e5d66..0000000000 --- a/testing-modules/runjunitfromjava/src/test/java/com/baeldung/junit4/runfromjava/FirstUnitTest.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.junit4.runfromjava; - -import org.junit.Test; - -import static org.junit.Assert.assertTrue; - - -public class FirstUnitTest { - - @Test - public void whenThis_thenThat() { - assertTrue(true); - } - - @Test - public void whenSomething_thenSomething() { - assertTrue(true); - } - - @Test - public void whenSomethingElse_thenSomethingElse() { - assertTrue(true); - } - -} diff --git a/testing-modules/runjunitfromjava/src/test/java/com/baeldung/junit4/runfromjava/SecondUnitTest.java b/testing-modules/runjunitfromjava/src/test/java/com/baeldung/junit4/runfromjava/SecondUnitTest.java deleted file mode 100644 index e2d75021cf..0000000000 --- a/testing-modules/runjunitfromjava/src/test/java/com/baeldung/junit4/runfromjava/SecondUnitTest.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.baeldung.junit4.runfromjava; - -import org.junit.Test; - -import static org.junit.Assert.assertTrue; - -public class SecondUnitTest { - - @Test - public void whenSomething_thenSomething() { - assertTrue(true); - } - - @Test - public void whensomethingElse_thenSomethingElse() { - assertTrue(true); - } -} diff --git a/testing-modules/runjunitfromjava/src/test/java/com/baeldung/junit5/runfromjava/FirstUnitTest.java b/testing-modules/runjunitfromjava/src/test/java/com/baeldung/junit5/runfromjava/FirstUnitTest.java deleted file mode 100644 index 57c505781d..0000000000 --- a/testing-modules/runjunitfromjava/src/test/java/com/baeldung/junit5/runfromjava/FirstUnitTest.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.baeldung.junit5.runfromjava; - -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertTrue; - -class FirstUnitTest { - - @Test - void whenThis_thenThat() { - assertTrue(true); - } - - @Test - void whenSomething_thenSomething() { - assertTrue(true); - } - - @Test - void whenSomethingElse_thenSomethingElse() { - assertTrue(true); - } - -} diff --git a/testing-modules/runjunitfromjava/src/test/java/com/baeldung/junit5/runfromjava/SecondUnitTest.java b/testing-modules/runjunitfromjava/src/test/java/com/baeldung/junit5/runfromjava/SecondUnitTest.java deleted file mode 100644 index fbfb68898b..0000000000 --- a/testing-modules/runjunitfromjava/src/test/java/com/baeldung/junit5/runfromjava/SecondUnitTest.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.baeldung.junit5.runfromjava; - -import org.junit.jupiter.api.RepeatedTest; - -import static org.junit.jupiter.api.Assertions.assertTrue; - -class SecondUnitTest { - - @RepeatedTest(10) - void whenSomething_thenSomething() { - assertTrue(true); - } - - @RepeatedTest(5) - void whenSomethingElse_thenSomethingElse() { - assertTrue(true); - } -} diff --git a/testing-modules/spring-testing/pom.xml b/testing-modules/spring-testing/pom.xml index 6f2700e2df..8a76dc903c 100644 --- a/testing-modules/spring-testing/pom.xml +++ b/testing-modules/spring-testing/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 org.baeldung spring-testing @@ -15,18 +16,26 @@ - org.hamcrest java-hamcrest ${hamcrest.version} + + org.projectlombok + lombok + ${lombok.version} + provided + + org.springframework.boot spring-boot-starter LATEST + + org.springframework.boot spring-boot-starter-test @@ -44,7 +53,7 @@ LATEST - org.springframework + org.springframework spring-webmvc ${spring.version} @@ -64,6 +73,17 @@ ${junit.jupiter.version} test + + org.junit.jupiter + junit-jupiter-engine + ${junit.jupiter.version} + + + org.junit.jupiter + junit-jupiter-api + ${junit.jupiter.version} + test + org.awaitility awaitility diff --git a/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/SpringDataRestApplication.java b/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/SpringDataRestApplication.java new file mode 100644 index 0000000000..ab784532a7 --- /dev/null +++ b/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/SpringDataRestApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.dirtiescontext; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringDataRestApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringDataRestApplication.class, args); + } + +} diff --git a/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/User.java b/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/User.java new file mode 100644 index 0000000000..4d453c5e91 --- /dev/null +++ b/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/User.java @@ -0,0 +1,9 @@ +package com.baeldung.dirtiescontext; + +public class User { + + String firstName; + + String lastName; + +} diff --git a/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/UserCache.java b/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/UserCache.java new file mode 100644 index 0000000000..f4fba1f310 --- /dev/null +++ b/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/UserCache.java @@ -0,0 +1,28 @@ +package com.baeldung.dirtiescontext; + +import java.util.HashSet; +import java.util.Set; + +import org.springframework.stereotype.Component; + +import lombok.Getter; + +@Component +public class UserCache { + + @Getter + private Set userList = new HashSet<>(); + + public boolean addUser(String user) { + return userList.add(user); + } + + public boolean removeUser(String user) { + return userList.remove(user); + } + + public void printUserList(String message) { + System.out.println(message + ": " + userList); + } + +} \ No newline at end of file diff --git a/testing-modules/spring-testing/src/main/java/com/baeldung/testexecutionlisteners/AdditionService.java b/testing-modules/spring-testing/src/main/java/com/baeldung/testexecutionlisteners/AdditionService.java new file mode 100644 index 0000000000..8711c4edc2 --- /dev/null +++ b/testing-modules/spring-testing/src/main/java/com/baeldung/testexecutionlisteners/AdditionService.java @@ -0,0 +1,10 @@ +package com.baeldung.testexecutionlisteners; + +import org.springframework.stereotype.Service; + +@Service +public class AdditionService { + public int add(int a, int b) { + return a + b; + } +} diff --git a/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java b/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java new file mode 100644 index 0000000000..f3e7b8c228 --- /dev/null +++ b/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java @@ -0,0 +1,49 @@ +package com.baeldung.dirtiescontext; + +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.MethodMode; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +@TestMethodOrder(OrderAnnotation.class) +@ExtendWith(SpringExtension.class) +@SpringBootTest(classes = SpringDataRestApplication.class) +class DirtiesContextIntegrationTest { + + @Autowired + protected UserCache userCache; + + @Test + @Order(1) + void addJaneDoeAndPrintCache() { + userCache.addUser("Jane Doe"); + userCache.printUserList("addJaneDoeAndPrintCache"); + } + + @Test + @Order(2) + void printCache() { + userCache.printUserList("printCache"); + } + + @DirtiesContext(methodMode = MethodMode.AFTER_METHOD) + @Test + @Order(3) + void addJohnDoeAndPrintCache() { + userCache.addUser("John Doe"); + userCache.printUserList("addJohnDoeAndPrintCache"); + } + + @Test + @Order(4) + void printCacheAgain() { + userCache.printUserList("printCacheAgain"); + } + +} diff --git a/testing-modules/spring-testing/src/test/java/com/baeldung/testexecutionlisteners/AdditionServiceUnitTest.java b/testing-modules/spring-testing/src/test/java/com/baeldung/testexecutionlisteners/AdditionServiceUnitTest.java new file mode 100644 index 0000000000..bbe537a3ce --- /dev/null +++ b/testing-modules/spring-testing/src/test/java/com/baeldung/testexecutionlisteners/AdditionServiceUnitTest.java @@ -0,0 +1,22 @@ +package com.baeldung.testexecutionlisteners; + +import static org.junit.Assert.assertThat; + +import org.hamcrest.Matchers; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = AdditionService.class) +public class AdditionServiceUnitTest { + @Autowired + private AdditionService additionService; + + @Test + public void whenValidNumbersPassed_thenReturnSum() { + assertThat(additionService.add(5, 13), Matchers.is(18)); + } +} diff --git a/testing-modules/spring-testing/src/test/java/com/baeldung/testexecutionlisteners/CustomTestExecutionListener.java b/testing-modules/spring-testing/src/test/java/com/baeldung/testexecutionlisteners/CustomTestExecutionListener.java new file mode 100644 index 0000000000..748137192d --- /dev/null +++ b/testing-modules/spring-testing/src/test/java/com/baeldung/testexecutionlisteners/CustomTestExecutionListener.java @@ -0,0 +1,36 @@ +package com.baeldung.testexecutionlisteners; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.Ordered; +import org.springframework.test.context.TestContext; +import org.springframework.test.context.TestExecutionListener; + +public class CustomTestExecutionListener implements TestExecutionListener, Ordered { + private static final Logger logger = LoggerFactory.getLogger(CustomTestExecutionListener.class); + + public void beforeTestClass(TestContext testContext) throws Exception { + logger.info("beforeTestClass : {}", testContext.getTestClass()); + }; + + public void prepareTestInstance(TestContext testContext) throws Exception { + logger.info("prepareTestInstance : {}", testContext.getTestClass()); + }; + + public void beforeTestMethod(TestContext testContext) throws Exception { + logger.info("beforeTestMethod : {}", testContext.getTestMethod()); + }; + + public void afterTestMethod(TestContext testContext) throws Exception { + logger.info("afterTestMethod : {}", testContext.getTestMethod()); + }; + + public void afterTestClass(TestContext testContext) throws Exception { + logger.info("afterTestClass : {}", testContext.getTestClass()); + } + + @Override + public int getOrder() { + return Integer.MAX_VALUE; + }; +} diff --git a/testing-modules/spring-testing/src/test/java/com/baeldung/testexecutionlisteners/TestExecutionListenersWithMergeModeUnitTest.java b/testing-modules/spring-testing/src/test/java/com/baeldung/testexecutionlisteners/TestExecutionListenersWithMergeModeUnitTest.java new file mode 100644 index 0000000000..44937aa755 --- /dev/null +++ b/testing-modules/spring-testing/src/test/java/com/baeldung/testexecutionlisteners/TestExecutionListenersWithMergeModeUnitTest.java @@ -0,0 +1,26 @@ +package com.baeldung.testexecutionlisteners; + +import static org.junit.Assert.assertThat; + +import org.hamcrest.Matchers; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestExecutionListeners; +import org.springframework.test.context.TestExecutionListeners.MergeMode; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@TestExecutionListeners(value = { CustomTestExecutionListener.class }, + mergeMode = MergeMode.MERGE_WITH_DEFAULTS) +@ContextConfiguration(classes = AdditionService.class) +public class TestExecutionListenersWithMergeModeUnitTest { + @Autowired + private AdditionService additionService; + + @Test + public void whenValidNumbersPassed_thenReturnSum() { + assertThat(additionService.add(5, 13), Matchers.is(18)); + } +} diff --git a/testing-modules/spring-testing/src/test/java/com/baeldung/testexecutionlisteners/TestExecutionListenersWithoutMergeModeUnitTest.java b/testing-modules/spring-testing/src/test/java/com/baeldung/testexecutionlisteners/TestExecutionListenersWithoutMergeModeUnitTest.java new file mode 100644 index 0000000000..e25ab9f381 --- /dev/null +++ b/testing-modules/spring-testing/src/test/java/com/baeldung/testexecutionlisteners/TestExecutionListenersWithoutMergeModeUnitTest.java @@ -0,0 +1,26 @@ +package com.baeldung.testexecutionlisteners; + +import static org.junit.Assert.assertThat; + +import org.hamcrest.Matchers; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestExecutionListeners; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; + +@RunWith(SpringRunner.class) +@TestExecutionListeners(value = {CustomTestExecutionListener.class, + DependencyInjectionTestExecutionListener.class}) +@ContextConfiguration(classes = AdditionService.class) +public class TestExecutionListenersWithoutMergeModeUnitTest { + @Autowired + private AdditionService additionService; + + @Test + public void whenValidNumbersPassed_thenReturnSum() { + assertThat(additionService.add(5, 13), Matchers.is(18)); + } +} diff --git a/testing-modules/spring-testing/src/test/resources/META-INF/spring.factories b/testing-modules/spring-testing/src/test/resources/META-INF/spring.factories new file mode 100644 index 0000000000..74d21eb86b --- /dev/null +++ b/testing-modules/spring-testing/src/test/resources/META-INF/spring.factories @@ -0,0 +1,3 @@ +# Test Execution Listeners +org.springframework.test.context.TestExecutionListener=\ +com.baeldung.testexecutionlisteners.CustomTestExecutionListener diff --git a/testing-modules/testing-libraries/README.md b/testing-modules/testing-libraries/README.md index 0cd9ca7f2e..7191989224 100644 --- a/testing-modules/testing-libraries/README.md +++ b/testing-modules/testing-libraries/README.md @@ -6,5 +6,5 @@ - [Cucumber and Scenario Outline](http://www.baeldung.com/cucumber-scenario-outline) - [Cucumber Java 8 Support](http://www.baeldung.com/cucumber-java-8-support) - [Introduction to Lambda Behave](http://www.baeldung.com/lambda-behave) -- [Running JUnit Tests Programmatically, from a Java Application](https://www.baeldung.com/junit-tests-run-programmatically-from-java) + diff --git a/twilio/README.md b/twilio/README.md index b098473fa9..f298a8b75d 100644 --- a/twilio/README.md +++ b/twilio/README.md @@ -4,4 +4,4 @@ This module contains articles about Twilio ### Relevant Articles: -- [Sending SMS in Java with Twilio](http://www.baeldung.com/java-sms-twilio) +- [Sending SMS in Java with Twilio](https://www.baeldung.com/java-sms-twilio) diff --git a/twitter4j/README.md b/twitter4j/README.md index 0f58240538..e7295fe809 100644 --- a/twitter4j/README.md +++ b/twitter4j/README.md @@ -1,7 +1,7 @@ ## Twitter4J -This module contains articles about Twitter4J +This module contains articles about Twitter4J. ### Relevant articles -- [Introduction to Twitter4J](http://www.baeldung.com/twitter4j) +- [Introduction to Twitter4J](https://www.baeldung.com/twitter4j) diff --git a/undertow/README.md b/undertow/README.md index ceec806bd4..f08c6cdb4d 100644 --- a/undertow/README.md +++ b/undertow/README.md @@ -3,4 +3,4 @@ This module contains articles about JBoss Undertow ### Relevant Articles: -- [Introduction to JBoss Undertow](http://www.baeldung.com/jboss-undertow) +- [Introduction to JBoss Undertow](https://www.baeldung.com/jboss-undertow) diff --git a/vaadin/README.md b/vaadin/README.md index 43d2cc8961..1d570d1f58 100644 --- a/vaadin/README.md +++ b/vaadin/README.md @@ -1,4 +1,4 @@ ## Relevant articles: -- [Introduction to Vaadin](http://www.baeldung.com/vaadin) +- [Introduction to Vaadin](https://www.baeldung.com/vaadin) - [Sample Application with Spring Boot and Vaadin](https://www.baeldung.com/spring-boot-vaadin) diff --git a/vavr/README.md b/vavr/README.md index 266cae91bb..6832f78a62 100644 --- a/vavr/README.md +++ b/vavr/README.md @@ -1,13 +1,13 @@ ### Relevant Articles: -- [Introduction to Vavr](http://www.baeldung.com/vavr) -- [Guide to Try in Vavr](http://www.baeldung.com/vavr-try) -- [Guide to Pattern Matching in Vavr](http://www.baeldung.com/vavr-pattern-matching) -- [Property Testing Example With Vavr](http://www.baeldung.com/vavr-property-testing) -- [Exceptions in Lambda Expression Using Vavr](http://www.baeldung.com/exceptions-using-vavr) -- [Vavr Support in Spring Data](http://www.baeldung.com/spring-vavr) -- [Introduction to Vavr’s Validation API](http://www.baeldung.com/vavr-validation-api) -- [Guide to Collections API in Vavr](http://www.baeldung.com/vavr-collections) -- [Collection Factory Methods for Vavr](http://www.baeldung.com/vavr-collection-factory-methods) -- [Introduction to Future in Vavr](http://www.baeldung.com/vavr-future) -- [Introduction to Vavr’s Either](http://www.baeldung.com/vavr-either) -- [Interoperability Between Java and Vavr](http://www.baeldung.com/java-vavr) +- [Introduction to Vavr](https://www.baeldung.com/vavr) +- [Guide to Try in Vavr](https://www.baeldung.com/vavr-try) +- [Guide to Pattern Matching in Vavr](https://www.baeldung.com/vavr-pattern-matching) +- [Property Testing Example With Vavr](https://www.baeldung.com/vavr-property-testing) +- [Exceptions in Lambda Expression Using Vavr](https://www.baeldung.com/exceptions-using-vavr) +- [Vavr Support in Spring Data](https://www.baeldung.com/spring-vavr) +- [Introduction to Vavr’s Validation API](https://www.baeldung.com/vavr-validation-api) +- [Guide to Collections API in Vavr](https://www.baeldung.com/vavr-collections) +- [Collection Factory Methods for Vavr](https://www.baeldung.com/vavr-collection-factory-methods) +- [Introduction to Future in Vavr](https://www.baeldung.com/vavr-future) +- [Introduction to Vavr’s Either](https://www.baeldung.com/vavr-either) +- [Interoperability Between Java and Vavr](https://www.baeldung.com/java-vavr) diff --git a/vertx-and-rxjava/README.md b/vertx-and-rxjava/README.md index 6d217426e0..622b80feca 100644 --- a/vertx-and-rxjava/README.md +++ b/vertx-and-rxjava/README.md @@ -3,4 +3,4 @@ This module contains articles about RxJava with Vert.x ### Relevant articles -- [Example of Vertx and RxJava Integration](http://www.baeldung.com/vertx-rx-java) +- [Example of Vertx and RxJava Integration](https://www.baeldung.com/vertx-rx-java) diff --git a/vertx/README.md b/vertx/README.md index fffc0afd62..9a62c7b5dc 100644 --- a/vertx/README.md +++ b/vertx/README.md @@ -4,4 +4,4 @@ This module contains articles about Vert.x ### Relevant articles -- [Introduction to Vert.x](http://www.baeldung.com/vertx) +- [Introduction to Vert.x](https://www.baeldung.com/vertx) diff --git a/vertx/pom.xml b/vertx/pom.xml index befd4c45bb..c566681073 100644 --- a/vertx/pom.xml +++ b/vertx/pom.xml @@ -64,9 +64,8 @@
- 3.0.0 - 6.10 - 2.3 + 3.8.1 + 3.2.1 diff --git a/vertx/src/test/java/com/baeldung/RestServiceVerticleIntegrationTest.java b/vertx/src/test/java/com/baeldung/RestServiceVerticleIntegrationTest.java deleted file mode 100644 index 40fa6c7220..0000000000 --- a/vertx/src/test/java/com/baeldung/RestServiceVerticleIntegrationTest.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.baeldung; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; - -import com.baeldung.rest.RestServiceVerticle; - -import io.vertx.core.Vertx; -import io.vertx.ext.unit.Async; -import io.vertx.ext.unit.TestContext; -import io.vertx.ext.unit.junit.VertxUnitRunner; - -@RunWith(VertxUnitRunner.class) -public class RestServiceVerticleIntegrationTest { - - private Vertx vertx; - - @Before - public void setup(TestContext testContext) { - vertx = Vertx.vertx(); - - vertx.deployVerticle(RestServiceVerticle.class.getName(), testContext.asyncAssertSuccess()); - } - - @After - public void tearDown(TestContext testContext) { - vertx.close(testContext.asyncAssertSuccess()); - } - - @Test - public void givenId_whenReceivedArticle_thenSuccess(TestContext testContext) { - final Async async = testContext.async(); - - vertx.createHttpClient() - .getNow(8080, "localhost", "/api/baeldung/articles/article/12345", response -> { - response.handler(responseBody -> { - testContext.assertTrue(responseBody.toString() - .contains("\"id\" : \"12345\"")); - async.complete(); - }); - }); - } - -} diff --git a/vertx/src/test/java/com/baeldung/RestServiceVerticleUnitTest.java b/vertx/src/test/java/com/baeldung/RestServiceVerticleUnitTest.java new file mode 100644 index 0000000000..aab841f5bb --- /dev/null +++ b/vertx/src/test/java/com/baeldung/RestServiceVerticleUnitTest.java @@ -0,0 +1,66 @@ +package com.baeldung; + +import java.io.IOException; +import java.net.ServerSocket; + +import org.junit.After; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; + +import com.baeldung.rest.RestServiceVerticle; + +import io.vertx.core.DeploymentOptions; +import io.vertx.core.Vertx; +import io.vertx.core.json.JsonObject; +import io.vertx.ext.unit.Async; +import io.vertx.ext.unit.TestContext; +import io.vertx.ext.unit.junit.VertxUnitRunner; + +@RunWith(VertxUnitRunner.class) +public class RestServiceVerticleUnitTest { + + private Vertx vertx; + + private int port = 8081; + + @BeforeClass + public static void beforeClass() { + + } + + @Before + public void setup(TestContext testContext) throws IOException { + vertx = Vertx.vertx(); + + // Pick an available and random + ServerSocket socket = new ServerSocket(0); + port = socket.getLocalPort(); + socket.close(); + + DeploymentOptions options = new DeploymentOptions().setConfig(new JsonObject().put("http.port", port)); + + vertx.deployVerticle(RestServiceVerticle.class.getName(), options, testContext.asyncAssertSuccess()); + } + + @After + public void tearDown(TestContext testContext) { + vertx.close(testContext.asyncAssertSuccess()); + } + + @Test + public void givenId_whenReceivedArticle_thenSuccess(TestContext testContext) { + final Async async = testContext.async(); + + vertx.createHttpClient() + .getNow(port, "localhost", "/api/baeldung/articles/article/12345", response -> { + response.handler(responseBody -> { + testContext.assertTrue(responseBody.toString() + .contains("\"id\" : \"12345\"")); + async.complete(); + }); + }); + } + +} diff --git a/vertx/src/test/java/com/baeldung/SimpleServerVerticleIntegrationTest.java b/vertx/src/test/java/com/baeldung/SimpleServerVerticleIntegrationTest.java deleted file mode 100644 index 194f403e25..0000000000 --- a/vertx/src/test/java/com/baeldung/SimpleServerVerticleIntegrationTest.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.baeldung; - -import io.vertx.core.Vertx; -import io.vertx.ext.unit.Async; -import io.vertx.ext.unit.TestContext; -import io.vertx.ext.unit.junit.VertxUnitRunner; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; - -@RunWith(VertxUnitRunner.class) -public class SimpleServerVerticleIntegrationTest { - private Vertx vertx; - - @Before - public void setup(TestContext testContext) { - vertx = Vertx.vertx(); - - vertx.deployVerticle(SimpleServerVerticle.class.getName(), testContext.asyncAssertSuccess()); - } - - @After - public void tearDown(TestContext testContext) { - vertx.close(testContext.asyncAssertSuccess()); - } - - @Test - public void whenReceivedResponse_thenSuccess(TestContext testContext) { - final Async async = testContext.async(); - - vertx - .createHttpClient() - .getNow(8080, "localhost", "/", - response -> response.handler(responseBody -> { - testContext.assertTrue(responseBody - .toString() - .contains("Welcome")); - async.complete(); - })); - } - -} - diff --git a/vertx/src/test/java/com/baeldung/SimpleServerVerticleUnitTest.java b/vertx/src/test/java/com/baeldung/SimpleServerVerticleUnitTest.java new file mode 100644 index 0000000000..761577d5f3 --- /dev/null +++ b/vertx/src/test/java/com/baeldung/SimpleServerVerticleUnitTest.java @@ -0,0 +1,55 @@ +package com.baeldung; + +import io.vertx.core.DeploymentOptions; +import io.vertx.core.Vertx; +import io.vertx.core.json.JsonObject; +import io.vertx.ext.unit.Async; +import io.vertx.ext.unit.TestContext; +import io.vertx.ext.unit.junit.VertxUnitRunner; + +import java.io.IOException; +import java.net.ServerSocket; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +@RunWith(VertxUnitRunner.class) +public class SimpleServerVerticleUnitTest { + private Vertx vertx; + + private int port = 8081; + + @Before + public void setup(TestContext testContext) throws IOException { + vertx = Vertx.vertx(); + + // Pick an available and random + ServerSocket socket = new ServerSocket(0); + port = socket.getLocalPort(); + socket.close(); + + DeploymentOptions options = new DeploymentOptions().setConfig(new JsonObject().put("http.port", port)); + + vertx.deployVerticle(SimpleServerVerticle.class.getName(), options, testContext.asyncAssertSuccess()); + } + + @After + public void tearDown(TestContext testContext) { + vertx.close(testContext.asyncAssertSuccess()); + } + + @Test + public void whenReceivedResponse_thenSuccess(TestContext testContext) { + final Async async = testContext.async(); + + vertx.createHttpClient() + .getNow(port, "localhost", "/", response -> response.handler(responseBody -> { + testContext.assertTrue(responseBody.toString() + .contains("Welcome")); + async.complete(); + })); + } + +} diff --git a/vraptor/README.md b/vraptor/README.md index c5a7128922..037865d934 100644 --- a/vraptor/README.md +++ b/vraptor/README.md @@ -4,7 +4,7 @@ This module contains articles about VRaptor ### Relevant Article: -- [Introduction to VRaptor in Java](http://www.baeldung.com/vraptor) +- [Introduction to VRaptor in Java](https://www.baeldung.com/vraptor) # VRaptor blank project @@ -27,6 +27,3 @@ Após criar seu projeto você pode rodá-lo com um tomcat7 ou +: `mvn tomcat7:run` Cuidado para *jamais* executar `mvn tomcat:run` pois ele usará um tomcat6 (incompatível). - - - diff --git a/wicket/README.md b/wicket/README.md index 91fab2a364..65f0db2661 100644 --- a/wicket/README.md +++ b/wicket/README.md @@ -4,10 +4,10 @@ This module contains articles about Wicket ### Relevant Articles -- [Introduction to the Wicket Framework](http://www.baeldung.com/intro-to-the-wicket-framework) +- [Introduction to the Wicket Framework](https://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 \ No newline at end of file +`mvn jetty:run` diff --git a/xml/README.md b/xml/README.md index f125955089..d1aa3a798b 100644 --- a/xml/README.md +++ b/xml/README.md @@ -3,9 +3,10 @@ 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) +- [Intro to XPath with Java](https://www.baeldung.com/java-xpath) +- [Introduction to JiBX](https://www.baeldung.com/jibx) +- [XML Libraries Support in Java](https://www.baeldung.com/java-xml-libraries) +- [DOM parsing with Xerces](https://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) +- [Modifying an XML Attribute in Java](https://www.baeldung.com/java-modify-xml-attribute) - [Convert XML to HTML in Java](https://www.baeldung.com/java-convert-xml-to-html) diff --git a/xstream/README.md b/xstream/README.md index 62996132c8..505ce1e2d9 100644 --- a/xstream/README.md +++ b/xstream/README.md @@ -4,7 +4,7 @@ This module contains articles about XStream ## Relevant Articles: -- [XStream User Guide: JSON](http://www.baeldung.com/xstream-json-processing) -- [XStream User Guide: Converting XML to Objects](http://www.baeldung.com/xstream-deserialize-xml-to-object) -- [XStream User Guide: Converting Objects to XML](http://www.baeldung.com/xstream-serialize-object-to-xml) +- [XStream User Guide: JSON](https://www.baeldung.com/xstream-json-processing) +- [XStream User Guide: Converting XML to Objects](https://www.baeldung.com/xstream-deserialize-xml-to-object) +- [XStream User Guide: Converting Objects to XML](https://www.baeldung.com/xstream-serialize-object-to-xml) - [Remote Code Execution with XStream](https://www.baeldung.com/java-xstream-remote-code-execution)