4.0.0
- etl
+ spring-cloud-data-flow-etl
0.0.1-SNAPSHOT
etl
pom
diff --git a/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/README.MD b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/README.MD
new file mode 100644
index 0000000000..522c43252f
--- /dev/null
+++ b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/README.MD
@@ -0,0 +1,4 @@
+### Relevant Articles:
+
+- [Getting Started with Stream Processing with Spring Cloud Data Flow](http://www.baeldung.com/spring-cloud-data-flow-stream-processing)
+
diff --git a/spring-cloud-data-flow/data-flow-server/pom.xml b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-server/pom.xml
similarity index 100%
rename from spring-cloud-data-flow/data-flow-server/pom.xml
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-server/pom.xml
diff --git a/spring-cloud-data-flow/data-flow-server/src/main/java/org/baeldung/spring/cloud/DataFlowServerApplication.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-server/src/main/java/org/baeldung/spring/cloud/DataFlowServerApplication.java
similarity index 100%
rename from spring-cloud-data-flow/data-flow-server/src/main/java/org/baeldung/spring/cloud/DataFlowServerApplication.java
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-server/src/main/java/org/baeldung/spring/cloud/DataFlowServerApplication.java
diff --git a/spring-amqp/src/main/resources/logback.xml b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-server/src/main/resources/logback.xml
similarity index 100%
rename from spring-amqp/src/main/resources/logback.xml
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-server/src/main/resources/logback.xml
diff --git a/spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
similarity index 100%
rename from spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-server/src/test/java/org/baeldung/SpringContextIntegrationTest.java
diff --git a/spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/SpringContextTest.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-server/src/test/java/org/baeldung/SpringContextLiveTest.java
similarity index 92%
rename from spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/SpringContextTest.java
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-server/src/test/java/org/baeldung/SpringContextLiveTest.java
index 83cb8067cf..980c096f5e 100644
--- a/spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/SpringContextTest.java
+++ b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-server/src/test/java/org/baeldung/SpringContextLiveTest.java
@@ -8,7 +8,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = DataFlowServerApplication.class)
-public class SpringContextTest {
+public class SpringContextLiveTest {
@Test
public void whenSpringContextIsBootstrapped_thenNoExceptions() {
diff --git a/spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationIntegrationTest.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationIntegrationTest.java
similarity index 100%
rename from spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationIntegrationTest.java
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationIntegrationTest.java
diff --git a/spring-cloud-data-flow/data-flow-shell/pom.xml b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/pom.xml
similarity index 100%
rename from spring-cloud-data-flow/data-flow-shell/pom.xml
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/pom.xml
diff --git a/spring-cloud-data-flow/data-flow-shell/spring-shell.log b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/spring-shell.log
similarity index 100%
rename from spring-cloud-data-flow/data-flow-shell/spring-shell.log
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/spring-shell.log
diff --git a/spring-cloud-data-flow/data-flow-shell/src/main/java/org/baeldung/spring/cloud/DataFlowShellApplication.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/main/java/org/baeldung/spring/cloud/DataFlowShellApplication.java
similarity index 100%
rename from spring-cloud-data-flow/data-flow-shell/src/main/java/org/baeldung/spring/cloud/DataFlowShellApplication.java
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/main/java/org/baeldung/spring/cloud/DataFlowShellApplication.java
diff --git a/spring-cloud-data-flow/data-flow-server/src/main/resources/logback.xml b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/main/resources/logback.xml
similarity index 100%
rename from spring-cloud-data-flow/data-flow-server/src/main/resources/logback.xml
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/main/resources/logback.xml
diff --git a/spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextIntegrationTest.java
similarity index 100%
rename from spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/SpringContextIntegrationTest.java
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextIntegrationTest.java
diff --git a/spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/SpringContextTest.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextLiveTest.java
similarity index 91%
rename from spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/SpringContextTest.java
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextLiveTest.java
index c456f69979..5be4f9c077 100644
--- a/spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/SpringContextTest.java
+++ b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-shell/src/test/java/org/baeldung/SpringContextLiveTest.java
@@ -8,7 +8,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = DataFlowShellApplication.class)
-public class SpringContextTest {
+public class SpringContextLiveTest {
@Test
public void contextLoads() {
diff --git a/spring-cloud-data-flow/log-sink/pom.xml b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/log-sink/pom.xml
similarity index 100%
rename from spring-cloud-data-flow/log-sink/pom.xml
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/log-sink/pom.xml
diff --git a/spring-cloud-data-flow/log-sink/src/main/java/org/baeldung/spring/cloud/LogSinkApplication.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/log-sink/src/main/java/org/baeldung/spring/cloud/LogSinkApplication.java
similarity index 100%
rename from spring-cloud-data-flow/log-sink/src/main/java/org/baeldung/spring/cloud/LogSinkApplication.java
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/log-sink/src/main/java/org/baeldung/spring/cloud/LogSinkApplication.java
diff --git a/spring-cloud-data-flow/data-flow-shell/src/main/resources/logback.xml b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/log-sink/src/main/resources/logback.xml
similarity index 100%
rename from spring-cloud-data-flow/data-flow-shell/src/main/resources/logback.xml
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/log-sink/src/main/resources/logback.xml
diff --git a/spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/log-sink/src/test/java/org/baeldung/SpringContextIntegrationTest.java
similarity index 100%
rename from spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/SpringContextIntegrationTest.java
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/log-sink/src/test/java/org/baeldung/SpringContextIntegrationTest.java
diff --git a/spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/SpringContextTest.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/log-sink/src/test/java/org/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/SpringContextTest.java
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/log-sink/src/test/java/org/baeldung/SpringContextTest.java
diff --git a/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/pom.xml b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/pom.xml
new file mode 100644
index 0000000000..e5c6830393
--- /dev/null
+++ b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/pom.xml
@@ -0,0 +1,23 @@
+
+ 4.0.0
+ spring-cloud-data-flow-stream
+ 0.0.1-SNAPSHOT
+ spring-cloud-data-flow-stream
+ pom
+
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
+
+
+ data-flow-server
+ data-flow-shell
+ time-source
+ time-processor
+ log-sink
+
+
+
diff --git a/spring-cloud-data-flow/time-processor/pom.xml b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-processor/pom.xml
similarity index 100%
rename from spring-cloud-data-flow/time-processor/pom.xml
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-processor/pom.xml
diff --git a/spring-cloud-data-flow/time-processor/src/main/java/org/baeldung/spring/cloud/TimeProcessorApplication.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-processor/src/main/java/org/baeldung/spring/cloud/TimeProcessorApplication.java
similarity index 100%
rename from spring-cloud-data-flow/time-processor/src/main/java/org/baeldung/spring/cloud/TimeProcessorApplication.java
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-processor/src/main/java/org/baeldung/spring/cloud/TimeProcessorApplication.java
diff --git a/spring-cloud-data-flow/log-sink/src/main/resources/logback.xml b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-processor/src/main/resources/logback.xml
similarity index 100%
rename from spring-cloud-data-flow/log-sink/src/main/resources/logback.xml
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-processor/src/main/resources/logback.xml
diff --git a/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-processor/src/test/java/org/baeldung/SpringContextIntegrationTest.java
similarity index 100%
rename from spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/SpringContextIntegrationTest.java
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-processor/src/test/java/org/baeldung/SpringContextIntegrationTest.java
diff --git a/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/SpringContextTest.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-processor/src/test/java/org/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/SpringContextTest.java
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-processor/src/test/java/org/baeldung/SpringContextTest.java
diff --git a/spring-cloud-data-flow/time-source/pom.xml b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-source/pom.xml
similarity index 100%
rename from spring-cloud-data-flow/time-source/pom.xml
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-source/pom.xml
diff --git a/spring-cloud-data-flow/time-source/src/main/java/org/baeldung/spring/cloud/TimeSourceApplication.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-source/src/main/java/org/baeldung/spring/cloud/TimeSourceApplication.java
similarity index 100%
rename from spring-cloud-data-flow/time-source/src/main/java/org/baeldung/spring/cloud/TimeSourceApplication.java
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-source/src/main/java/org/baeldung/spring/cloud/TimeSourceApplication.java
diff --git a/spring-cloud-data-flow/time-processor/src/main/resources/logback.xml b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-source/src/main/resources/logback.xml
similarity index 100%
rename from spring-cloud-data-flow/time-processor/src/main/resources/logback.xml
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-source/src/main/resources/logback.xml
diff --git a/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-source/src/test/java/org/baeldung/SpringContextIntegrationTest.java
similarity index 100%
rename from spring-cloud-data-flow/time-source/src/test/java/org/baeldung/SpringContextIntegrationTest.java
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-source/src/test/java/org/baeldung/SpringContextIntegrationTest.java
diff --git a/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/SpringContextTest.java b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-source/src/test/java/org/baeldung/SpringContextTest.java
similarity index 100%
rename from spring-cloud-data-flow/time-source/src/test/java/org/baeldung/SpringContextTest.java
rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/time-source/src/test/java/org/baeldung/SpringContextTest.java
diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextTest.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextLiveTest.java
similarity index 90%
rename from spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextTest.java
rename to spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextLiveTest.java
index a2d1cd1087..a3cbb3310d 100644
--- a/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextTest.java
+++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/SpringContextLiveTest.java
@@ -7,7 +7,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
-public class SpringContextTest {
+public class SpringContextLiveTest {
@Test
public void whenSpringContextIsBootstrapped_thenNoExceptions() {
diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/README.md b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/README.md
new file mode 100644
index 0000000000..81e0ffe5c8
--- /dev/null
+++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/README.md
@@ -0,0 +1,3 @@
+## Relevant Articles:
+
+- [Guide to Spring Cloud Stream with Kafka, Apache Avro and Confluent Schema Registry](https://www.baeldung.com/spring-cloud-stream-kafka-avro-confluent)
diff --git a/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextTest.java b/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextLiveTest.java
similarity index 91%
rename from spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextTest.java
rename to spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextLiveTest.java
index 73fcbe55f0..3be4d96964 100644
--- a/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextTest.java
+++ b/spring-cloud/spring-cloud-vault/src/test/java/org/baeldung/spring/cloud/vaultsample/SpringContextLiveTest.java
@@ -7,7 +7,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = VaultSampleApplication.class)
-public class SpringContextTest {
+public class SpringContextLiveTest {
@Test
public void whenSpringContextIsBootstrapped_thenNoExceptions() {
diff --git a/spring-core-2/README.md b/spring-core-2/README.md
new file mode 100644
index 0000000000..4c9e3b9ddf
--- /dev/null
+++ b/spring-core-2/README.md
@@ -0,0 +1,3 @@
+## Relevant Articles:
+
+- [Understanding getBean() in Spring](https://www.baeldung.com/spring-getbean)
diff --git a/spring-core/README.md b/spring-core/README.md
index 18d14b7ecf..111b034bef 100644
--- a/spring-core/README.md
+++ b/spring-core/README.md
@@ -4,14 +4,10 @@
- [How to use the Spring FactoryBean?](http://www.baeldung.com/spring-factorybean)
- [Constructor Dependency Injection in Spring](http://www.baeldung.com/constructor-injection-in-spring)
- [Constructor Injection in Spring with Lombok](http://www.baeldung.com/spring-injection-lombok)
-- [A Quick Guide to Spring @Value](http://www.baeldung.com/spring-value-annotation)
-- [Spring YAML Configuration](http://www.baeldung.com/spring-yaml)
- [Introduction to Spring’s StreamUtils](http://www.baeldung.com/spring-stream-utils)
-- [Using Spring @Value with Defaults](http://www.baeldung.com/spring-value-defaults)
- [XML-Based Injection in Spring](http://www.baeldung.com/spring-xml-injection)
- [A Quick Guide to the Spring @Lazy Annotation](http://www.baeldung.com/spring-lazy-annotation)
- [Injecting Prototype Beans into a Singleton Instance in Spring](http://www.baeldung.com/spring-inject-prototype-bean-into-singleton)
-- [How to Inject a Property Value Into a Class Not Managed by Spring?](http://www.baeldung.com/inject-properties-value-non-spring-class)
- [@Lookup Annotation in Spring](http://www.baeldung.com/spring-lookup)
- [BeanNameAware and BeanFactoryAware Interfaces in Spring](http://www.baeldung.com/spring-bean-name-factory-aware)
- [Spring – Injecting Collections](http://www.baeldung.com/spring-injecting-collections)
diff --git a/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextTest.java b/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextLiveTest.java
similarity index 91%
rename from spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextTest.java
rename to spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextLiveTest.java
index 5e68a8e64f..5cb0a8167e 100644
--- a/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextTest.java
+++ b/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextLiveTest.java
@@ -9,7 +9,7 @@ import com.baeldung.Application;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
-public class SpringContextTest {
+public class SpringContextLiveTest {
@Test
public void whenSpringContextIsBootstrapped_thenNoExceptions() {
diff --git a/spring-di/pom.xml b/spring-di/pom.xml
new file mode 100644
index 0000000000..62456ba31c
--- /dev/null
+++ b/spring-di/pom.xml
@@ -0,0 +1,101 @@
+
+
+ 4.0.0
+ spring-di
+ 1.0-SNAPSHOT
+ war
+
+
+ parent-boot-2
+ com.baeldung
+ 0.0.1-SNAPSHOT
+ ../parent-boot-2
+
+
+
+
+
+ org.springframework
+ spring-context
+
+
+
+ javax.annotation
+ javax.annotation-api
+ ${annotation-api.version}
+
+
+
+
+ org.springframework
+ spring-test
+ test
+
+
+
+
+
+
+
+ org.springframework
+ spring-framework-bom
+ ${org.springframework.version}
+ pom
+ import
+
+
+ org.springframework
+ spring-core
+ ${org.springframework.version}
+
+
+
+
+
+ spring-di
+
+
+ src/main/resources
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 3.2.2
+
+ false
+
+
+
+
+
+
+
+ dev
+
+ true
+
+
+ dev
+
+
+
+ prod
+
+ prod
+
+
+
+
+
+ org.baeldung.org.baeldung.sample.App
+
+ 5.0.6.RELEASE
+ 1.3.2
+
+
+
\ No newline at end of file
diff --git a/spring-di/src/main/java/org/baeldung/sample/App.java b/spring-di/src/main/java/org/baeldung/sample/App.java
new file mode 100644
index 0000000000..17fc49fc8c
--- /dev/null
+++ b/spring-di/src/main/java/org/baeldung/sample/App.java
@@ -0,0 +1,11 @@
+package org.baeldung.sample;
+
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+
+public class App {
+ public static void main(String[] args) {
+ AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
+ FooService fooService = ctx.getBean(FooService.class);
+ fooService.doStuff();
+ }
+}
diff --git a/spring-di/src/main/java/org/baeldung/sample/AppConfig.java b/spring-di/src/main/java/org/baeldung/sample/AppConfig.java
new file mode 100644
index 0000000000..8a177d2611
--- /dev/null
+++ b/spring-di/src/main/java/org/baeldung/sample/AppConfig.java
@@ -0,0 +1,10 @@
+package org.baeldung.sample;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@ComponentScan("org.baeldung.sample")
+public class AppConfig {
+
+}
diff --git a/spring-di/src/main/java/org/baeldung/sample/Bar.java b/spring-di/src/main/java/org/baeldung/sample/Bar.java
new file mode 100644
index 0000000000..54e8d54418
--- /dev/null
+++ b/spring-di/src/main/java/org/baeldung/sample/Bar.java
@@ -0,0 +1,5 @@
+package org.baeldung.sample;
+
+public class Bar {
+
+}
diff --git a/spring-di/src/main/java/org/baeldung/sample/BarFormatter.java b/spring-di/src/main/java/org/baeldung/sample/BarFormatter.java
new file mode 100644
index 0000000000..8396653970
--- /dev/null
+++ b/spring-di/src/main/java/org/baeldung/sample/BarFormatter.java
@@ -0,0 +1,13 @@
+package org.baeldung.sample;
+
+import org.springframework.stereotype.Component;
+
+@FormatterType("Bar")
+@Component
+public class BarFormatter implements Formatter {
+
+ public String format() {
+ return "bar";
+ }
+
+}
diff --git a/spring-di/src/main/java/org/baeldung/sample/Foo.java b/spring-di/src/main/java/org/baeldung/sample/Foo.java
new file mode 100644
index 0000000000..562a00121a
--- /dev/null
+++ b/spring-di/src/main/java/org/baeldung/sample/Foo.java
@@ -0,0 +1,5 @@
+package org.baeldung.sample;
+
+public class Foo {
+
+}
diff --git a/spring-di/src/main/java/org/baeldung/sample/FooDAO.java b/spring-di/src/main/java/org/baeldung/sample/FooDAO.java
new file mode 100644
index 0000000000..151c0c38de
--- /dev/null
+++ b/spring-di/src/main/java/org/baeldung/sample/FooDAO.java
@@ -0,0 +1,5 @@
+package org.baeldung.sample;
+
+public class FooDAO {
+
+}
diff --git a/spring-di/src/main/java/org/baeldung/sample/FooFormatter.java b/spring-di/src/main/java/org/baeldung/sample/FooFormatter.java
new file mode 100644
index 0000000000..68cb7f81f2
--- /dev/null
+++ b/spring-di/src/main/java/org/baeldung/sample/FooFormatter.java
@@ -0,0 +1,13 @@
+package org.baeldung.sample;
+
+import org.springframework.stereotype.Component;
+
+@FormatterType("Foo")
+@Component
+public class FooFormatter implements Formatter {
+
+ public String format() {
+ return "foo";
+ }
+
+}
diff --git a/spring-di/src/main/java/org/baeldung/sample/FooService.java b/spring-di/src/main/java/org/baeldung/sample/FooService.java
new file mode 100644
index 0000000000..711711f205
--- /dev/null
+++ b/spring-di/src/main/java/org/baeldung/sample/FooService.java
@@ -0,0 +1,17 @@
+package org.baeldung.sample;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class FooService {
+
+ @Autowired
+ @FormatterType("Foo")
+ private Formatter formatter;
+
+ public String doStuff() {
+ return formatter.format();
+ }
+
+}
diff --git a/spring-di/src/main/java/org/baeldung/sample/Formatter.java b/spring-di/src/main/java/org/baeldung/sample/Formatter.java
new file mode 100644
index 0000000000..ab29c2b848
--- /dev/null
+++ b/spring-di/src/main/java/org/baeldung/sample/Formatter.java
@@ -0,0 +1,7 @@
+package org.baeldung.sample;
+
+public interface Formatter {
+
+ String format();
+
+}
diff --git a/spring-di/src/main/java/org/baeldung/sample/FormatterType.java b/spring-di/src/main/java/org/baeldung/sample/FormatterType.java
new file mode 100644
index 0000000000..a00a9750bf
--- /dev/null
+++ b/spring-di/src/main/java/org/baeldung/sample/FormatterType.java
@@ -0,0 +1,17 @@
+package org.baeldung.sample;
+
+import org.springframework.beans.factory.annotation.Qualifier;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Qualifier
+@Target({ ElementType.FIELD, ElementType.METHOD, ElementType.TYPE, ElementType.PARAMETER })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface FormatterType {
+
+ String value();
+
+}
diff --git a/spring-di/src/test/java/org/baeldung/sample/FooServiceIntegrationTest.java b/spring-di/src/test/java/org/baeldung/sample/FooServiceIntegrationTest.java
new file mode 100644
index 0000000000..6b518395a1
--- /dev/null
+++ b/spring-di/src/test/java/org/baeldung/sample/FooServiceIntegrationTest.java
@@ -0,0 +1,22 @@
+package org.baeldung.sample;
+
+import org.junit.Assert;
+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.SpringJUnit4ClassRunner;
+import org.springframework.test.context.support.AnnotationConfigContextLoader;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = AppConfig.class, loader = AnnotationConfigContextLoader.class)
+public class FooServiceIntegrationTest {
+
+ @Autowired
+ FooService fooService;
+
+ @Test
+ public void whenFooFormatterType_thenReturnFoo() {
+ Assert.assertEquals("foo", fooService.doStuff());
+ }
+}
diff --git a/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextTest.java b/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextLiveTest.java
similarity index 92%
rename from spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextTest.java
rename to spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextLiveTest.java
index 3e9af8a336..bbd3b6c2ba 100644
--- a/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextTest.java
+++ b/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextLiveTest.java
@@ -9,7 +9,7 @@ import com.baeldung.springejbclient.SpringEjbClientApplication;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringEjbClientApplication.class)
-public class SpringContextTest {
+public class SpringContextLiveTest {
@Test
public void whenSpringContextIsBootstrapped_thenNoExceptions() {
diff --git a/spring-security-client/README.MD b/spring-security-client/README.MD
deleted file mode 100644
index 0b0af7ffe1..0000000000
--- a/spring-security-client/README.MD
+++ /dev/null
@@ -1,11 +0,0 @@
-=========
-## Spring Security Authentication/Authorization Example Project
-
-##The Course
-The "REST With Spring" Classes: http://github.learnspringsecurity.com
-
-### Relevant Articles:
-- [Spring Security Manual Authentication](http://www.baeldung.com/spring-security-authentication)
-
-### Build the Project
-mvn clean install
diff --git a/spring-security-client/pom.xml b/spring-security-client/pom.xml
deleted file mode 100644
index 96ac837a09..0000000000
--- a/spring-security-client/pom.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
- 4.0.0
- spring-security-client
- spring-security-client
- pom
-
-
- com.baeldung
- parent-modules
- 1.0.0-SNAPSHOT
- ..
-
-
-
- spring-security-jsp-authentication
- spring-security-jsp-authorize
- spring-security-jsp-config
- spring-security-mvc
- spring-security-thymeleaf-authentication
- spring-security-thymeleaf-authorize
- spring-security-thymeleaf-config
-
-
diff --git a/spring-security-client/spring-security-jsp-authentication/pom.xml b/spring-security-client/spring-security-jsp-authentication/pom.xml
deleted file mode 100644
index 9cb2a45331..0000000000
--- a/spring-security-client/spring-security-jsp-authentication/pom.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
- 4.0.0
- com.baeldung
- spring-security-jsp-authentication
- 0.0.1-SNAPSHOT
- spring-security-jsp-authentication
- war
- Spring Security JSP Authentication tag sample
-
-
- parent-boot-1
- com.baeldung
- 0.0.1-SNAPSHOT
- ../../parent-boot-1
-
-
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter-tomcat
-
-
- org.apache.tomcat.embed
- tomcat-embed-jasper
- provided
-
-
- javax.servlet
- jstl
-
-
- org.springframework.security
- spring-security-taglibs
-
-
-
-
diff --git a/spring-security-client/spring-security-jsp-authentication/src/main/java/org/baeldung/config/Application.java b/spring-security-client/spring-security-jsp-authentication/src/main/java/org/baeldung/config/Application.java
deleted file mode 100644
index c2c5939676..0000000000
--- a/spring-security-client/spring-security-jsp-authentication/src/main/java/org/baeldung/config/Application.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.boot.web.support.SpringBootServletInitializer;
-
-@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
-public class Application extends SpringBootServletInitializer {
-
- @Override
- protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
- return application.sources(Application.class);
- }
-
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
-
-}
diff --git a/spring-security-client/spring-security-jsp-authentication/src/main/java/org/baeldung/config/MvcConfig.java b/spring-security-client/spring-security-jsp-authentication/src/main/java/org/baeldung/config/MvcConfig.java
deleted file mode 100644
index fa2a324146..0000000000
--- a/spring-security-client/spring-security-jsp-authentication/src/main/java/org/baeldung/config/MvcConfig.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-
-@Configuration
-public class MvcConfig extends WebMvcConfigurerAdapter {
-
- public MvcConfig() {
- super();
- }
-
- //
-
- @Override
- public void addViewControllers(final ViewControllerRegistry registry) {
- super.addViewControllers(registry);
- registry.addViewController("/").setViewName("forward:/index");
- registry.addViewController("/index");
- }
-
-}
\ No newline at end of file
diff --git a/spring-security-client/spring-security-jsp-authentication/src/main/java/org/baeldung/config/SecurityConfig.java b/spring-security-client/spring-security-jsp-authentication/src/main/java/org/baeldung/config/SecurityConfig.java
deleted file mode 100644
index bd6c56d38a..0000000000
--- a/spring-security-client/spring-security-jsp-authentication/src/main/java/org/baeldung/config/SecurityConfig.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.builders.WebSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-
-@Configuration
-@EnableWebSecurity
-public class SecurityConfig extends WebSecurityConfigurerAdapter {
-
- @Override
- protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
- // @formatter:off
- auth.inMemoryAuthentication()
- .withUser("john").password("123").roles("USER")
- .and()
- .withUser("tom").password("111").roles("ADMIN");
- // @formatter:on
- }
-
- @Override
- public void configure(WebSecurity web) throws Exception {
- web.ignoring().antMatchers("/resources/**");
- }
-
- @Override
- protected void configure(final HttpSecurity http) throws Exception {
- // @formatter:off
- http.authorizeRequests()
- .antMatchers("/login").permitAll()
- .antMatchers("/admin").hasRole("ADMIN")
- .anyRequest().authenticated()
- .and().formLogin().permitAll()
- ;
- // @formatter:on
- }
-}
\ No newline at end of file
diff --git a/spring-security-client/spring-security-jsp-authentication/src/main/resources/application.properties b/spring-security-client/spring-security-jsp-authentication/src/main/resources/application.properties
deleted file mode 100644
index 26a80c79f3..0000000000
--- a/spring-security-client/spring-security-jsp-authentication/src/main/resources/application.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-server.port: 8081
-spring.mvc.view.prefix: /WEB-INF/jsp/
-spring.mvc.view.suffix: .jsp
\ No newline at end of file
diff --git a/spring-security-client/spring-security-jsp-authentication/src/main/resources/logback.xml b/spring-security-client/spring-security-jsp-authentication/src/main/resources/logback.xml
deleted file mode 100644
index 7d900d8ea8..0000000000
--- a/spring-security-client/spring-security-jsp-authentication/src/main/resources/logback.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-security-client/spring-security-jsp-authentication/src/main/webapp/WEB-INF/jsp/index.jsp b/spring-security-client/spring-security-jsp-authentication/src/main/webapp/WEB-INF/jsp/index.jsp
deleted file mode 100644
index 90c00e980a..0000000000
--- a/spring-security-client/spring-security-jsp-authentication/src/main/webapp/WEB-INF/jsp/index.jsp
+++ /dev/null
@@ -1,24 +0,0 @@
- <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
-
-
-
-
-Spring Security JSP Authorize
-
-
-
-
-
-
- Current user name:
-
- Current user roles:
-
-
-
\ No newline at end of file
diff --git a/spring-security-client/spring-security-jsp-authentication/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-client/spring-security-jsp-authentication/src/test/java/org/baeldung/SpringContextIntegrationTest.java
deleted file mode 100644
index 66243ef00d..0000000000
--- a/spring-security-client/spring-security-jsp-authentication/src/test/java/org/baeldung/SpringContextIntegrationTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.baeldung;
-
-import org.baeldung.config.Application;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = Application.class)
-public class SpringContextIntegrationTest {
-
- @Test
- public void whenSpringContextIsBootstrapped_thenNoExceptions() {
- }
-}
diff --git a/spring-security-client/spring-security-jsp-authentication/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-client/spring-security-jsp-authentication/src/test/java/org/baeldung/SpringContextTest.java
deleted file mode 100644
index 0afb3899db..0000000000
--- a/spring-security-client/spring-security-jsp-authentication/src/test/java/org/baeldung/SpringContextTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.baeldung;
-
-import org.baeldung.config.Application;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = Application.class)
-public class SpringContextTest {
-
- @Test
- public void whenSpringContextIsBootstrapped_thenNoExceptions() {
- }
-}
diff --git a/spring-security-client/spring-security-jsp-authorize/pom.xml b/spring-security-client/spring-security-jsp-authorize/pom.xml
deleted file mode 100644
index ad4c9d105b..0000000000
--- a/spring-security-client/spring-security-jsp-authorize/pom.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
- 4.0.0
- com.baeldung
- spring-security-jsp-authorize
- 0.0.1-SNAPSHOT
- spring-security-jsp-authorize
- Spring Security JSP Authorize tag sample
- war
-
-
- parent-boot-1
- com.baeldung
- 0.0.1-SNAPSHOT
- ../../parent-boot-1
-
-
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter-tomcat
-
-
- org.apache.tomcat.embed
- tomcat-embed-jasper
- provided
-
-
- javax.servlet
- jstl
-
-
- org.springframework.security
- spring-security-taglibs
-
-
-
-
diff --git a/spring-security-client/spring-security-jsp-authorize/src/main/java/org/baeldung/config/Application.java b/spring-security-client/spring-security-jsp-authorize/src/main/java/org/baeldung/config/Application.java
deleted file mode 100644
index c2c5939676..0000000000
--- a/spring-security-client/spring-security-jsp-authorize/src/main/java/org/baeldung/config/Application.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.boot.web.support.SpringBootServletInitializer;
-
-@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
-public class Application extends SpringBootServletInitializer {
-
- @Override
- protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
- return application.sources(Application.class);
- }
-
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
-
-}
diff --git a/spring-security-client/spring-security-jsp-authorize/src/main/java/org/baeldung/config/MvcConfig.java b/spring-security-client/spring-security-jsp-authorize/src/main/java/org/baeldung/config/MvcConfig.java
deleted file mode 100644
index fa2a324146..0000000000
--- a/spring-security-client/spring-security-jsp-authorize/src/main/java/org/baeldung/config/MvcConfig.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-
-@Configuration
-public class MvcConfig extends WebMvcConfigurerAdapter {
-
- public MvcConfig() {
- super();
- }
-
- //
-
- @Override
- public void addViewControllers(final ViewControllerRegistry registry) {
- super.addViewControllers(registry);
- registry.addViewController("/").setViewName("forward:/index");
- registry.addViewController("/index");
- }
-
-}
\ No newline at end of file
diff --git a/spring-security-client/spring-security-jsp-authorize/src/main/java/org/baeldung/config/SecurityConfig.java b/spring-security-client/spring-security-jsp-authorize/src/main/java/org/baeldung/config/SecurityConfig.java
deleted file mode 100644
index bd6c56d38a..0000000000
--- a/spring-security-client/spring-security-jsp-authorize/src/main/java/org/baeldung/config/SecurityConfig.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.builders.WebSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-
-@Configuration
-@EnableWebSecurity
-public class SecurityConfig extends WebSecurityConfigurerAdapter {
-
- @Override
- protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
- // @formatter:off
- auth.inMemoryAuthentication()
- .withUser("john").password("123").roles("USER")
- .and()
- .withUser("tom").password("111").roles("ADMIN");
- // @formatter:on
- }
-
- @Override
- public void configure(WebSecurity web) throws Exception {
- web.ignoring().antMatchers("/resources/**");
- }
-
- @Override
- protected void configure(final HttpSecurity http) throws Exception {
- // @formatter:off
- http.authorizeRequests()
- .antMatchers("/login").permitAll()
- .antMatchers("/admin").hasRole("ADMIN")
- .anyRequest().authenticated()
- .and().formLogin().permitAll()
- ;
- // @formatter:on
- }
-}
\ No newline at end of file
diff --git a/spring-security-client/spring-security-jsp-authorize/src/main/resources/application.properties b/spring-security-client/spring-security-jsp-authorize/src/main/resources/application.properties
deleted file mode 100644
index 26a80c79f3..0000000000
--- a/spring-security-client/spring-security-jsp-authorize/src/main/resources/application.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-server.port: 8081
-spring.mvc.view.prefix: /WEB-INF/jsp/
-spring.mvc.view.suffix: .jsp
\ No newline at end of file
diff --git a/spring-security-client/spring-security-jsp-authorize/src/main/resources/logback.xml b/spring-security-client/spring-security-jsp-authorize/src/main/resources/logback.xml
deleted file mode 100644
index 7d900d8ea8..0000000000
--- a/spring-security-client/spring-security-jsp-authorize/src/main/resources/logback.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-security-client/spring-security-jsp-authorize/src/main/webapp/WEB-INF/jsp/index.jsp b/spring-security-client/spring-security-jsp-authorize/src/main/webapp/WEB-INF/jsp/index.jsp
deleted file mode 100644
index 08af845bd4..0000000000
--- a/spring-security-client/spring-security-jsp-authorize/src/main/webapp/WEB-INF/jsp/index.jsp
+++ /dev/null
@@ -1,33 +0,0 @@
- <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
-
-
-
-
-Spring Security JSP Authorize
-
-
-
-
-
-
-
- Only admins can see this message
-
-
-
- Only users can see this message
-
-
-
-
- Only users who can call "/admin" URL can see this message
-
-
-
-
\ No newline at end of file
diff --git a/spring-security-client/spring-security-jsp-authorize/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-client/spring-security-jsp-authorize/src/test/java/org/baeldung/SpringContextIntegrationTest.java
deleted file mode 100644
index 66243ef00d..0000000000
--- a/spring-security-client/spring-security-jsp-authorize/src/test/java/org/baeldung/SpringContextIntegrationTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.baeldung;
-
-import org.baeldung.config.Application;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = Application.class)
-public class SpringContextIntegrationTest {
-
- @Test
- public void whenSpringContextIsBootstrapped_thenNoExceptions() {
- }
-}
diff --git a/spring-security-client/spring-security-jsp-authorize/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-client/spring-security-jsp-authorize/src/test/java/org/baeldung/SpringContextTest.java
deleted file mode 100644
index 0afb3899db..0000000000
--- a/spring-security-client/spring-security-jsp-authorize/src/test/java/org/baeldung/SpringContextTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.baeldung;
-
-import org.baeldung.config.Application;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = Application.class)
-public class SpringContextTest {
-
- @Test
- public void whenSpringContextIsBootstrapped_thenNoExceptions() {
- }
-}
diff --git a/spring-security-client/spring-security-jsp-config/pom.xml b/spring-security-client/spring-security-jsp-config/pom.xml
deleted file mode 100644
index 02ea206738..0000000000
--- a/spring-security-client/spring-security-jsp-config/pom.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
- 4.0.0
- com.baeldung
- spring-security-jsp-config
- 0.0.1-SNAPSHOT
- spring-security-jsp-config
- Spring Security JSP configuration
- war
-
-
- parent-boot-1
- com.baeldung
- 0.0.1-SNAPSHOT
- ../../parent-boot-1
-
-
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter-tomcat
-
-
- org.apache.tomcat.embed
- tomcat-embed-jasper
- provided
-
-
- javax.servlet
- jstl
-
-
- org.springframework.security
- spring-security-taglibs
-
-
-
-
diff --git a/spring-security-client/spring-security-jsp-config/src/main/java/org/baeldung/config/Application.java b/spring-security-client/spring-security-jsp-config/src/main/java/org/baeldung/config/Application.java
deleted file mode 100644
index c2c5939676..0000000000
--- a/spring-security-client/spring-security-jsp-config/src/main/java/org/baeldung/config/Application.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.boot.web.support.SpringBootServletInitializer;
-
-@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
-public class Application extends SpringBootServletInitializer {
-
- @Override
- protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
- return application.sources(Application.class);
- }
-
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
-
-}
diff --git a/spring-security-client/spring-security-jsp-config/src/main/java/org/baeldung/config/MvcConfig.java b/spring-security-client/spring-security-jsp-config/src/main/java/org/baeldung/config/MvcConfig.java
deleted file mode 100644
index fa2a324146..0000000000
--- a/spring-security-client/spring-security-jsp-config/src/main/java/org/baeldung/config/MvcConfig.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-
-@Configuration
-public class MvcConfig extends WebMvcConfigurerAdapter {
-
- public MvcConfig() {
- super();
- }
-
- //
-
- @Override
- public void addViewControllers(final ViewControllerRegistry registry) {
- super.addViewControllers(registry);
- registry.addViewController("/").setViewName("forward:/index");
- registry.addViewController("/index");
- }
-
-}
\ No newline at end of file
diff --git a/spring-security-client/spring-security-jsp-config/src/main/java/org/baeldung/config/SecurityConfig.java b/spring-security-client/spring-security-jsp-config/src/main/java/org/baeldung/config/SecurityConfig.java
deleted file mode 100644
index bd6c56d38a..0000000000
--- a/spring-security-client/spring-security-jsp-config/src/main/java/org/baeldung/config/SecurityConfig.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.builders.WebSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-
-@Configuration
-@EnableWebSecurity
-public class SecurityConfig extends WebSecurityConfigurerAdapter {
-
- @Override
- protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
- // @formatter:off
- auth.inMemoryAuthentication()
- .withUser("john").password("123").roles("USER")
- .and()
- .withUser("tom").password("111").roles("ADMIN");
- // @formatter:on
- }
-
- @Override
- public void configure(WebSecurity web) throws Exception {
- web.ignoring().antMatchers("/resources/**");
- }
-
- @Override
- protected void configure(final HttpSecurity http) throws Exception {
- // @formatter:off
- http.authorizeRequests()
- .antMatchers("/login").permitAll()
- .antMatchers("/admin").hasRole("ADMIN")
- .anyRequest().authenticated()
- .and().formLogin().permitAll()
- ;
- // @formatter:on
- }
-}
\ No newline at end of file
diff --git a/spring-security-client/spring-security-jsp-config/src/main/resources/application.properties b/spring-security-client/spring-security-jsp-config/src/main/resources/application.properties
deleted file mode 100644
index 26a80c79f3..0000000000
--- a/spring-security-client/spring-security-jsp-config/src/main/resources/application.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-server.port: 8081
-spring.mvc.view.prefix: /WEB-INF/jsp/
-spring.mvc.view.suffix: .jsp
\ No newline at end of file
diff --git a/spring-security-client/spring-security-jsp-config/src/main/resources/logback.xml b/spring-security-client/spring-security-jsp-config/src/main/resources/logback.xml
deleted file mode 100644
index 7d900d8ea8..0000000000
--- a/spring-security-client/spring-security-jsp-config/src/main/resources/logback.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-security-client/spring-security-jsp-config/src/main/webapp/WEB-INF/jsp/index.jsp b/spring-security-client/spring-security-jsp-config/src/main/webapp/WEB-INF/jsp/index.jsp
deleted file mode 100644
index bd5ccb0c78..0000000000
--- a/spring-security-client/spring-security-jsp-config/src/main/webapp/WEB-INF/jsp/index.jsp
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-Spring Security JSP
-
-
-
-
-
-
- Welcome
-
-
-
\ No newline at end of file
diff --git a/spring-security-client/spring-security-jsp-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-client/spring-security-jsp-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java
deleted file mode 100644
index 66243ef00d..0000000000
--- a/spring-security-client/spring-security-jsp-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.baeldung;
-
-import org.baeldung.config.Application;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = Application.class)
-public class SpringContextIntegrationTest {
-
- @Test
- public void whenSpringContextIsBootstrapped_thenNoExceptions() {
- }
-}
diff --git a/spring-security-client/spring-security-jsp-config/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-client/spring-security-jsp-config/src/test/java/org/baeldung/SpringContextTest.java
deleted file mode 100644
index 0afb3899db..0000000000
--- a/spring-security-client/spring-security-jsp-config/src/test/java/org/baeldung/SpringContextTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.baeldung;
-
-import org.baeldung.config.Application;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = Application.class)
-public class SpringContextTest {
-
- @Test
- public void whenSpringContextIsBootstrapped_thenNoExceptions() {
- }
-}
diff --git a/spring-security-client/spring-security-mvc/pom.xml b/spring-security-client/spring-security-mvc/pom.xml
deleted file mode 100644
index 75298026a8..0000000000
--- a/spring-security-client/spring-security-mvc/pom.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
- 4.0.0
- com.baeldung
- spring-security-mvc
- 0.0.1-SNAPSHOT
- spring-security-mvc
- Spring Security MVC
- war
-
-
- parent-boot-1
- com.baeldung
- 0.0.1-SNAPSHOT
- ../../parent-boot-1
-
-
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
-
diff --git a/spring-security-client/spring-security-mvc/src/main/java/org/baeldung/config/Application.java b/spring-security-client/spring-security-mvc/src/main/java/org/baeldung/config/Application.java
deleted file mode 100644
index 34c43fbe5a..0000000000
--- a/spring-security-client/spring-security-mvc/src/main/java/org/baeldung/config/Application.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.boot.web.support.SpringBootServletInitializer;
-
-@SpringBootApplication
-public class Application extends SpringBootServletInitializer {
-
- @Override
- protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
- return application.sources(Application.class);
- }
-
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
-
-}
diff --git a/spring-security-client/spring-security-mvc/src/main/java/org/baeldung/config/SecurityConfig.java b/spring-security-client/spring-security-mvc/src/main/java/org/baeldung/config/SecurityConfig.java
deleted file mode 100644
index bd6c56d38a..0000000000
--- a/spring-security-client/spring-security-mvc/src/main/java/org/baeldung/config/SecurityConfig.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.builders.WebSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-
-@Configuration
-@EnableWebSecurity
-public class SecurityConfig extends WebSecurityConfigurerAdapter {
-
- @Override
- protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
- // @formatter:off
- auth.inMemoryAuthentication()
- .withUser("john").password("123").roles("USER")
- .and()
- .withUser("tom").password("111").roles("ADMIN");
- // @formatter:on
- }
-
- @Override
- public void configure(WebSecurity web) throws Exception {
- web.ignoring().antMatchers("/resources/**");
- }
-
- @Override
- protected void configure(final HttpSecurity http) throws Exception {
- // @formatter:off
- http.authorizeRequests()
- .antMatchers("/login").permitAll()
- .antMatchers("/admin").hasRole("ADMIN")
- .anyRequest().authenticated()
- .and().formLogin().permitAll()
- ;
- // @formatter:on
- }
-}
\ No newline at end of file
diff --git a/spring-security-client/spring-security-mvc/src/main/resources/application.properties b/spring-security-client/spring-security-mvc/src/main/resources/application.properties
deleted file mode 100644
index c2eee0d931..0000000000
--- a/spring-security-client/spring-security-mvc/src/main/resources/application.properties
+++ /dev/null
@@ -1 +0,0 @@
-server.port: 8081
\ No newline at end of file
diff --git a/spring-security-client/spring-security-mvc/src/main/resources/logback.xml b/spring-security-client/spring-security-mvc/src/main/resources/logback.xml
deleted file mode 100644
index 7d900d8ea8..0000000000
--- a/spring-security-client/spring-security-mvc/src/main/resources/logback.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-security-client/spring-security-mvc/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-client/spring-security-mvc/src/test/java/org/baeldung/SpringContextIntegrationTest.java
deleted file mode 100644
index 66243ef00d..0000000000
--- a/spring-security-client/spring-security-mvc/src/test/java/org/baeldung/SpringContextIntegrationTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.baeldung;
-
-import org.baeldung.config.Application;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = Application.class)
-public class SpringContextIntegrationTest {
-
- @Test
- public void whenSpringContextIsBootstrapped_thenNoExceptions() {
- }
-}
diff --git a/spring-security-client/spring-security-mvc/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-client/spring-security-mvc/src/test/java/org/baeldung/SpringContextTest.java
deleted file mode 100644
index 0afb3899db..0000000000
--- a/spring-security-client/spring-security-mvc/src/test/java/org/baeldung/SpringContextTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.baeldung;
-
-import org.baeldung.config.Application;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = Application.class)
-public class SpringContextTest {
-
- @Test
- public void whenSpringContextIsBootstrapped_thenNoExceptions() {
- }
-}
diff --git a/spring-security-client/spring-security-thymeleaf-authentication/pom.xml b/spring-security-client/spring-security-thymeleaf-authentication/pom.xml
deleted file mode 100644
index 01d2c6bdbe..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authentication/pom.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
- 4.0.0
-
- com.baeldung
- spring-security-thymeleaf-authentication
- 0.0.1-SNAPSHOT
- spring-security-thymeleaf-authentication
- Spring Security thymeleaf authentication tag sample
- war
-
-
- parent-boot-1
- com.baeldung
- 0.0.1-SNAPSHOT
- ../../parent-boot-1
-
-
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter-tomcat
-
-
- org.springframework.boot
- spring-boot-starter-thymeleaf
-
-
- org.thymeleaf.extras
- thymeleaf-extras-springsecurity4
-
-
-
-
diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/MvcConfig.java b/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/MvcConfig.java
deleted file mode 100644
index 259433f6ae..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/MvcConfig.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
-import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-import org.springframework.context.annotation.Profile;
-
-@Configuration
-@EnableWebMvc
-@Profile("!manual")
-public class MvcConfig extends WebMvcConfigurerAdapter {
-
- public MvcConfig() {
- super();
- }
-
- //
- @Bean
- public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
- return new PropertySourcesPlaceholderConfigurer();
- }
-
- @Override
- public void configureDefaultServletHandling(final DefaultServletHandlerConfigurer configurer) {
- configurer.enable();
- }
-
- @Override
- public void addViewControllers(final ViewControllerRegistry registry) {
- super.addViewControllers(registry);
- registry.addViewController("/").setViewName("forward:/index");
- registry.addViewController("/index");
- }
-
- @Override
- public void addResourceHandlers(final ResourceHandlerRegistry registry) {
- registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
- }
-}
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/MvcConfigManual.java b/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/MvcConfigManual.java
deleted file mode 100644
index d80527c30a..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/MvcConfigManual.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Profile;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-
-@Configuration
-@EnableWebMvc
-@Profile("manual")
-public class MvcConfigManual extends WebMvcConfigurerAdapter {
-
- @Override
- public void addViewControllers(ViewControllerRegistry registry) {
- registry.addViewController("/home").setViewName("home");
- registry.addViewController("/").setViewName("home");
- registry.addViewController("/hello").setViewName("hello");
- registry.addViewController("/login").setViewName("login");
- }
-
-}
diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/RegistrationController.java b/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/RegistrationController.java
deleted file mode 100644
index 2414ff9cac..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/RegistrationController.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package org.baeldung.config;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Profile;
-import org.springframework.security.authentication.AbstractAuthenticationToken;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.authentication.BadCredentialsException;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.web.authentication.WebAuthenticationDetails;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Manually authenticate a user using Spring Security / Spring Web MVC' (upon successful account registration)
- * (http://stackoverflow.com/questions/4664893/how-to-manually-set-an-authenticated-user-in-spring-security-springmvc)
- *
- * @author jim clayson
- */
-@Controller
-@Profile("manual")
-public class RegistrationController {
- private static final Logger logger = LoggerFactory.getLogger(RegistrationController.class);
-
- @Autowired
- private AuthenticationManager authenticationManager;
-
- /**
- * For demo purposes this need only be a GET request method
- *
- * @param request
- * @param response
- * @return The view. Page confirming either successful registration (and/or
- * successful authentication) or failed registration.
- */
- @GetMapping("/register")
- public String registerAndAuthenticate(HttpServletRequest request, HttpServletResponse response) {
- logger.debug("registerAndAuthenticate: attempt to register, application should manually authenticate.");
-
- // Mocked values. Potentially could come from an HTML registration form,
- // in which case this mapping would match on an HTTP POST, rather than a GET
- String username = "user";
- String password = "password";
-
- if (requestQualifiesForManualAuthentication()) {
- try {
- authenticate(username, password, request, response);
- logger.debug("registerAndAuthenticate: authentication completed.");
- } catch (BadCredentialsException bce) {
- logger.debug("Authentication failure: bad credentials");
- bce.printStackTrace();
- return "systemError"; // assume a low-level error, since the registration
- // form would have been successfully validated
- }
- }
-
- return "registrationSuccess";
- }
-
- private boolean requestQualifiesForManualAuthentication() {
- // Some processing to determine that the user requires a Spring Security-recognized,
- // application-directed login e.g. successful account registration.
- return true;
- }
-
- private void authenticate(String username, String password, HttpServletRequest request, HttpServletResponse response) throws BadCredentialsException {
- logger.debug("attempting to authenticated, manually ... ");
-
- // create and populate the token
- AbstractAuthenticationToken authToken = new UsernamePasswordAuthenticationToken(username, password);
- authToken.setDetails(new WebAuthenticationDetails(request));
-
- // This call returns an authentication object, which holds principle and user credentials
- Authentication authentication = this.authenticationManager.authenticate(authToken);
-
- // The security context holds the authentication object, and is stored
- // in thread local scope.
- SecurityContextHolder.getContext().setAuthentication(authentication);
-
- logger.debug("User should now be authenticated.");
- }
-
-}
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/SecurityConfig.java b/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/SecurityConfig.java
deleted file mode 100644
index 153cc67661..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/SecurityConfig.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.builders.WebSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-import org.springframework.context.annotation.Profile;
-
-@Configuration
-@EnableWebSecurity
-@Profile("!manual")
-public class SecurityConfig extends WebSecurityConfigurerAdapter {
-
- @Override
- protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
- // @formatter:off
- auth.inMemoryAuthentication()
- .withUser("john").password("123").roles("USER")
- .and()
- .withUser("tom").password("111").roles("ADMIN");
- // @formatter:on
- }
-
- @Override
- public void configure(WebSecurity web) throws Exception {
- web.ignoring().antMatchers("/resources/**");
- }
-
- @Override
- protected void configure(final HttpSecurity http) throws Exception {
- // @formatter:off
- http.authorizeRequests()
- .antMatchers("/login").permitAll()
- .antMatchers("/admin").hasRole("ADMIN")
- .anyRequest().authenticated()
- .and().formLogin().permitAll()
- ;
- // @formatter:on
- }
-}
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/WebSecurityConfigManual.java b/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/WebSecurityConfigManual.java
deleted file mode 100644
index 180a53deba..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/WebSecurityConfigManual.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Profile;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-
-@Configuration
-@EnableWebSecurity
-@Profile("manual")
-public class WebSecurityConfigManual extends WebSecurityConfigurerAdapter {
-
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- // @formatter:off
- http
- .authorizeRequests()
- .antMatchers("/", "/home", "/register").permitAll()
- .anyRequest().authenticated()
- .and()
- .formLogin()
- .loginPage("/login").permitAll()
- .and()
- .logout().permitAll();
- // @formatter:on
- }
-
- @Autowired
- public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
- auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
- }
-}
diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/application.properties b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/application.properties
deleted file mode 100644
index bafddced85..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/application.properties
+++ /dev/null
@@ -1 +0,0 @@
-server.port=8081
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/logback.xml b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/logback.xml
deleted file mode 100644
index 7d900d8ea8..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/logback.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/hello.html b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/hello.html
deleted file mode 100644
index b37731b0ed..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/hello.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- Hello World!
-
-
- Hello [[${#httpServletRequest.remoteUser}]]!
-
- Click here to go to the home page.
-
-
-
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/home.html b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/home.html
deleted file mode 100644
index 6dbdf491c6..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/home.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- Spring Security Example
-
-
- Welcome!
-
- Click here to see a greeting.
- Click here to send a dummy registration request, where the application logs you in.
-
-
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/index.html b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/index.html
deleted file mode 100644
index c65b5f092b..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/index.html
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-Spring Security Thymeleaf
-
-
-
-
-
-
- Current user name: Bob
-
- Current user roles: [ROLE_USER, ROLE_ADMIN]
-
-
-
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/login.html b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/login.html
deleted file mode 100644
index 3f28efac69..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/login.html
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
- Spring Security Example
-
-
-
- Invalid username and password.
-
-
- You have been logged out.
-
-
- Click here to go to the home page.
-
-
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/registrationError.html b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/registrationError.html
deleted file mode 100644
index 756cc2390d..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/registrationError.html
+++ /dev/null
@@ -1 +0,0 @@
-Registration could not be completed at this time. Please try again later or contact support!
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/registrationSuccess.html b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/registrationSuccess.html
deleted file mode 100644
index b1c4336f2f..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/registrationSuccess.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- Registration Success!
-
-
- Registration succeeded. You have been logged in by the system. Welcome [[${#httpServletRequest.remoteUser}]]!
-
- Click here to go to the home page.
-
-
-
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-client/spring-security-thymeleaf-authentication/src/test/java/org/baeldung/SpringContextIntegrationTest.java
deleted file mode 100644
index 66243ef00d..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authentication/src/test/java/org/baeldung/SpringContextIntegrationTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.baeldung;
-
-import org.baeldung.config.Application;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = Application.class)
-public class SpringContextIntegrationTest {
-
- @Test
- public void whenSpringContextIsBootstrapped_thenNoExceptions() {
- }
-}
diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-client/spring-security-thymeleaf-authentication/src/test/java/org/baeldung/SpringContextTest.java
deleted file mode 100644
index 0afb3899db..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authentication/src/test/java/org/baeldung/SpringContextTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.baeldung;
-
-import org.baeldung.config.Application;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = Application.class)
-public class SpringContextTest {
-
- @Test
- public void whenSpringContextIsBootstrapped_thenNoExceptions() {
- }
-}
diff --git a/spring-security-client/spring-security-thymeleaf-authorize/pom.xml b/spring-security-client/spring-security-thymeleaf-authorize/pom.xml
deleted file mode 100644
index 8c600c1f81..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authorize/pom.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
- 4.0.0
-
- com.baeldung
- spring-security-thymeleaf-authorize
- 0.0.1-SNAPSHOT
- spring-security-thymeleaf-authorize
- Spring Security thymeleaf authorize tag sample
- war
-
-
- parent-boot-1
- com.baeldung
- 0.0.1-SNAPSHOT
- ../../parent-boot-1
-
-
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter-tomcat
-
-
- org.springframework.boot
- spring-boot-starter-thymeleaf
-
-
- org.thymeleaf.extras
- thymeleaf-extras-springsecurity4
-
-
-
-
diff --git a/spring-security-client/spring-security-thymeleaf-authorize/src/main/java/org/baeldung/config/Application.java b/spring-security-client/spring-security-thymeleaf-authorize/src/main/java/org/baeldung/config/Application.java
deleted file mode 100644
index 329b104143..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authorize/src/main/java/org/baeldung/config/Application.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.support.SpringBootServletInitializer;
-
-@SpringBootApplication
-public class Application extends SpringBootServletInitializer {
-
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
-
-}
diff --git a/spring-security-client/spring-security-thymeleaf-authorize/src/main/java/org/baeldung/config/MvcConfig.java b/spring-security-client/spring-security-thymeleaf-authorize/src/main/java/org/baeldung/config/MvcConfig.java
deleted file mode 100644
index 9ade60e54c..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authorize/src/main/java/org/baeldung/config/MvcConfig.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
-import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-
-@Configuration
-@EnableWebMvc
-public class MvcConfig extends WebMvcConfigurerAdapter {
-
- public MvcConfig() {
- super();
- }
-
- //
- @Bean
- public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
- return new PropertySourcesPlaceholderConfigurer();
- }
-
- @Override
- public void configureDefaultServletHandling(final DefaultServletHandlerConfigurer configurer) {
- configurer.enable();
- }
-
- @Override
- public void addViewControllers(final ViewControllerRegistry registry) {
- super.addViewControllers(registry);
- registry.addViewController("/").setViewName("forward:/index");
- registry.addViewController("/index");
- }
-
- @Override
- public void addResourceHandlers(final ResourceHandlerRegistry registry) {
- registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
- }
-}
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-authorize/src/main/java/org/baeldung/config/SecurityConfig.java b/spring-security-client/spring-security-thymeleaf-authorize/src/main/java/org/baeldung/config/SecurityConfig.java
deleted file mode 100644
index bd6c56d38a..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authorize/src/main/java/org/baeldung/config/SecurityConfig.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.builders.WebSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-
-@Configuration
-@EnableWebSecurity
-public class SecurityConfig extends WebSecurityConfigurerAdapter {
-
- @Override
- protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
- // @formatter:off
- auth.inMemoryAuthentication()
- .withUser("john").password("123").roles("USER")
- .and()
- .withUser("tom").password("111").roles("ADMIN");
- // @formatter:on
- }
-
- @Override
- public void configure(WebSecurity web) throws Exception {
- web.ignoring().antMatchers("/resources/**");
- }
-
- @Override
- protected void configure(final HttpSecurity http) throws Exception {
- // @formatter:off
- http.authorizeRequests()
- .antMatchers("/login").permitAll()
- .antMatchers("/admin").hasRole("ADMIN")
- .anyRequest().authenticated()
- .and().formLogin().permitAll()
- ;
- // @formatter:on
- }
-}
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-authorize/src/main/resources/application.properties b/spring-security-client/spring-security-thymeleaf-authorize/src/main/resources/application.properties
deleted file mode 100644
index bafddced85..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authorize/src/main/resources/application.properties
+++ /dev/null
@@ -1 +0,0 @@
-server.port=8081
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-authorize/src/main/resources/logback.xml b/spring-security-client/spring-security-thymeleaf-authorize/src/main/resources/logback.xml
deleted file mode 100644
index 7d900d8ea8..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authorize/src/main/resources/logback.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-authorize/src/main/resources/templates/index.html b/spring-security-client/spring-security-thymeleaf-authorize/src/main/resources/templates/index.html
deleted file mode 100644
index fcbbfb4957..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authorize/src/main/resources/templates/index.html
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-Spring Security Thymeleaf
-
-
-
-
-
-
-
- Only admins can see this message
-
-
-
- Only users can see this message
-
-
-
-
- Only users who can call "/admin" URL can see this message
-
-
-
-
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-authorize/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-client/spring-security-thymeleaf-authorize/src/test/java/org/baeldung/SpringContextIntegrationTest.java
deleted file mode 100644
index 66243ef00d..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authorize/src/test/java/org/baeldung/SpringContextIntegrationTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.baeldung;
-
-import org.baeldung.config.Application;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = Application.class)
-public class SpringContextIntegrationTest {
-
- @Test
- public void whenSpringContextIsBootstrapped_thenNoExceptions() {
- }
-}
diff --git a/spring-security-client/spring-security-thymeleaf-authorize/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-client/spring-security-thymeleaf-authorize/src/test/java/org/baeldung/SpringContextTest.java
deleted file mode 100644
index 0afb3899db..0000000000
--- a/spring-security-client/spring-security-thymeleaf-authorize/src/test/java/org/baeldung/SpringContextTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.baeldung;
-
-import org.baeldung.config.Application;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = Application.class)
-public class SpringContextTest {
-
- @Test
- public void whenSpringContextIsBootstrapped_thenNoExceptions() {
- }
-}
diff --git a/spring-security-client/spring-security-thymeleaf-config/pom.xml b/spring-security-client/spring-security-thymeleaf-config/pom.xml
deleted file mode 100644
index aeda999405..0000000000
--- a/spring-security-client/spring-security-thymeleaf-config/pom.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
- 4.0.0
- com.baeldung
- spring-security-thymeleaf-config
- 0.0.1-SNAPSHOT
- spring-security-thymeleaf-config
- Spring Security thymeleaf configuration sample project
- war
-
-
- parent-boot-1
- com.baeldung
- 0.0.1-SNAPSHOT
- ../../parent-boot-1
-
-
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter-tomcat
-
-
- org.springframework.boot
- spring-boot-starter-thymeleaf
-
-
- org.thymeleaf.extras
- thymeleaf-extras-springsecurity4
-
-
-
-
diff --git a/spring-security-client/spring-security-thymeleaf-config/src/main/java/org/baeldung/config/Application.java b/spring-security-client/spring-security-thymeleaf-config/src/main/java/org/baeldung/config/Application.java
deleted file mode 100644
index 329b104143..0000000000
--- a/spring-security-client/spring-security-thymeleaf-config/src/main/java/org/baeldung/config/Application.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.support.SpringBootServletInitializer;
-
-@SpringBootApplication
-public class Application extends SpringBootServletInitializer {
-
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
-
-}
diff --git a/spring-security-client/spring-security-thymeleaf-config/src/main/java/org/baeldung/config/MvcConfig.java b/spring-security-client/spring-security-thymeleaf-config/src/main/java/org/baeldung/config/MvcConfig.java
deleted file mode 100644
index 9ade60e54c..0000000000
--- a/spring-security-client/spring-security-thymeleaf-config/src/main/java/org/baeldung/config/MvcConfig.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
-import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-
-@Configuration
-@EnableWebMvc
-public class MvcConfig extends WebMvcConfigurerAdapter {
-
- public MvcConfig() {
- super();
- }
-
- //
- @Bean
- public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
- return new PropertySourcesPlaceholderConfigurer();
- }
-
- @Override
- public void configureDefaultServletHandling(final DefaultServletHandlerConfigurer configurer) {
- configurer.enable();
- }
-
- @Override
- public void addViewControllers(final ViewControllerRegistry registry) {
- super.addViewControllers(registry);
- registry.addViewController("/").setViewName("forward:/index");
- registry.addViewController("/index");
- }
-
- @Override
- public void addResourceHandlers(final ResourceHandlerRegistry registry) {
- registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
- }
-}
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-config/src/main/java/org/baeldung/config/SecurityConfig.java b/spring-security-client/spring-security-thymeleaf-config/src/main/java/org/baeldung/config/SecurityConfig.java
deleted file mode 100644
index bd6c56d38a..0000000000
--- a/spring-security-client/spring-security-thymeleaf-config/src/main/java/org/baeldung/config/SecurityConfig.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.builders.WebSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-
-@Configuration
-@EnableWebSecurity
-public class SecurityConfig extends WebSecurityConfigurerAdapter {
-
- @Override
- protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
- // @formatter:off
- auth.inMemoryAuthentication()
- .withUser("john").password("123").roles("USER")
- .and()
- .withUser("tom").password("111").roles("ADMIN");
- // @formatter:on
- }
-
- @Override
- public void configure(WebSecurity web) throws Exception {
- web.ignoring().antMatchers("/resources/**");
- }
-
- @Override
- protected void configure(final HttpSecurity http) throws Exception {
- // @formatter:off
- http.authorizeRequests()
- .antMatchers("/login").permitAll()
- .antMatchers("/admin").hasRole("ADMIN")
- .anyRequest().authenticated()
- .and().formLogin().permitAll()
- ;
- // @formatter:on
- }
-}
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-config/src/main/resources/application.properties b/spring-security-client/spring-security-thymeleaf-config/src/main/resources/application.properties
deleted file mode 100644
index bafddced85..0000000000
--- a/spring-security-client/spring-security-thymeleaf-config/src/main/resources/application.properties
+++ /dev/null
@@ -1 +0,0 @@
-server.port=8081
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-config/src/main/resources/logback.xml b/spring-security-client/spring-security-thymeleaf-config/src/main/resources/logback.xml
deleted file mode 100644
index 7d900d8ea8..0000000000
--- a/spring-security-client/spring-security-thymeleaf-config/src/main/resources/logback.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-config/src/main/resources/templates/index.html b/spring-security-client/spring-security-thymeleaf-config/src/main/resources/templates/index.html
deleted file mode 100644
index 8e7394ad6a..0000000000
--- a/spring-security-client/spring-security-thymeleaf-config/src/main/resources/templates/index.html
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-Spring Security Thymeleaf
-
-
-
-
-
-
- Welcome
-
-
-
\ No newline at end of file
diff --git a/spring-security-client/spring-security-thymeleaf-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-client/spring-security-thymeleaf-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java
deleted file mode 100644
index 66243ef00d..0000000000
--- a/spring-security-client/spring-security-thymeleaf-config/src/test/java/org/baeldung/SpringContextIntegrationTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.baeldung;
-
-import org.baeldung.config.Application;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = Application.class)
-public class SpringContextIntegrationTest {
-
- @Test
- public void whenSpringContextIsBootstrapped_thenNoExceptions() {
- }
-}
diff --git a/spring-security-client/spring-security-thymeleaf-config/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-client/spring-security-thymeleaf-config/src/test/java/org/baeldung/SpringContextTest.java
deleted file mode 100644
index 0afb3899db..0000000000
--- a/spring-security-client/spring-security-thymeleaf-config/src/test/java/org/baeldung/SpringContextTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.baeldung;
-
-import org.baeldung.config.Application;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = Application.class)
-public class SpringContextTest {
-
- @Test
- public void whenSpringContextIsBootstrapped_thenNoExceptions() {
- }
-}
diff --git a/spring-security-core/pom.xml b/spring-security-core/pom.xml
index 41dea087d3..b144357e25 100644
--- a/spring-security-core/pom.xml
+++ b/spring-security-core/pom.xml
@@ -9,10 +9,10 @@
war
- parent-boot-1
+ parent-boot-2
com.baeldung
0.0.1-SNAPSHOT
- ../parent-boot-1
+ ../parent-boot-2
@@ -36,6 +36,10 @@
org.springframework.boot
spring-boot-starter-actuator
+
+ org.springframework.boot
+ spring-boot-starter-web
+
com.h2database
h2
diff --git a/spring-security-core/src/main/java/org/baeldung/app/App.java b/spring-security-core/src/main/java/org/baeldung/app/App.java
index db0c9135c4..bf719b3b12 100644
--- a/spring-security-core/src/main/java/org/baeldung/app/App.java
+++ b/spring-security-core/src/main/java/org/baeldung/app/App.java
@@ -5,7 +5,7 @@ import javax.servlet.Filter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.boot.web.support.SpringBootServletInitializer;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.web.filter.DelegatingFilterProxy;
diff --git a/spring-security-core/src/main/java/org/baeldung/config/WebSecurityConfig.java b/spring-security-core/src/main/java/org/baeldung/config/WebSecurityConfig.java
index 0b6cd34f3e..df7c7d1611 100644
--- a/spring-security-core/src/main/java/org/baeldung/config/WebSecurityConfig.java
+++ b/spring-security-core/src/main/java/org/baeldung/config/WebSecurityConfig.java
@@ -1,12 +1,15 @@
package org.baeldung.config;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
@Configuration
@EnableWebSecurity
@@ -21,8 +24,13 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
- .withUser("jim").password("jim").roles("USER", "ACTUATOR")
- .and().withUser("pam").password("pam").roles("USER")
- .and().withUser("michael").password("michael").roles("MANAGER");
+ .withUser("jim").password(passwordEncoder().encode("jim")).roles("USER", "ACTUATOR")
+ .and().withUser("pam").password(passwordEncoder().encode("pam")).roles("USER")
+ .and().withUser("michael").password(passwordEncoder().encode("michael")).roles("MANAGER");
+ }
+
+ @Bean
+ public PasswordEncoder passwordEncoder() {
+ return new BCryptPasswordEncoder();
}
}
diff --git a/spring-security-core/src/main/java/org/baeldung/service/TaskService.java b/spring-security-core/src/main/java/org/baeldung/service/TaskService.java
index 4a0dae3aac..4efa3b0294 100644
--- a/spring-security-core/src/main/java/org/baeldung/service/TaskService.java
+++ b/spring-security-core/src/main/java/org/baeldung/service/TaskService.java
@@ -20,7 +20,7 @@ public class TaskService {
@PreFilter("hasRole('MANAGER') or filterObject.assignee == authentication.name")
public Iterable save(Iterable entities) {
- return taskRepository.save(entities);
+ return taskRepository.saveAll(entities);
}
}
diff --git a/spring-security-core/src/main/resources/application.properties b/spring-security-core/src/main/resources/application.properties
new file mode 100644
index 0000000000..709574239b
--- /dev/null
+++ b/spring-security-core/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-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextTest.java b/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextLiveTest.java
similarity index 92%
rename from spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextTest.java
rename to spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextLiveTest.java
index 307d31a809..b41f2b0338 100644
--- a/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextTest.java
+++ b/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextLiveTest.java
@@ -8,7 +8,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringSessionMongoDBApplication.class)
-public class SpringContextTest {
+public class SpringContextLiveTest {
@Test
public void whenSpringContextIsBootstrapped_thenNoExceptions() {
diff --git a/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextTest.java b/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextLiveTest.java
similarity index 92%
rename from spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextTest.java
rename to spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextLiveTest.java
index 994f93c24f..b23ce7dbbb 100644
--- a/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextTest.java
+++ b/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextLiveTest.java
@@ -9,7 +9,7 @@ import com.baeldung.spring.session.SessionWebApplication;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SessionWebApplication.class)
-public class SpringContextTest {
+public class SpringContextLiveTest {
@Test
public void whenSpringContextIsBootstrapped_thenNoExceptions() {
diff --git a/spring-thymeleaf-2/README.md b/spring-thymeleaf-2/README.md
new file mode 100644
index 0000000000..9bd441a6bd
--- /dev/null
+++ b/spring-thymeleaf-2/README.md
@@ -0,0 +1,3 @@
+## Relevant Articles:
+
+- [Working with Enums in Thymeleaf](https://www.baeldung.com/thymeleaf-enums)
diff --git a/spring-thymeleaf-2/pom.xml b/spring-thymeleaf-2/pom.xml
index 1b95cac43c..d31e5fa7f6 100644
--- a/spring-thymeleaf-2/pom.xml
+++ b/spring-thymeleaf-2/pom.xml
@@ -21,6 +21,12 @@
org.springframework.boot
spring-boot-starter-thymeleaf
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/lists/ListsController.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/lists/ListsController.java
new file mode 100644
index 0000000000..55a7f7c38e
--- /dev/null
+++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/lists/ListsController.java
@@ -0,0 +1,64 @@
+package com.baeldung.thymeleaf.lists;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@Controller
+@RequestMapping("/lists")
+public class ListsController {
+
+ @GetMapping("/toList")
+ public String usingToList(Model model) {
+ List colors = getColors();
+ String[] colorsArray = colors.toArray(new String[0]);
+ model.addAttribute("myArray", colorsArray);
+ return "lists/toList";
+ }
+
+ @GetMapping("/contains")
+ public String usingContains(Model model) {
+ model.addAttribute("myList", getColors());
+ model.addAttribute("others", getOtherColors());
+ return "lists/contains";
+ }
+
+ @GetMapping("/size")
+ public String usingSize(Model model) {
+ model.addAttribute("myList", getColors());
+ return "lists/size";
+ }
+
+ @GetMapping("/isEmpty")
+ public String usingIsEmpty(Model model) {
+ model.addAttribute("myList", getColors());
+ return "lists/isEmpty";
+ }
+
+ @GetMapping("/sort")
+ public String usingSort(Model model) {
+ model.addAttribute("myList", getColors());
+ model.addAttribute("reverse", Comparator.reverseOrder());
+ return "lists/sort";
+ }
+
+ private List getColors() {
+ List colors = new ArrayList<>();
+ colors.add("green");
+ colors.add("yellow");
+ colors.add("red");
+ colors.add("blue");
+ return colors;
+ }
+
+ private List getOtherColors() {
+ List colors = new ArrayList<>();
+ colors.add("green");
+ colors.add("blue");
+ return colors;
+ }
+}
diff --git a/spring-thymeleaf-2/src/main/resources/templates/lists/contains.html b/spring-thymeleaf-2/src/main/resources/templates/lists/contains.html
new file mode 100644
index 0000000000..2d874791d7
--- /dev/null
+++ b/spring-thymeleaf-2/src/main/resources/templates/lists/contains.html
@@ -0,0 +1,12 @@
+
+
+
+
+ Lists Utility Class in Thymeleaf
+
+
+myList contains red:
+
+myList contains red and green:
+
+
diff --git a/spring-thymeleaf-2/src/main/resources/templates/lists/isEmpty.html b/spring-thymeleaf-2/src/main/resources/templates/lists/isEmpty.html
new file mode 100644
index 0000000000..06c66153c7
--- /dev/null
+++ b/spring-thymeleaf-2/src/main/resources/templates/lists/isEmpty.html
@@ -0,0 +1,14 @@
+
+
+
+
+ Lists Utility Class in Thymeleaf
+
+
+
+isEmpty Check :
+
+List is not empty
+
+
+
\ No newline at end of file
diff --git a/spring-thymeleaf-2/src/main/resources/templates/lists/size.html b/spring-thymeleaf-2/src/main/resources/templates/lists/size.html
new file mode 100644
index 0000000000..594ff08467
--- /dev/null
+++ b/spring-thymeleaf-2/src/main/resources/templates/lists/size.html
@@ -0,0 +1,12 @@
+
+
+
+
+ Lists Utility Class in Thymeleaf
+
+
+
+size:
+
+
+
\ No newline at end of file
diff --git a/spring-thymeleaf-2/src/main/resources/templates/lists/sort.html b/spring-thymeleaf-2/src/main/resources/templates/lists/sort.html
new file mode 100644
index 0000000000..e23c7bccbb
--- /dev/null
+++ b/spring-thymeleaf-2/src/main/resources/templates/lists/sort.html
@@ -0,0 +1,12 @@
+
+
+
+
+ Lists Utility Class in Thymeleaf
+
+
+sort:
+
+sort with Comparator:
+
+
\ No newline at end of file
diff --git a/spring-thymeleaf-2/src/main/resources/templates/lists/toList.html b/spring-thymeleaf-2/src/main/resources/templates/lists/toList.html
new file mode 100644
index 0000000000..680c13160e
--- /dev/null
+++ b/spring-thymeleaf-2/src/main/resources/templates/lists/toList.html
@@ -0,0 +1,14 @@
+
+
+
+
+ Lists Utility Class in Thymeleaf
+
+
+
+
+ converted list size:
+
+
+
+
\ No newline at end of file
diff --git a/spring-thymeleaf-2/src/test/java/com/baeldung/thymeleaf/lists/ListsControllerIntegrationTest.java b/spring-thymeleaf-2/src/test/java/com/baeldung/thymeleaf/lists/ListsControllerIntegrationTest.java
new file mode 100644
index 0000000000..252ec3bef3
--- /dev/null
+++ b/spring-thymeleaf-2/src/test/java/com/baeldung/thymeleaf/lists/ListsControllerIntegrationTest.java
@@ -0,0 +1,60 @@
+package com.baeldung.thymeleaf.lists;
+
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+@AutoConfigureMockMvc(printOnlyOnFailure = false)
+public class ListsControllerIntegrationTest {
+
+ @Autowired
+ private MockMvc mockMvc;
+
+ @Test
+ public void whenCalledToList_ThenConvertsToList() throws Exception {
+ mockMvc.perform(MockMvcRequestBuilders.get("/lists/toList"))
+ .andExpect(status().isOk())
+ .andExpect(content().string(containsString("converted list size: 4")));
+ }
+
+ @Test
+ public void whenCalledContains_ThenChecksMembership() throws Exception {
+ mockMvc.perform(MockMvcRequestBuilders.get("/lists/contains"))
+ .andExpect(status().isOk())
+ .andExpect(content().string(containsString("myList contains red: true")))
+ .andExpect(content().string(containsString("myList contains red and green: true")));
+ }
+
+ @Test
+ public void whenCalledSize_ThenReturnsSize() throws Exception {
+ mockMvc.perform(MockMvcRequestBuilders.get("/lists/size"))
+ .andExpect(status().isOk())
+ .andExpect(content().string(containsString("size: 4")));
+ }
+
+ @Test
+ public void whenCalledSort_ThenSortsItems() throws Exception {
+ mockMvc.perform(MockMvcRequestBuilders.get("/lists/sort"))
+ .andExpect(status().isOk())
+ .andExpect(content().string(containsString("sort: [blue, green, red, yellow]")))
+ .andExpect(content().string(containsString("sort with Comparator: [yellow, red, green, blue]")));
+ }
+
+ @Test
+ public void whenCalledIsEmpty_ThenChecksAnyMembers() throws Exception {
+ mockMvc.perform(MockMvcRequestBuilders.get("/lists/isEmpty"))
+ .andExpect(status().isOk())
+ .andExpect(content().string(containsString("isEmpty Check : false")));
+ }
+}
\ No newline at end of file
diff --git a/spring-userservice/src/test/java/org/baeldung/SpringContextTest.java b/spring-userservice/src/test/java/org/baeldung/SpringContextTest.java
deleted file mode 100644
index 2853a955fa..0000000000
--- a/spring-userservice/src/test/java/org/baeldung/SpringContextTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.baeldung;
-
-import org.baeldung.custom.config.MvcConfig;
-import org.baeldung.custom.config.PersistenceDerbyJPAConfig;
-import org.baeldung.custom.config.SecSecurityConfig;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = { MvcConfig.class, PersistenceDerbyJPAConfig.class, SecSecurityConfig.class })
-public class SpringContextTest {
-
- @Test
- public void whenSpringContextIsBootstrapped_thenNoExceptions() {
- }
-}
diff --git a/spring-vault/src/test/java/org/baeldung/SpringContextTest.java b/spring-vault/src/test/java/org/baeldung/SpringContextLiveTest.java
similarity index 92%
rename from spring-vault/src/test/java/org/baeldung/SpringContextTest.java
rename to spring-vault/src/test/java/org/baeldung/SpringContextLiveTest.java
index 95abe622fa..1b3db59ecb 100644
--- a/spring-vault/src/test/java/org/baeldung/SpringContextTest.java
+++ b/spring-vault/src/test/java/org/baeldung/SpringContextLiveTest.java
@@ -8,7 +8,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringVaultApplication.class)
-public class SpringContextTest {
+public class SpringContextLiveTest {
@Test
public void whenSpringContextIsBootstrapped_thenNoExceptions() {
diff --git a/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextTest.java b/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextLiveTest.java
similarity index 92%
rename from spring-webflux-amqp/src/test/java/org/baeldung/SpringContextTest.java
rename to spring-webflux-amqp/src/test/java/org/baeldung/SpringContextLiveTest.java
index 88d29d5ac0..effe8d2cfa 100644
--- a/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextTest.java
+++ b/spring-webflux-amqp/src/test/java/org/baeldung/SpringContextLiveTest.java
@@ -8,7 +8,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringWebfluxAmqpApplication.class)
-public class SpringContextTest {
+public class SpringContextLiveTest {
@Test
public void whenSpringContextIsBootstrapped_thenNoExceptions() {
diff --git a/testing-modules/README.md b/testing-modules/README.md
index b269f547ec..d534e5cea6 100644
--- a/testing-modules/README.md
+++ b/testing-modules/README.md
@@ -1,15 +1,5 @@
## Testing Modules
-### Relevant Articles:
+This is a aggregator module containing several modules focused on testing libraries.
-- [Quick Guide to BDDMockito](http://www.baeldung.com/bdd-mockito)
-- [AssertJ Exception Assertions](http://www.baeldung.com/assertj-exception-assertion)
-- [Using Hamcrest Number Matchers](http://www.baeldung.com/hamcrest-number-matchers)
-- [Assertions in JUnit 4 and JUnit 5](http://www.baeldung.com/junit-assertions)
-- [REST-assured with Groovy](http://www.baeldung.com/rest-assured-groovy)
-- [Hamcrest Bean Matchers](http://www.baeldung.com/hamcrest-bean-matchers)
-- [Hamcrest Object Matchers](http://www.baeldung.com/hamcrest-object-matchers)
-- [Headers, Cookies and Parameters with REST-assured](http://www.baeldung.com/rest-assured-header-cookie-parameter)
-- [JSON Schema Validation with REST-assured](http://www.baeldung.com/rest-assured-json-schema)
-- [Testing Callbacks with Mockito](http://www.baeldung.com/mockito-callbacks)
diff --git a/testing-modules/easy-random/README.md b/testing-modules/easy-random/README.md
new file mode 100644
index 0000000000..117d636bcc
--- /dev/null
+++ b/testing-modules/easy-random/README.md
@@ -0,0 +1,3 @@
+## Relevant Articles:
+
+- [Quick Guide to EasyRandom in Java](https://www.baeldung.com/java-easy-random)
diff --git a/testing-modules/junit-5-advanced/README.md b/testing-modules/junit-5-advanced/README.md
index 7282a4efad..61a65b2e5a 100644
--- a/testing-modules/junit-5-advanced/README.md
+++ b/testing-modules/junit-5-advanced/README.md
@@ -1,3 +1,4 @@
-### Relevant Articles
+## Relevant Articles:
- [JUnit 5 TestWatcher API](https://www.baeldung.com/junit-testwatcher)
+- [JUnit Custom Display Name Generator API](https://www.baeldung.com/junit-custom-display-name-generator)
diff --git a/testing-modules/junit-5/README.md b/testing-modules/junit-5/README.md
index d543b9b09b..14e018a5f9 100644
--- a/testing-modules/junit-5/README.md
+++ b/testing-modules/junit-5/README.md
@@ -11,3 +11,4 @@
- [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)
diff --git a/testing-modules/mockito/README.md b/testing-modules/mockito/README.md
index 59954784f9..8fe57016e3 100644
--- a/testing-modules/mockito/README.md
+++ b/testing-modules/mockito/README.md
@@ -18,3 +18,7 @@
- [Hamcrest Common Core Matchers](http://www.baeldung.com/hamcrest-core-matchers)
- [Testing Callbacks with Mockito](http://www.baeldung.com/mockito-callbacks)
- [Using Hamcrest Number Matchers](https://www.baeldung.com/hamcrest-number-matchers)
+- [Quick Guide to BDDMockito](http://www.baeldung.com/bdd-mockito)
+- [Hamcrest Bean Matchers](http://www.baeldung.com/hamcrest-bean-matchers)
+- [Hamcrest Object Matchers](http://www.baeldung.com/hamcrest-object-matchers)
+- [Testing Callbacks with Mockito](http://www.baeldung.com/mockito-callbacks)
diff --git a/testing-modules/rest-assured/README.md b/testing-modules/rest-assured/README.md
index ec108353a0..0012a63012 100644
--- a/testing-modules/rest-assured/README.md
+++ b/testing-modules/rest-assured/README.md
@@ -3,3 +3,7 @@
- [REST-assured Support for Spring MockMvc](https://www.baeldung.com/spring-mock-mvc-rest-assured)
- [Getting and Verifying Response Data with REST-assured](https://www.baeldung.com/rest-assured-response)
- [REST Assured Authentication](https://www.baeldung.com/rest-assured-authentication)
+- [REST-assured with Groovy](http://www.baeldung.com/rest-assured-groovy)
+- [Headers, Cookies and Parameters with REST-assured](http://www.baeldung.com/rest-assured-header-cookie-parameter)
+- [JSON Schema Validation with REST-assured](http://www.baeldung.com/rest-assured-json-schema)
+
diff --git a/testing-modules/spring-testing/README.md b/testing-modules/spring-testing/README.md
index 0970eabeff..1b06c13953 100644
--- a/testing-modules/spring-testing/README.md
+++ b/testing-modules/spring-testing/README.md
@@ -1,8 +1,8 @@
-### Relevant Articles:
+## Relevant Articles:
- [Mockito.mock() vs @Mock vs @MockBean](http://www.baeldung.com/java-spring-mockito-mock-mockbean)
- [A Quick Guide to @TestPropertySource](https://www.baeldung.com/spring-test-property-source)
- [Guide to ReflectionTestUtils for Unit Testing](https://www.baeldung.com/spring-reflection-test-utils)
- [How to Test the @Scheduled Annotation](https://www.baeldung.com/spring-testing-scheduled-annotation)
- [Using SpringJUnit4ClassRunner with Parameterized](https://www.baeldung.com/springjunit4classrunner-parameterized)
-- [Override properties in Spring]()
+- [Override Properties in Spring’s Tests](https://www.baeldung.com/spring-tests-override-properties)
diff --git a/testing-modules/testing/README.md b/testing-modules/testing/README.md
index 4a7829e867..135ef1054a 100644
--- a/testing-modules/testing/README.md
+++ b/testing-modules/testing/README.md
@@ -21,3 +21,4 @@
- [Using Conditions with AssertJ Assertions](http://www.baeldung.com/assertj-conditions)
- [A Guide to JavaFaker](https://www.baeldung.com/java-faker)
- [Running JUnit Tests Programmatically, from a Java Application](https://www.baeldung.com/junit-tests-run-programmatically-from-java)
+- [AssertJ Exception Assertions](http://www.baeldung.com/assertj-exception-assertion)
diff --git a/xml/src/main/java/com/baeldung/xml/attribute/Dom4jTransformer.java b/xml/src/main/java/com/baeldung/xml/attribute/Dom4jTransformer.java
index a1922ad224..d4fdeb0d58 100644
--- a/xml/src/main/java/com/baeldung/xml/attribute/Dom4jTransformer.java
+++ b/xml/src/main/java/com/baeldung/xml/attribute/Dom4jTransformer.java
@@ -3,6 +3,7 @@ package com.baeldung.xml.attribute;
import org.dom4j.*;
import org.dom4j.io.DocumentSource;
import org.dom4j.io.SAXReader;
+import org.xml.sax.SAXException;
import javax.xml.XMLConstants;
import javax.xml.transform.OutputKeys;
@@ -17,9 +18,12 @@ import java.util.List;
public class Dom4jTransformer {
private final Document input;
- public Dom4jTransformer(String resourcePath) throws DocumentException {
+ public Dom4jTransformer(String resourcePath) throws DocumentException, SAXException {
// 1- Build the doc from the XML file
SAXReader xmlReader = new SAXReader();
+ xmlReader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
+ xmlReader.setFeature("http://xml.org/sax/features/external-general-entities", false);
+ xmlReader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
this.input = xmlReader.read(resourcePath);
}
diff --git a/xml/src/main/java/com/baeldung/xml/attribute/JaxpTransformer.java b/xml/src/main/java/com/baeldung/xml/attribute/JaxpTransformer.java
index a2266a2b44..a55b00950c 100644
--- a/xml/src/main/java/com/baeldung/xml/attribute/JaxpTransformer.java
+++ b/xml/src/main/java/com/baeldung/xml/attribute/JaxpTransformer.java
@@ -32,7 +32,8 @@ public class JaxpTransformer {
// 1- Build the doc from the XML file
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
- input = factory.newDocumentBuilder()
+ factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
+ this.input = factory.newDocumentBuilder()
.parse(resourcePath);
}
@@ -40,24 +41,24 @@ public class JaxpTransformer {
// 2- Locate the node(s) with xpath
XPath xpath = XPathFactory.newInstance()
.newXPath();
- NodeList nodes = (NodeList) xpath.evaluate(String.format("//*[contains(@%s, '%s')]", attribute, oldValue), input, XPathConstants.NODESET);
+ NodeList nodes = (NodeList) xpath.evaluate(String.format("//*[contains(@%s, '%s')]", attribute, oldValue), this.input, XPathConstants.NODESET);
// 3- Make the change on the selected nodes
for (int i = 0; i < nodes.getLength(); i++) {
Element value = (Element) nodes.item(i);
value.setAttribute(attribute, newValue);
}
- //Stream api syntax
- // IntStream
- // .range(0, nodes.getLength())
- // .mapToObj(i -> (Element) nodes.item(i))
- // .forEach(value -> value.setAttribute(attribute, newValue));
+ // Stream api syntax
+ // IntStream
+ // .range(0, nodes.getLength())
+ // .mapToObj(i -> (Element) nodes.item(i))
+ // .forEach(value -> value.setAttribute(attribute, newValue));
// 4- Save the result to a new XML doc
TransformerFactory factory = TransformerFactory.newInstance();
factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
Transformer xformer = factory.newTransformer();
xformer.setOutputProperty(OutputKeys.INDENT, "yes");
Writer output = new StringWriter();
- xformer.transform(new DOMSource(input), new StreamResult(output));
+ xformer.transform(new DOMSource(this.input), new StreamResult(output));
return output.toString();
}
}
diff --git a/xml/src/main/java/com/baeldung/xml/attribute/jmh/AttributeBenchMark.java b/xml/src/main/java/com/baeldung/xml/attribute/jmh/AttributeBenchMark.java
index 064e181713..f5f3a2ce6c 100644
--- a/xml/src/main/java/com/baeldung/xml/attribute/jmh/AttributeBenchMark.java
+++ b/xml/src/main/java/com/baeldung/xml/attribute/jmh/AttributeBenchMark.java
@@ -1,7 +1,19 @@
package com.baeldung.xml.attribute.jmh;
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.xpath.XPathExpressionException;
+
import org.dom4j.DocumentException;
-import org.openjdk.jmh.annotations.*;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.BenchmarkMode;
+import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.annotations.OutputTimeUnit;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
@@ -12,30 +24,23 @@ import com.baeldung.xml.attribute.Dom4jTransformer;
import com.baeldung.xml.attribute.JaxpTransformer;
import com.baeldung.xml.attribute.JooxTransformer;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.xpath.XPathExpressionException;
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@State(Scope.Benchmark)
public class AttributeBenchMark {
public static void main(String[] args) throws RunnerException {
- Options opt = new OptionsBuilder()
- .include(AttributeBenchMark.class.getSimpleName())
- .forks(1)
- .build();
+ Options opt = new OptionsBuilder().include(AttributeBenchMark.class.getSimpleName())
+ .forks(1)
+ .build();
new Runner(opt).run();
}
@Benchmark
- public String dom4jBenchmark() throws DocumentException, TransformerException {
- String path = getClass()
- .getResource("/xml/attribute.xml")
- .toString();
+ public String dom4jBenchmark() throws DocumentException, TransformerException, SAXException {
+ String path = this.getClass()
+ .getResource("/xml/attribute.xml")
+ .toString();
Dom4jTransformer transformer = new Dom4jTransformer(path);
String attribute = "customer";
String oldValue = "true";
@@ -46,9 +51,9 @@ public class AttributeBenchMark {
@Benchmark
public String jooxBenchmark() throws IOException, SAXException {
- String path = getClass()
- .getResource("/xml/attribute.xml")
- .toString();
+ String path = this.getClass()
+ .getResource("/xml/attribute.xml")
+ .toString();
JooxTransformer transformer = new JooxTransformer(path);
String attribute = "customer";
String oldValue = "true";
@@ -59,9 +64,9 @@ public class AttributeBenchMark {
@Benchmark
public String jaxpBenchmark() throws TransformerException, ParserConfigurationException, SAXException, IOException, XPathExpressionException {
- String path = getClass()
- .getResource("/xml/attribute.xml")
- .toString();
+ String path = this.getClass()
+ .getResource("/xml/attribute.xml")
+ .toString();
JaxpTransformer transformer = new JaxpTransformer(path);
String attribute = "customer";
String oldValue = "true";
diff --git a/xml/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java b/xml/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java
index 485744f9a5..351b8bc437 100644
--- a/xml/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java
+++ b/xml/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java
@@ -2,14 +2,19 @@ package com.baeldung.xml.attribute;
import org.dom4j.DocumentException;
import org.junit.jupiter.api.Test;
+import org.xml.sax.SAXException;
+import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactoryConfigurationError;
+import javax.xml.xpath.XPathExpressionException;
+
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Paths;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.xmlunit.assertj.XmlAssert.assertThat;
/**
@@ -18,10 +23,9 @@ import static org.xmlunit.assertj.XmlAssert.assertThat;
public class Dom4jProcessorUnitTest {
@Test
- public void givenXmlWithAttributes_whenModifyAttribute_thenGetXmlUpdated() throws TransformerFactoryConfigurationError, TransformerException, DocumentException {
- String path = getClass()
- .getResource("/xml/attribute.xml")
- .toString();
+ public void givenXmlWithAttributes_whenModifyAttribute_thenGetXmlUpdated() throws TransformerFactoryConfigurationError, TransformerException, DocumentException, SAXException {
+ String path = getClass().getResource("/xml/attribute.xml")
+ .toString();
Dom4jTransformer transformer = new Dom4jTransformer(path);
String attribute = "customer";
String oldValue = "true";
@@ -33,23 +37,32 @@ public class Dom4jProcessorUnitTest {
}
@Test
- public void givenTwoXml_whenModifyAttribute_thenGetSimilarXml() throws IOException, TransformerFactoryConfigurationError, TransformerException, URISyntaxException, DocumentException {
- String path = getClass()
- .getResource("/xml/attribute.xml")
- .toString();
+ public void givenTwoXml_whenModifyAttribute_thenGetSimilarXml() throws IOException, TransformerFactoryConfigurationError, TransformerException, URISyntaxException, DocumentException, SAXException {
+ String path = getClass().getResource("/xml/attribute.xml")
+ .toString();
Dom4jTransformer transformer = new Dom4jTransformer(path);
String attribute = "customer";
String oldValue = "true";
String newValue = "false";
- String expectedXml = new String(Files.readAllBytes((Paths.get(getClass()
- .getResource("/xml/attribute_expected.xml")
- .toURI()))));
+ String expectedXml = new String(Files.readAllBytes((Paths.get(getClass().getResource("/xml/attribute_expected.xml")
+ .toURI()))));
String result = transformer.modifyAttribute(attribute, oldValue, newValue);
- assertThat(result)
- .and(expectedXml)
- .areSimilar();
+ assertThat(result).and(expectedXml)
+ .areSimilar();
+ }
+
+ @Test
+ public void givenXmlXee_whenInit_thenThrowException() throws IOException, SAXException, ParserConfigurationException, XPathExpressionException, TransformerFactoryConfigurationError, TransformerException {
+ String path = getClass().getResource("/xml/xee_attribute.xml")
+ .toString();
+
+ assertThatThrownBy(() -> {
+
+ new Dom4jTransformer(path);
+
+ }).isInstanceOf(DocumentException.class);
}
}
diff --git a/xml/src/test/java/com/baeldung/xml/attribute/JaxpProcessorUnitTest.java b/xml/src/test/java/com/baeldung/xml/attribute/JaxpProcessorUnitTest.java
index 8394016dbd..8d814783e0 100644
--- a/xml/src/test/java/com/baeldung/xml/attribute/JaxpProcessorUnitTest.java
+++ b/xml/src/test/java/com/baeldung/xml/attribute/JaxpProcessorUnitTest.java
@@ -1,5 +1,6 @@
package com.baeldung.xml.attribute;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.xmlunit.assertj.XmlAssert.assertThat;
import java.io.IOException;
@@ -11,6 +12,7 @@ import javax.xml.xpath.XPathExpressionException;
import org.junit.jupiter.api.Test;
import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
/**
* Unit test for {@link JaxpTransformer}.
@@ -31,4 +33,16 @@ public class JaxpProcessorUnitTest {
assertThat(result).hasXPath("//*[contains(@customer, 'false')]");
}
+ @Test
+ public void givenXmlXee_whenInit_thenThrowException() throws IOException, SAXException, ParserConfigurationException, XPathExpressionException, TransformerFactoryConfigurationError, TransformerException {
+ String path = getClass().getResource("/xml/xee_attribute.xml")
+ .toString();
+
+ assertThatThrownBy(() -> {
+
+ new JaxpTransformer(path);
+
+ }).isInstanceOf(SAXParseException.class);
+ }
+
}
diff --git a/xml/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java b/xml/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java
index 38c7c59789..40d0c671e7 100644
--- a/xml/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java
+++ b/xml/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java
@@ -2,13 +2,19 @@ package com.baeldung.xml.attribute;
import org.junit.jupiter.api.Test;
import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactoryConfigurationError;
+import javax.xml.xpath.XPathExpressionException;
+
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Paths;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.xmlunit.assertj.XmlAssert.assertThat;
/**
@@ -18,9 +24,8 @@ public class JooxProcessorUnitTest {
@Test
public void givenXmlWithAttributes_whenModifyAttribute_thenGetXmlUpdated() throws IOException, SAXException, TransformerFactoryConfigurationError {
- String path = getClass()
- .getResource("/xml/attribute.xml")
- .toString();
+ String path = getClass().getResource("/xml/attribute.xml")
+ .toString();
JooxTransformer transformer = new JooxTransformer(path);
String attribute = "customer";
String oldValue = "true";
@@ -33,22 +38,31 @@ public class JooxProcessorUnitTest {
@Test
public void givenTwoXml_whenModifyAttribute_thenGetSimilarXml() throws IOException, TransformerFactoryConfigurationError, URISyntaxException, SAXException {
- String path = getClass()
- .getResource("/xml/attribute.xml")
- .toString();
+ String path = getClass().getResource("/xml/attribute.xml")
+ .toString();
JooxTransformer transformer = new JooxTransformer(path);
String attribute = "customer";
String oldValue = "true";
String newValue = "false";
- String expectedXml = new String(Files.readAllBytes((Paths.get(getClass()
- .getResource("/xml/attribute_expected.xml")
- .toURI()))));
+ String expectedXml = new String(Files.readAllBytes((Paths.get(getClass().getResource("/xml/attribute_expected.xml")
+ .toURI()))));
String result = transformer.modifyAttribute(attribute, oldValue, newValue);
- assertThat(result)
- .and(expectedXml)
- .areSimilar();
+ assertThat(result).and(expectedXml)
+ .areSimilar();
+ }
+
+ @Test
+ public void givenXmlXee_whenInit_thenThrowException() throws IOException, SAXException, ParserConfigurationException, XPathExpressionException, TransformerFactoryConfigurationError, TransformerException {
+ String path = getClass().getResource("/xml/xee_attribute.xml")
+ .toString();
+
+ assertThatThrownBy(() -> {
+
+ new JooxTransformer(path);
+
+ }).isInstanceOf(SAXParseException.class);
}
}
diff --git a/xml/src/test/resources/xml/xee_attribute.xml b/xml/src/test/resources/xml/xee_attribute.xml
new file mode 100644
index 0000000000..9633ca15b0
--- /dev/null
+++ b/xml/src/test/resources/xml/xee_attribute.xml
@@ -0,0 +1,9 @@
+
+ ]>
+
+ &xxe;
+
+ john@email.com
+ mary@email.com
+
\ No newline at end of file
diff --git a/xstream/README.md b/xstream/README.md
index e8302c14ef..bf917e81fb 100644
--- a/xstream/README.md
+++ b/xstream/README.md
@@ -1,4 +1,6 @@
-### Relevant Articles:
+## 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)
+- [Remote Code Execution with XStream](https://www.baeldung.com/java-xstream-remote-code-execution)