\ No newline at end of file
diff --git a/libraries-2/src/test/resources/handlebars/if.html b/libraries-2/src/test/resources/handlebars/if.html
new file mode 100644
index 0000000000..ebdc724f66
--- /dev/null
+++ b/libraries-2/src/test/resources/handlebars/if.html
@@ -0,0 +1,5 @@
+{{#if busy}}
+
{{name}} is busy.
+{{else}}
+
{{name}} is not busy.
+{{/if}}
\ No newline at end of file
diff --git a/libraries-2/src/test/resources/handlebars/if_mustache.html b/libraries-2/src/test/resources/handlebars/if_mustache.html
new file mode 100644
index 0000000000..d75f5fa8f9
--- /dev/null
+++ b/libraries-2/src/test/resources/handlebars/if_mustache.html
@@ -0,0 +1,5 @@
+{{#if busy}}
+
{{name}} is busy.
+{{^}}
+
{{name}} is not busy.
+{{/if}}
\ No newline at end of file
diff --git a/libraries-2/src/test/resources/handlebars/messagebase.html b/libraries-2/src/test/resources/handlebars/messagebase.html
new file mode 100644
index 0000000000..7ee3257e06
--- /dev/null
+++ b/libraries-2/src/test/resources/handlebars/messagebase.html
@@ -0,0 +1,9 @@
+
+
+{{#block "intro"}}
+ This is the intro
+{{/block}}
+{{#block "message"}}
+{{/block}}
+
+
\ No newline at end of file
diff --git a/libraries-2/src/test/resources/handlebars/page.html b/libraries-2/src/test/resources/handlebars/page.html
new file mode 100644
index 0000000000..27b20737f3
--- /dev/null
+++ b/libraries-2/src/test/resources/handlebars/page.html
@@ -0,0 +1,2 @@
+{{>header}}
+
This is the page {{name}}
\ No newline at end of file
diff --git a/libraries-2/src/test/resources/handlebars/person.html b/libraries-2/src/test/resources/handlebars/person.html
new file mode 100644
index 0000000000..9df7850f60
--- /dev/null
+++ b/libraries-2/src/test/resources/handlebars/person.html
@@ -0,0 +1 @@
+{{#isBusy this}}{{/isBusy}}
\ No newline at end of file
diff --git a/libraries-2/src/test/resources/handlebars/simplemessage.html b/libraries-2/src/test/resources/handlebars/simplemessage.html
new file mode 100644
index 0000000000..3b3a01980a
--- /dev/null
+++ b/libraries-2/src/test/resources/handlebars/simplemessage.html
@@ -0,0 +1,4 @@
+{{#partial "message" }}
+ Hi there!
+{{/partial}}
+{{> messagebase}}
\ No newline at end of file
diff --git a/libraries-2/src/test/resources/handlebars/with.html b/libraries-2/src/test/resources/handlebars/with.html
new file mode 100644
index 0000000000..90077b4835
--- /dev/null
+++ b/libraries-2/src/test/resources/handlebars/with.html
@@ -0,0 +1,3 @@
+{{#with address}}
+
I live in {{street}}
+{{/with}}
\ No newline at end of file
diff --git a/libraries-2/src/test/resources/handlebars/with_mustache.html b/libraries-2/src/test/resources/handlebars/with_mustache.html
new file mode 100644
index 0000000000..3adf6a7556
--- /dev/null
+++ b/libraries-2/src/test/resources/handlebars/with_mustache.html
@@ -0,0 +1,3 @@
+{{#address}}
+
+ Upload new Video
+
+
diff --git a/persistence-modules/spring-boot-persistence-mongodb/src/main/resources/templates/photos.html b/persistence-modules/spring-boot-persistence-mongodb/src/main/resources/templates/photos.html
new file mode 100644
index 0000000000..b5d56d020a
--- /dev/null
+++ b/persistence-modules/spring-boot-persistence-mongodb/src/main/resources/templates/photos.html
@@ -0,0 +1,10 @@
+
+
+
View Photo
+ Title: name
+
+
+
+ Back to home page
+
+
\ No newline at end of file
diff --git a/persistence-modules/spring-boot-persistence-mongodb/src/main/resources/templates/uploadPhoto.html b/persistence-modules/spring-boot-persistence-mongodb/src/main/resources/templates/uploadPhoto.html
new file mode 100644
index 0000000000..6d51c06d8f
--- /dev/null
+++ b/persistence-modules/spring-boot-persistence-mongodb/src/main/resources/templates/uploadPhoto.html
@@ -0,0 +1,15 @@
+
+
+
+
Upload new Photo
+
+
+
+
\ No newline at end of file
diff --git a/persistence-modules/spring-boot-persistence-mongodb/src/main/resources/templates/uploadVideo.html b/persistence-modules/spring-boot-persistence-mongodb/src/main/resources/templates/uploadVideo.html
new file mode 100644
index 0000000000..ebc29d98e2
--- /dev/null
+++ b/persistence-modules/spring-boot-persistence-mongodb/src/main/resources/templates/uploadVideo.html
@@ -0,0 +1,15 @@
+
+
+
+
Upload new Video
+
+
+
+
\ No newline at end of file
diff --git a/persistence-modules/spring-boot-persistence-mongodb/src/main/resources/templates/videos.html b/persistence-modules/spring-boot-persistence-mongodb/src/main/resources/templates/videos.html
new file mode 100644
index 0000000000..b0ee0fc577
--- /dev/null
+++ b/persistence-modules/spring-boot-persistence-mongodb/src/main/resources/templates/videos.html
@@ -0,0 +1,15 @@
+
+
+
\ No newline at end of file
diff --git a/spring-mvc-java/src/test/java/com/baeldung/SpringContextTest.java b/spring-mvc-java/src/test/java/com/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..9777addb61
--- /dev/null
+++ b/spring-mvc-java/src/test/java/com/baeldung/SpringContextTest.java
@@ -0,0 +1,21 @@
+package com.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.support.AnnotationConfigContextLoader;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+import com.baeldung.config.AppInitializer;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { AppInitializer.class }, loader = AnnotationConfigContextLoader.class)
+@WebAppConfiguration
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+
+ }
+}
diff --git a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/TestConfig.java b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/TestConfig.java
index 529879fada..75efd57ae4 100644
--- a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/TestConfig.java
+++ b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/TestConfig.java
@@ -15,7 +15,7 @@ import org.thymeleaf.templateresolver.ServletContextTemplateResolver;
@Configuration
@EnableWebMvc
-@ComponentScan(basePackages = { "com.baeldung.web.controller" })
+@ComponentScan(basePackages = { "com.baeldung.web.controller.message" })
public class TestConfig implements WebMvcConfigurer {
@Autowired
@@ -44,5 +44,4 @@ public class TestConfig implements WebMvcConfigurer {
templateEngine.setTemplateResolver(templateResolver());
return templateEngine;
}
-
}
diff --git a/spring-mvc-java/src/test/java/com/baeldung/web/controller/EmployeeIntegrationTest.java b/spring-mvc-java/src/test/java/com/baeldung/web/controller/EmployeeIntegrationTest.java
deleted file mode 100644
index 0c2aa3de1b..0000000000
--- a/spring-mvc-java/src/test/java/com/baeldung/web/controller/EmployeeIntegrationTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.baeldung.web.controller;
-
-import org.junit.Before;
-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.web.WebAppConfiguration;
-
-import com.baeldung.model.Employee;
-import com.baeldung.spring.web.config.WebConfig;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@WebAppConfiguration
-@ContextConfiguration(classes = WebConfig.class)
-public class EmployeeIntegrationTest {
-
- @Autowired
- private EmployeeController employeeController;
-
- @Before
- public void setup() {
- employeeController.initEmployees();
- }
-
- @Test
- public void whenInitEmployees_thenVerifyValuesInitiation() {
-
- Employee employee1 = employeeController.employeeMap.get(1L);
- Employee employee2 = employeeController.employeeMap.get(2L);
- Employee employee3 = employeeController.employeeMap.get(3L);
-
- Assert.assertTrue(employee1.getId() == 1L);
- Assert.assertTrue(employee1.getName().equals("John"));
- Assert.assertTrue(employee1.getContactNumber().equals("223334411"));
- Assert.assertTrue(employee1.getWorkingArea().equals("rh"));
-
- Assert.assertTrue(employee2.getId() == 2L);
- Assert.assertTrue(employee2.getName().equals("Peter"));
- Assert.assertTrue(employee2.getContactNumber().equals("22001543"));
- Assert.assertTrue(employee2.getWorkingArea().equals("informatics"));
-
- Assert.assertTrue(employee3.getId() == 3L);
- Assert.assertTrue(employee3.getName().equals("Mike"));
- Assert.assertTrue(employee3.getContactNumber().equals("223334411"));
- Assert.assertTrue(employee3.getWorkingArea().equals("admin"));
- }
-
-}
diff --git a/spring-mvc-java/src/test/java/com/baeldung/web/controller/RequestMapingShortcutsIntegrationTest.java b/spring-mvc-java/src/test/java/com/baeldung/web/controller/RequestMapingShortcutsIntegrationTest.java
deleted file mode 100644
index fb21905027..0000000000
--- a/spring-mvc-java/src/test/java/com/baeldung/web/controller/RequestMapingShortcutsIntegrationTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.baeldung.web.controller;
-
-import org.junit.Before;
-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.web.WebAppConfiguration;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultMatcher;
-import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
-import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
-import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
-import org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-import org.springframework.web.context.WebApplicationContext;
-
-import com.baeldung.spring.web.config.WebConfig;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@WebAppConfiguration
-@ContextConfiguration(classes = WebConfig.class)
-public class RequestMapingShortcutsIntegrationTest {
-
- @Autowired
- private WebApplicationContext ctx;
-
- private MockMvc mockMvc;
-
- @Before
- public void setup () {
- DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.ctx);
- this.mockMvc = builder.build();
- }
-
- @Test
- public void giventUrl_whenGetRequest_thenFindGetResponse() throws Exception {
-
- MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/get");
-
- ResultMatcher contentMatcher = MockMvcResultMatchers.content().string("GET Response");
-
- this.mockMvc.perform(builder).andExpect(contentMatcher).andExpect(MockMvcResultMatchers.status().isOk());
-
- }
-
- @Test
- public void giventUrl_whenPostRequest_thenFindPostResponse() throws Exception {
-
- MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.post("/post");
-
- ResultMatcher contentMatcher = MockMvcResultMatchers.content().string("POST Response");
-
- this.mockMvc.perform(builder).andExpect(contentMatcher).andExpect(MockMvcResultMatchers.status().isOk());
-
- }
-
- @Test
- public void giventUrl_whenPutRequest_thenFindPutResponse() throws Exception {
-
- MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.put("/put");
-
- ResultMatcher contentMatcher = MockMvcResultMatchers.content().string("PUT Response");
-
- this.mockMvc.perform(builder).andExpect(contentMatcher).andExpect(MockMvcResultMatchers.status().isOk());
-
- }
-
- @Test
- public void giventUrl_whenDeleteRequest_thenFindDeleteResponse() throws Exception {
-
- MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.delete("/delete");
-
- ResultMatcher contentMatcher = MockMvcResultMatchers.content().string("DELETE Response");
-
- this.mockMvc.perform(builder).andExpect(contentMatcher).andExpect(MockMvcResultMatchers.status().isOk());
-
- }
-
- @Test
- public void giventUrl_whenPatchRequest_thenFindPatchResponse() throws Exception {
-
- MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.patch("/patch");
-
- ResultMatcher contentMatcher = MockMvcResultMatchers.content().string("PATCH Response");
-
- this.mockMvc.perform(builder).andExpect(contentMatcher).andExpect(MockMvcResultMatchers.status().isOk());
-
- }
-
-}
diff --git a/spring-mvc-kotlin/.gitignore b/spring-mvc-kotlin/.gitignore
new file mode 100644
index 0000000000..416395ffea
--- /dev/null
+++ b/spring-mvc-kotlin/.gitignore
@@ -0,0 +1 @@
+transaction.log
\ No newline at end of file
diff --git a/spring-mvc-kotlin/README.md b/spring-mvc-kotlin/README.md
index e5167f69fc..cc6827eb1b 100644
--- a/spring-mvc-kotlin/README.md
+++ b/spring-mvc-kotlin/README.md
@@ -2,3 +2,4 @@
- [Spring MVC Setup with Kotlin](http://www.baeldung.com/spring-mvc-kotlin)
- [Working with Kotlin and JPA](http://www.baeldung.com/kotlin-jpa)
- [Kotlin-allopen and Spring](http://www.baeldung.com/kotlin-allopen-spring)
+- [MockMvc Kotlin DSL](https://www.baeldung.com/mockmvc-kotlin-dsl)
diff --git a/spring-mvc-kotlin/pom.xml b/spring-mvc-kotlin/pom.xml
index fc76f58727..fb1f242644 100644
--- a/spring-mvc-kotlin/pom.xml
+++ b/spring-mvc-kotlin/pom.xml
@@ -15,12 +15,12 @@
- org.springframework
- spring-web
+ org.springframework.boot
+ spring-boot-starter-web
- org.springframework
- spring-webmvc
+ org.springframework.boot
+ spring-boot-starter-jsonorg.thymeleaf
@@ -46,8 +46,8 @@
test
- org.springframework
- spring-test
+ org.springframework.boot
+ spring-boot-starter-testtest
diff --git a/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/mockmvc/MockMvcController.kt b/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/mockmvc/MockMvcController.kt
new file mode 100644
index 0000000000..68ab5f31a6
--- /dev/null
+++ b/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/mockmvc/MockMvcController.kt
@@ -0,0 +1,26 @@
+package com.baeldung.kotlin.mockmvc
+
+import org.springframework.http.MediaType
+import org.springframework.web.bind.annotation.RequestBody
+import org.springframework.web.bind.annotation.RequestMapping
+import org.springframework.web.bind.annotation.RequestMethod
+import org.springframework.web.bind.annotation.RestController
+
+@RestController
+@RequestMapping("/mockmvc")
+class MockMvcController {
+
+ @RequestMapping(value = ["/validate"], method = [RequestMethod.POST], produces = [MediaType.APPLICATION_JSON_VALUE])
+ fun validate(@RequestBody request: Request): Response {
+ val error = if (request.name.first == "admin") {
+ null
+ } else {
+ ERROR
+ }
+ return Response(error)
+ }
+
+ companion object {
+ const val ERROR = "invalid user"
+ }
+}
\ No newline at end of file
diff --git a/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/mockmvc/MockMvcModel.kt b/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/mockmvc/MockMvcModel.kt
new file mode 100644
index 0000000000..3231b6f186
--- /dev/null
+++ b/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/mockmvc/MockMvcModel.kt
@@ -0,0 +1,10 @@
+package com.baeldung.kotlin.mockmvc
+
+import com.fasterxml.jackson.annotation.JsonInclude
+
+data class Name(val first: String, val last: String)
+
+data class Request(val name: Name)
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+data class Response(val error: String?)
\ No newline at end of file
diff --git a/spring-mvc-kotlin/src/test/kotlin/com/baeldung/kotlin/mockmvc/MockMvcControllerTest.kt b/spring-mvc-kotlin/src/test/kotlin/com/baeldung/kotlin/mockmvc/MockMvcControllerTest.kt
new file mode 100644
index 0000000000..802cd4c1e7
--- /dev/null
+++ b/spring-mvc-kotlin/src/test/kotlin/com/baeldung/kotlin/mockmvc/MockMvcControllerTest.kt
@@ -0,0 +1,61 @@
+package com.baeldung.kotlin.mockmvc
+
+import com.fasterxml.jackson.databind.ObjectMapper
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.autoconfigure.SpringBootApplication
+import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
+import org.springframework.http.MediaType
+import org.springframework.http.ResponseEntity.status
+import org.springframework.test.context.junit4.SpringRunner
+import org.springframework.test.web.servlet.MockMvc
+import org.springframework.test.web.servlet.post
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders
+import org.springframework.test.web.servlet.result.MockMvcResultHandlers
+import org.springframework.test.web.servlet.result.MockMvcResultMatchers
+
+@RunWith(SpringRunner::class)
+@WebMvcTest
+class MockMvcControllerTest {
+
+ @Autowired lateinit var mockMvc: MockMvc
+ @Autowired lateinit var mapper: ObjectMapper
+
+ @Test
+ fun `when supported user is given then raw MockMvc-based validation is successful`() {
+ mockMvc.perform(MockMvcRequestBuilders
+ .post("/mockmvc/validate")
+ .accept(MediaType.APPLICATION_JSON)
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(mapper.writeValueAsString(Request(Name("admin", "")))))
+ .andExpect(MockMvcResultMatchers.status().isOk)
+ .andExpect(MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON))
+ .andExpect(MockMvcResultMatchers.content().string("{}"))
+ }
+
+ @Test
+ fun `when supported user is given then kotlin DSL-based validation is successful`() {
+ doTest(Request(Name("admin", "")), Response(null))
+ }
+
+ @Test
+ fun `when unsupported user is given then validation is failed`() {
+ doTest(Request(Name("some-name", "some-surname")), Response(MockMvcController.ERROR))
+ }
+
+ private fun doTest(input: Request, expectation: Response) {
+ mockMvc.post("/mockmvc/validate") {
+ contentType = MediaType.APPLICATION_JSON
+ content = mapper.writeValueAsString(input)
+ accept = MediaType.APPLICATION_JSON
+ }.andExpect {
+ status { isOk }
+ content { contentType(MediaType.APPLICATION_JSON) }
+ content { json(mapper.writeValueAsString(expectation)) }
+ }
+ }
+}
+
+@SpringBootApplication
+class MockMvcApplication
\ No newline at end of file
diff --git a/spring-mvc-simple/pom.xml b/spring-mvc-simple/pom.xml
index a767cf3c37..580a40e50b 100644
--- a/spring-mvc-simple/pom.xml
+++ b/spring-mvc-simple/pom.xml
@@ -47,7 +47,7 @@
commons-fileuploadcommons-fileupload
- ${fileupload.version}
+ ${commons-fileupload.version}org.springframework
@@ -162,18 +162,16 @@
1.81.8
- 3.2.02.21.02.3.2-b024.0.06.0.10.Finalenter-location-of-server
- 1.3.2
+ 1.3.23.0.7.RELEASE2.4.122.3.27-incubating1.2.5
- 1.0.21.9.01.4.95.1.0
diff --git a/spring-mvc-simple/src/test/java/com/baeldung/SpringContextTest.java b/spring-mvc-simple/src/test/java/com/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..ab0b23c4a5
--- /dev/null
+++ b/spring-mvc-simple/src/test/java/com/baeldung/SpringContextTest.java
@@ -0,0 +1,21 @@
+package com.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+import com.baeldung.spring.configuration.ApplicationConfiguration;
+
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes={ApplicationConfiguration.class})
+@WebAppConfiguration
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
+
diff --git a/spring-mvc-velocity/pom.xml b/spring-mvc-velocity/pom.xml
index df19b67e8e..5954e48e8f 100644
--- a/spring-mvc-velocity/pom.xml
+++ b/spring-mvc-velocity/pom.xml
@@ -115,7 +115,6 @@
2.9.0
- 2.62.71.6.1
diff --git a/spring-mvc-velocity/src/test/java/org/baeldung/SpringContextTest.java b/spring-mvc-velocity/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..22a4486aa7
--- /dev/null
+++ b/spring-mvc-velocity/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,20 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+import com.baeldung.mvc.velocity.spring.config.WebConfig;
+import com.baeldung.mvc.velocity.test.config.TestConfig;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { TestConfig.class, WebConfig.class })
+@WebAppConfiguration
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-mvc-webflow/pom.xml b/spring-mvc-webflow/pom.xml
index c8de990da0..219a2be689 100644
--- a/spring-mvc-webflow/pom.xml
+++ b/spring-mvc-webflow/pom.xml
@@ -94,7 +94,6 @@
4.5.2
- 2.62.71.6.1
diff --git a/spring-mvc-webflow/src/test/java/org/baeldung/SpringContextTest.java b/spring-mvc-webflow/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..122dc18bad
--- /dev/null
+++ b/spring-mvc-webflow/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,19 @@
+package org.baeldung;
+
+import org.baeldung.spring.WebFlowConfig;
+import org.baeldung.spring.WebMvcConfig;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = {WebFlowConfig.class, WebMvcConfig.class})
+@WebAppConfiguration
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-mvc-xml/pom.xml b/spring-mvc-xml/pom.xml
index 46af321d1b..9f7a24b358 100644
--- a/spring-mvc-xml/pom.xml
+++ b/spring-mvc-xml/pom.xml
@@ -33,7 +33,7 @@
javax.servletjavax.servlet-api
- ${javax.servlet.version}
+ ${javax.servlet-api.version}provided
@@ -82,7 +82,7 @@
org.glassfishjavax.el
- 3.0.1-b08
+ ${javax.el.version}
@@ -129,18 +129,13 @@
6.0.10.Final
- 1.2
- 3.1.0
- 2.9.6
+ 3.0.1-b0819.0
- 3.5
- 2.52.8.0
- 2.61.6.1
diff --git a/spring-mvc-xml/src/test/java/org/baeldung/SpringContextTest.java b/spring-mvc-xml/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..27dcb83bd4
--- /dev/null
+++ b/spring-mvc-xml/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,19 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+import com.baeldung.spring.ClientWebConfig;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = ClientWebConfig.class)
+@WebAppConfiguration
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-protobuf/src/test/java/org/baeldung/SpringContextTest.java b/spring-protobuf/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..4f655277b7
--- /dev/null
+++ b/spring-protobuf/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,19 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.protobuf.Application;
+
+@DirtiesContext
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-quartz/pom.xml b/spring-quartz/pom.xml
index 58e72c1d51..4c7ac6eee9 100644
--- a/spring-quartz/pom.xml
+++ b/spring-quartz/pom.xml
@@ -32,6 +32,16 @@
quartz${quartz.version}
+
+ com.mchange
+ c3p0
+ ${c3p0.version}
+
+
+
+ com.h2database
+ h2
+
@@ -44,7 +54,8 @@
- 2.2.3
+ 2.3.0
+ 0.9.5.2
\ No newline at end of file
diff --git a/spring-quartz/src/main/java/org/baeldung/springquartz/basics/scheduler/QrtzScheduler.java b/spring-quartz/src/main/java/org/baeldung/springquartz/basics/scheduler/QrtzScheduler.java
index 6601df6c94..ccf9fca8c1 100644
--- a/spring-quartz/src/main/java/org/baeldung/springquartz/basics/scheduler/QrtzScheduler.java
+++ b/spring-quartz/src/main/java/org/baeldung/springquartz/basics/scheduler/QrtzScheduler.java
@@ -10,17 +10,20 @@ import javax.annotation.PostConstruct;
import org.baeldung.springquartz.config.AutoWiringSpringBeanJobFactory;
import org.quartz.*;
-import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
+import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.scheduling.quartz.SpringBeanJobFactory;
+import java.util.Properties;
+
@Configuration
@ConditionalOnExpression("'${using.spring.schedulerFactory}'=='false'")
public class QrtzScheduler {
@@ -45,14 +48,9 @@ public class QrtzScheduler {
}
@Bean
- public Scheduler scheduler(Trigger trigger, JobDetail job) throws SchedulerException, IOException {
-
- StdSchedulerFactory factory = new StdSchedulerFactory();
- factory.initialize(new ClassPathResource("quartz.properties").getInputStream());
-
+ public Scheduler scheduler(Trigger trigger, JobDetail job, SchedulerFactoryBean factory) throws SchedulerException {
logger.debug("Getting a handle to the Scheduler");
Scheduler scheduler = factory.getScheduler();
- scheduler.setJobFactory(springBeanJobFactory());
scheduler.scheduleJob(job, trigger);
logger.debug("Starting Scheduler threads");
@@ -60,6 +58,21 @@ public class QrtzScheduler {
return scheduler;
}
+ @Bean
+ public SchedulerFactoryBean schedulerFactoryBean() throws IOException {
+ SchedulerFactoryBean factory = new SchedulerFactoryBean();
+ factory.setJobFactory(springBeanJobFactory());
+ factory.setQuartzProperties(quartzProperties());
+ return factory;
+ }
+
+ public Properties quartzProperties() throws IOException {
+ PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
+ propertiesFactoryBean.setLocation(new ClassPathResource("/quartz.properties"));
+ propertiesFactoryBean.afterPropertiesSet();
+ return propertiesFactoryBean.getObject();
+ }
+
@Bean
public JobDetail jobDetail() {
diff --git a/spring-quartz/src/main/java/org/baeldung/springquartz/basics/scheduler/SpringQrtzScheduler.java b/spring-quartz/src/main/java/org/baeldung/springquartz/basics/scheduler/SpringQrtzScheduler.java
index 9978f61522..f824765efe 100644
--- a/spring-quartz/src/main/java/org/baeldung/springquartz/basics/scheduler/SpringQrtzScheduler.java
+++ b/spring-quartz/src/main/java/org/baeldung/springquartz/basics/scheduler/SpringQrtzScheduler.java
@@ -1,6 +1,7 @@
package org.baeldung.springquartz.basics.scheduler;
import javax.annotation.PostConstruct;
+import javax.sql.DataSource;
import org.baeldung.springquartz.config.AutoWiringSpringBeanJobFactory;
import org.quartz.JobDetail;
@@ -9,7 +10,11 @@ import org.quartz.Trigger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
+import org.springframework.boot.autoconfigure.quartz.QuartzDataSource;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -20,6 +25,7 @@ import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean;
import org.springframework.scheduling.quartz.SpringBeanJobFactory;
@Configuration
+@EnableAutoConfiguration
@ConditionalOnExpression("'${using.spring.schedulerFactory}'=='true'")
public class SpringQrtzScheduler {
@@ -43,7 +49,7 @@ public class SpringQrtzScheduler {
}
@Bean
- public SchedulerFactoryBean scheduler(Trigger trigger, JobDetail job) {
+ public SchedulerFactoryBean scheduler(Trigger trigger, JobDetail job, DataSource quartzDataSource) {
SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean();
schedulerFactory.setConfigLocation(new ClassPathResource("quartz.properties"));
@@ -53,6 +59,9 @@ public class SpringQrtzScheduler {
schedulerFactory.setJobDetails(job);
schedulerFactory.setTriggers(trigger);
+ // Comment the following line to use the default Quartz job store.
+ schedulerFactory.setDataSource(quartzDataSource);
+
return schedulerFactory;
}
@@ -81,4 +90,12 @@ public class SpringQrtzScheduler {
trigger.setName("Qrtz_Trigger");
return trigger;
}
+
+ @Bean
+ @QuartzDataSource
+ @ConfigurationProperties(prefix = "spring.datasource")
+ public DataSource quartzDataSource() {
+ return DataSourceBuilder.create().build();
+ }
+
}
diff --git a/spring-quartz/src/main/java/org/baeldung/springquartz/basics/service/SampleJobService.java b/spring-quartz/src/main/java/org/baeldung/springquartz/basics/service/SampleJobService.java
index ddf4efc2c5..6f66352616 100644
--- a/spring-quartz/src/main/java/org/baeldung/springquartz/basics/service/SampleJobService.java
+++ b/spring-quartz/src/main/java/org/baeldung/springquartz/basics/service/SampleJobService.java
@@ -4,20 +4,31 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
+import java.util.concurrent.atomic.AtomicInteger;
+
@Service
public class SampleJobService {
+ public static final long EXECUTION_TIME = 5000L;
+
private Logger logger = LoggerFactory.getLogger(getClass());
+ private AtomicInteger count = new AtomicInteger();
+
public void executeSampleJob() {
logger.info("The sample job has begun...");
try {
- Thread.sleep(5000);
+ Thread.sleep(EXECUTION_TIME);
} catch (InterruptedException e) {
logger.error("Error while executing sample job", e);
} finally {
+ count.incrementAndGet();
logger.info("Sample job has finished...");
}
}
+
+ public int getNumberOfInvocations() {
+ return count.get();
+ }
}
diff --git a/spring-quartz/src/main/resources/application.properties b/spring-quartz/src/main/resources/application.properties
index 7bdd647e25..557349af2e 100644
--- a/spring-quartz/src/main/resources/application.properties
+++ b/spring-quartz/src/main/resources/application.properties
@@ -1 +1,10 @@
-using.spring.schedulerFactory=true
\ No newline at end of file
+using.spring.schedulerFactory=true
+
+spring.quartz.job-store-type=jdbc
+# Always create the Quartz database on startup
+spring.quartz.jdbc.initialize-schema=always
+
+spring.datasource.jdbc-url=jdbc:h2:mem:spring-quartz;DB_CLOSE_ON_EXIT=FALSE
+spring.datasource.driverClassName=org.h2.Driver
+spring.datasource.username=sa
+spring.datasource.password=
diff --git a/spring-quartz/src/main/resources/quartz.properties b/spring-quartz/src/main/resources/quartz.properties
index cefaaef8e4..662bb83eb0 100644
--- a/spring-quartz/src/main/resources/quartz.properties
+++ b/spring-quartz/src/main/resources/quartz.properties
@@ -4,7 +4,19 @@ org.quartz.threadPool.threadCount=2
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true
# job-store
-org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
+# Enable this property for RAMJobStore
+#org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore
-# others
-org.quartz.jobStore.misfireThreshold = 60000
\ No newline at end of file
+# Enable these properties for a JDBCJobStore using JobStoreTX
+org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
+org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
+org.quartz.jobStore.dataSource=quartzDataSource
+# Enable this property for JobStoreCMT
+#org.quartz.jobStore.nonManagedTXDataSource=quartzDataSource
+
+# H2 database
+# use an in-memory database & initialise Quartz using their standard SQL script
+org.quartz.dataSource.quartzDataSource.URL=jdbc:h2:mem:spring-quartz;INIT=RUNSCRIPT FROM 'classpath:/org/quartz/impl/jdbcjobstore/tables_h2.sql'
+org.quartz.dataSource.quartzDataSource.driver=org.h2.Driver
+org.quartz.dataSource.quartzDataSource.user=sa
+org.quartz.dataSource.quartzDataSource.password=
diff --git a/spring-quartz/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-quartz/src/test/java/org/baeldung/SpringContextIntegrationTest.java
index 516cc587a7..fec47f045c 100644
--- a/spring-quartz/src/test/java/org/baeldung/SpringContextIntegrationTest.java
+++ b/spring-quartz/src/test/java/org/baeldung/SpringContextIntegrationTest.java
@@ -1,16 +1,30 @@
package org.baeldung;
import org.baeldung.springquartz.SpringQuartzApp;
+import org.baeldung.springquartz.basics.service.SampleJobService;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
+import static org.assertj.core.api.Assertions.assertThat;
+
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringQuartzApp.class)
public class SpringContextIntegrationTest {
+ @Autowired
+ private SampleJobService sampleJobService;
+
@Test
public void whenSpringContextIsBootstrapped_thenNoExceptions() {
}
+
+ @Test
+ public void whenSchedulerStarts_thenJobsRun() throws InterruptedException {
+ assertThat(sampleJobService.getNumberOfInvocations()).isEqualTo(0);
+ Thread.sleep(SampleJobService.EXECUTION_TIME);
+ assertThat(sampleJobService.getNumberOfInvocations()).isEqualTo(1);
+ }
}
diff --git a/spring-quartz/src/test/java/org/baeldung/SpringContextTest.java b/spring-quartz/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..a210e847c8
--- /dev/null
+++ b/spring-quartz/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.springquartz.SpringQuartzApp;
+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 = SpringQuartzApp.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-reactor/src/test/java/org/baeldung/SpringContextTest.java b/spring-reactor/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..5e68a8e64f
--- /dev/null
+++ b/spring-reactor/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.Application;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-remoting/remoting-amqp/remoting-amqp-client/src/test/java/org/baeldung/SpringContextTest.java b/spring-remoting/remoting-amqp/remoting-amqp-client/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..fe20382ab4
--- /dev/null
+++ b/spring-remoting/remoting-amqp/remoting-amqp-client/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.client.AmqpClient;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = AmqpClient.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-remoting/remoting-hessian-burlap/remoting-hessian-burlap-client/src/test/java/org/baeldung/SpringContextTest.java b/spring-remoting/remoting-hessian-burlap/remoting-hessian-burlap-client/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..4325b0ddef
--- /dev/null
+++ b/spring-remoting/remoting-hessian-burlap/remoting-hessian-burlap-client/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,18 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.client.BurlapClient;
+import com.baeldung.client.HessianClient;
+
+@SpringBootTest(classes = {BurlapClient.class, HessianClient.class})
+@RunWith(SpringRunner.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-remoting/remoting-hessian-burlap/remoting-hessian-burlap-server/src/test/java/org/baeldung/SpringContextTest.java b/spring-remoting/remoting-hessian-burlap/remoting-hessian-burlap-server/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..e676bb0ff2
--- /dev/null
+++ b/spring-remoting/remoting-hessian-burlap/remoting-hessian-burlap-server/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.server.Server;
+
+@SpringBootTest(classes = Server.class)
+@RunWith(SpringRunner.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-remoting/remoting-http/remoting-http-server/src/test/java/org/baeldung/SpringContextTest.java b/spring-remoting/remoting-http/remoting-http-server/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..e676bb0ff2
--- /dev/null
+++ b/spring-remoting/remoting-http/remoting-http-server/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.server.Server;
+
+@SpringBootTest(classes = Server.class)
+@RunWith(SpringRunner.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-remoting/remoting-jms/remoting-jms-client/src/test/java/org/baeldung/SpringContextTest.java b/spring-remoting/remoting-jms/remoting-jms-client/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..95721b6eaa
--- /dev/null
+++ b/spring-remoting/remoting-jms/remoting-jms-client/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.client.JmsClient;
+
+@SpringBootTest(classes = JmsClient.class)
+@RunWith(SpringRunner.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-remoting/remoting-rmi/remoting-rmi-server/src/test/java/org/baeldung/SpringContextTest.java b/spring-remoting/remoting-rmi/remoting-rmi-server/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..6cae1b66fc
--- /dev/null
+++ b/spring-remoting/remoting-rmi/remoting-rmi-server/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.server.RmiServer;
+
+@SpringBootTest(classes = RmiServer.class)
+@RunWith(SpringRunner.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-rest-angular/pom.xml b/spring-rest-angular/pom.xml
index 5240ae24e7..69becfb4ae 100644
--- a/spring-rest-angular/pom.xml
+++ b/spring-rest-angular/pom.xml
@@ -74,7 +74,6 @@
19.0
- 3.5org.baeldung.web.main.Application
diff --git a/spring-rest-angular/src/test/java/org/baeldung/SpringContextTest.java b/spring-rest-angular/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..9136ce43eb
--- /dev/null
+++ b/spring-rest-angular/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.web.main.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-rest-full/pom.xml b/spring-rest-full/pom.xml
index a85393b7a8..5bc3a70ed5 100644
--- a/spring-rest-full/pom.xml
+++ b/spring-rest-full/pom.xml
@@ -287,7 +287,6 @@
19.0
- 3.53.25.0-GA
diff --git a/spring-rest-full/src/test/java/org/baeldung/SpringContextTest.java b/spring-rest-full/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..8debddc40a
--- /dev/null
+++ b/spring-rest-full/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.spring.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-rest-query-language/pom.xml b/spring-rest-query-language/pom.xml
index 70fea91f31..7ee658d8ba 100644
--- a/spring-rest-query-language/pom.xml
+++ b/spring-rest-query-language/pom.xml
@@ -353,7 +353,6 @@
19.0
- 3.51.7.0
diff --git a/spring-rest-query-language/src/test/java/com/baeldung/SpringContextTest.java b/spring-rest-query-language/src/test/java/com/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..57886a232a
--- /dev/null
+++ b/spring-rest-query-language/src/test/java/com/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package com.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.spring.Application;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-rest-simple/README.md b/spring-rest-simple/README.md
index 882d0ac301..c01f27bd98 100644
--- a/spring-rest-simple/README.md
+++ b/spring-rest-simple/README.md
@@ -5,3 +5,4 @@
- [Spring RequestMapping](http://www.baeldung.com/spring-requestmapping)
- [Spring and Apache FileUpload](http://www.baeldung.com/spring-apache-file-upload)
- [Test a REST API with curl](http://www.baeldung.com/curl-rest)
+- [CORS with Spring](https://www.baeldung.com/spring-cors)
diff --git a/spring-rest-simple/pom.xml b/spring-rest-simple/pom.xml
index d301957eb9..263e451c62 100644
--- a/spring-rest-simple/pom.xml
+++ b/spring-rest-simple/pom.xml
@@ -323,7 +323,6 @@
4.0.01.43.1.0
- 3.51.4.9
diff --git a/spring-rest-simple/src/main/java/org/baeldung/config/Application.java b/spring-rest-simple/src/main/java/com/baeldung/Application.java
similarity index 90%
rename from spring-rest-simple/src/main/java/org/baeldung/config/Application.java
rename to spring-rest-simple/src/main/java/com/baeldung/Application.java
index 5c9a186619..dc6bfcb970 100644
--- a/spring-rest-simple/src/main/java/org/baeldung/config/Application.java
+++ b/spring-rest-simple/src/main/java/com/baeldung/Application.java
@@ -1,4 +1,4 @@
-package org.baeldung.config;
+package com.baeldung;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@@ -7,8 +7,8 @@ import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
import org.springframework.context.annotation.ComponentScan;
@EnableAutoConfiguration
-@ComponentScan("org.baeldung")
@SpringBootApplication
+@ComponentScan("com.baeldung.cors")
public class Application extends SpringBootServletInitializer {
public static void main(final String[] args) {
diff --git a/spring-rest-simple/src/main/java/org/baeldung/config/WebConfig.java b/spring-rest-simple/src/main/java/com/baeldung/config/MvcConfig.java
similarity index 86%
rename from spring-rest-simple/src/main/java/org/baeldung/config/WebConfig.java
rename to spring-rest-simple/src/main/java/com/baeldung/config/MvcConfig.java
index 191b87a8f2..d169f7e9d4 100644
--- a/spring-rest-simple/src/main/java/org/baeldung/config/WebConfig.java
+++ b/spring-rest-simple/src/main/java/com/baeldung/config/MvcConfig.java
@@ -1,6 +1,5 @@
-package org.baeldung.config;
+package com.baeldung.config;
-import org.baeldung.config.converter.KryoHttpMessageConverter;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
@@ -13,9 +12,12 @@ import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConve
import org.springframework.http.converter.xml.MarshallingHttpMessageConverter;
import org.springframework.oxm.xstream.XStreamMarshaller;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import com.baeldung.config.converter.KryoHttpMessageConverter;
+
import java.text.SimpleDateFormat;
import java.util.List;
@@ -24,10 +26,10 @@ import java.util.List;
*/
@Configuration
@EnableWebMvc
-@ComponentScan({ "org.baeldung.web" })
-public class WebConfig implements WebMvcConfigurer {
+@ComponentScan({ "com.baeldung.web" })
+public class MvcConfig implements WebMvcConfigurer {
- public WebConfig() {
+ public MvcConfig() {
super();
}
@@ -64,4 +66,10 @@ public class WebConfig implements WebMvcConfigurer {
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.defaultContentType(MediaType.APPLICATION_JSON);
}
+
+
+ @Override
+ public void addCorsMappings(CorsRegistry registry) {
+ registry.addMapping("/**");
+ }
}
diff --git a/spring-rest-simple/src/main/java/org/baeldung/config/converter/KryoHttpMessageConverter.java b/spring-rest-simple/src/main/java/com/baeldung/config/converter/KryoHttpMessageConverter.java
similarity index 95%
rename from spring-rest-simple/src/main/java/org/baeldung/config/converter/KryoHttpMessageConverter.java
rename to spring-rest-simple/src/main/java/com/baeldung/config/converter/KryoHttpMessageConverter.java
index 6af54c379a..7ab8282350 100644
--- a/spring-rest-simple/src/main/java/org/baeldung/config/converter/KryoHttpMessageConverter.java
+++ b/spring-rest-simple/src/main/java/com/baeldung/config/converter/KryoHttpMessageConverter.java
@@ -1,13 +1,13 @@
-package org.baeldung.config.converter;
+package com.baeldung.config.converter;
import java.io.IOException;
-import org.baeldung.web.dto.Foo;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.converter.AbstractHttpMessageConverter;
+import com.baeldung.web.dto.Foo;
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
diff --git a/spring-rest-simple/src/main/java/com/baeldung/cors/Account.java b/spring-rest-simple/src/main/java/com/baeldung/cors/Account.java
new file mode 100644
index 0000000000..429b0c102e
--- /dev/null
+++ b/spring-rest-simple/src/main/java/com/baeldung/cors/Account.java
@@ -0,0 +1,18 @@
+package com.baeldung.cors;
+
+public class Account {
+ private Long id;
+
+ public Account(Long id) {
+ this.id = id;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+}
diff --git a/spring-rest-simple/src/main/java/com/baeldung/cors/AccountController.java b/spring-rest-simple/src/main/java/com/baeldung/cors/AccountController.java
new file mode 100644
index 0000000000..c387eb2121
--- /dev/null
+++ b/spring-rest-simple/src/main/java/com/baeldung/cors/AccountController.java
@@ -0,0 +1,24 @@
+package com.baeldung.cors;
+
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+@CrossOrigin(maxAge = 3600)
+@RestController
+@RequestMapping("/account")
+public class AccountController {
+
+ @CrossOrigin("http://example.com")
+ @RequestMapping("/{id}")
+ public Account retrieve(@PathVariable Long id) {
+ return new Account(id);
+ }
+
+ @RequestMapping(method = RequestMethod.DELETE, path = "/{id}")
+ public void remove(@PathVariable Long id) {
+ // ...
+ }
+}
\ No newline at end of file
diff --git a/spring-rest-simple/src/main/java/org/baeldung/web/controller/BarMappingExamplesController.java b/spring-rest-simple/src/main/java/com/baeldung/web/controller/BarMappingExamplesController.java
similarity index 97%
rename from spring-rest-simple/src/main/java/org/baeldung/web/controller/BarMappingExamplesController.java
rename to spring-rest-simple/src/main/java/com/baeldung/web/controller/BarMappingExamplesController.java
index 1c3a1086ca..3611a4e6cc 100644
--- a/spring-rest-simple/src/main/java/org/baeldung/web/controller/BarMappingExamplesController.java
+++ b/spring-rest-simple/src/main/java/com/baeldung/web/controller/BarMappingExamplesController.java
@@ -1,4 +1,4 @@
-package org.baeldung.web.controller;
+package com.baeldung.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
diff --git a/spring-rest-simple/src/main/java/org/baeldung/web/controller/BazzNewMappingsExampleController.java b/spring-rest-simple/src/main/java/com/baeldung/web/controller/BazzNewMappingsExampleController.java
similarity index 96%
rename from spring-rest-simple/src/main/java/org/baeldung/web/controller/BazzNewMappingsExampleController.java
rename to spring-rest-simple/src/main/java/com/baeldung/web/controller/BazzNewMappingsExampleController.java
index 4bcafc04fc..6c7da0296f 100644
--- a/spring-rest-simple/src/main/java/org/baeldung/web/controller/BazzNewMappingsExampleController.java
+++ b/spring-rest-simple/src/main/java/com/baeldung/web/controller/BazzNewMappingsExampleController.java
@@ -1,9 +1,8 @@
-package org.baeldung.web.controller;
+package com.baeldung.web.controller;
import java.util.Arrays;
import java.util.List;
-import org.baeldung.web.dto.Bazz;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
@@ -15,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
+import com.baeldung.web.dto.Bazz;
import com.fasterxml.jackson.core.JsonProcessingException;
@RestController
diff --git a/spring-rest-simple/src/main/java/org/baeldung/web/controller/FooController.java b/spring-rest-simple/src/main/java/com/baeldung/web/controller/FooController.java
similarity index 96%
rename from spring-rest-simple/src/main/java/org/baeldung/web/controller/FooController.java
rename to spring-rest-simple/src/main/java/com/baeldung/web/controller/FooController.java
index c68d586667..bab315c027 100644
--- a/spring-rest-simple/src/main/java/org/baeldung/web/controller/FooController.java
+++ b/spring-rest-simple/src/main/java/com/baeldung/web/controller/FooController.java
@@ -1,11 +1,9 @@
-package org.baeldung.web.controller;
+package com.baeldung.web.controller;
import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
import java.util.List;
-import org.baeldung.web.dto.Foo;
-import org.baeldung.web.dto.FooProtos;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
@@ -16,6 +14,8 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
+import com.baeldung.web.dto.Foo;
+import com.baeldung.web.dto.FooProtos;
import com.google.common.collect.Lists;
@Controller
diff --git a/spring-rest-simple/src/main/java/org/baeldung/web/controller/FooMappingExamplesController.java b/spring-rest-simple/src/main/java/com/baeldung/web/controller/FooMappingExamplesController.java
similarity index 98%
rename from spring-rest-simple/src/main/java/org/baeldung/web/controller/FooMappingExamplesController.java
rename to spring-rest-simple/src/main/java/com/baeldung/web/controller/FooMappingExamplesController.java
index 5fb92d6d87..ec75e4c859 100644
--- a/spring-rest-simple/src/main/java/org/baeldung/web/controller/FooMappingExamplesController.java
+++ b/spring-rest-simple/src/main/java/com/baeldung/web/controller/FooMappingExamplesController.java
@@ -1,4 +1,4 @@
-package org.baeldung.web.controller;
+package com.baeldung.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
diff --git a/spring-rest-simple/src/main/java/org/baeldung/web/controller/status/ExampleController.java b/spring-rest-simple/src/main/java/com/baeldung/web/controller/status/ExampleController.java
similarity index 94%
rename from spring-rest-simple/src/main/java/org/baeldung/web/controller/status/ExampleController.java
rename to spring-rest-simple/src/main/java/com/baeldung/web/controller/status/ExampleController.java
index ceda138768..0cc657f0f2 100644
--- a/spring-rest-simple/src/main/java/org/baeldung/web/controller/status/ExampleController.java
+++ b/spring-rest-simple/src/main/java/com/baeldung/web/controller/status/ExampleController.java
@@ -1,4 +1,4 @@
-package org.baeldung.web.controller.status;
+package com.baeldung.web.controller.status;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
diff --git a/spring-rest-simple/src/main/java/org/baeldung/web/controller/status/ForbiddenException.java b/spring-rest-simple/src/main/java/com/baeldung/web/controller/status/ForbiddenException.java
similarity index 88%
rename from spring-rest-simple/src/main/java/org/baeldung/web/controller/status/ForbiddenException.java
rename to spring-rest-simple/src/main/java/com/baeldung/web/controller/status/ForbiddenException.java
index 458bdaf170..301a25d070 100644
--- a/spring-rest-simple/src/main/java/org/baeldung/web/controller/status/ForbiddenException.java
+++ b/spring-rest-simple/src/main/java/com/baeldung/web/controller/status/ForbiddenException.java
@@ -1,4 +1,4 @@
-package org.baeldung.web.controller.status;
+package com.baeldung.web.controller.status;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
diff --git a/spring-rest-simple/src/main/java/org/baeldung/web/dto/Bazz.java b/spring-rest-simple/src/main/java/com/baeldung/web/dto/Bazz.java
similarity index 91%
rename from spring-rest-simple/src/main/java/org/baeldung/web/dto/Bazz.java
rename to spring-rest-simple/src/main/java/com/baeldung/web/dto/Bazz.java
index d9a495b726..861b4009b5 100644
--- a/spring-rest-simple/src/main/java/org/baeldung/web/dto/Bazz.java
+++ b/spring-rest-simple/src/main/java/com/baeldung/web/dto/Bazz.java
@@ -1,4 +1,4 @@
-package org.baeldung.web.dto;
+package com.baeldung.web.dto;
public class Bazz {
diff --git a/spring-rest-simple/src/main/java/org/baeldung/web/dto/Foo.java b/spring-rest-simple/src/main/java/com/baeldung/web/dto/Foo.java
similarity index 95%
rename from spring-rest-simple/src/main/java/org/baeldung/web/dto/Foo.java
rename to spring-rest-simple/src/main/java/com/baeldung/web/dto/Foo.java
index 240b368b50..5a54539927 100644
--- a/spring-rest-simple/src/main/java/org/baeldung/web/dto/Foo.java
+++ b/spring-rest-simple/src/main/java/com/baeldung/web/dto/Foo.java
@@ -1,4 +1,4 @@
-package org.baeldung.web.dto;
+package com.baeldung.web.dto;
import com.thoughtworks.xstream.annotations.XStreamAlias;
diff --git a/spring-rest-simple/src/main/java/org/baeldung/web/dto/FooProtos.java b/spring-rest-simple/src/main/java/com/baeldung/web/dto/FooProtos.java
similarity index 90%
rename from spring-rest-simple/src/main/java/org/baeldung/web/dto/FooProtos.java
rename to spring-rest-simple/src/main/java/com/baeldung/web/dto/FooProtos.java
index 8ca96c38fc..db7cb66f87 100644
--- a/spring-rest-simple/src/main/java/org/baeldung/web/dto/FooProtos.java
+++ b/spring-rest-simple/src/main/java/com/baeldung/web/dto/FooProtos.java
@@ -1,7 +1,7 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: FooProtos.proto
-package org.baeldung.web.dto;
+package com.baeldung.web.dto;
public final class FooProtos {
private FooProtos() {
@@ -115,11 +115,11 @@ public final class FooProtos {
}
public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
- return org.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_descriptor;
+ return com.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() {
- return org.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_fieldAccessorTable.ensureFieldAccessorsInitialized(org.baeldung.web.dto.FooProtos.Foo.class, org.baeldung.web.dto.FooProtos.Foo.Builder.class);
+ return com.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_fieldAccessorTable.ensureFieldAccessorsInitialized(com.baeldung.web.dto.FooProtos.Foo.class, com.baeldung.web.dto.FooProtos.Foo.Builder.class);
}
public static com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() {
@@ -255,43 +255,43 @@ public final class FooProtos {
return super.writeReplace();
}
- public static org.baeldung.web.dto.FooProtos.Foo parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+ public static com.baeldung.web.dto.FooProtos.Foo parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
- public static org.baeldung.web.dto.FooProtos.Foo parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+ public static com.baeldung.web.dto.FooProtos.Foo parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
- public static org.baeldung.web.dto.FooProtos.Foo parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+ public static com.baeldung.web.dto.FooProtos.Foo parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
- public static org.baeldung.web.dto.FooProtos.Foo parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+ public static com.baeldung.web.dto.FooProtos.Foo parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
- public static org.baeldung.web.dto.FooProtos.Foo parseFrom(java.io.InputStream input) throws java.io.IOException {
+ public static com.baeldung.web.dto.FooProtos.Foo parseFrom(java.io.InputStream input) throws java.io.IOException {
return PARSER.parseFrom(input);
}
- public static org.baeldung.web.dto.FooProtos.Foo parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+ public static com.baeldung.web.dto.FooProtos.Foo parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
return PARSER.parseFrom(input, extensionRegistry);
}
- public static org.baeldung.web.dto.FooProtos.Foo parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+ public static com.baeldung.web.dto.FooProtos.Foo parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
return PARSER.parseDelimitedFrom(input);
}
- public static org.baeldung.web.dto.FooProtos.Foo parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+ public static com.baeldung.web.dto.FooProtos.Foo parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
return PARSER.parseDelimitedFrom(input, extensionRegistry);
}
- public static org.baeldung.web.dto.FooProtos.Foo parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+ public static com.baeldung.web.dto.FooProtos.Foo parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
return PARSER.parseFrom(input);
}
- public static org.baeldung.web.dto.FooProtos.Foo parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+ public static com.baeldung.web.dto.FooProtos.Foo parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
return PARSER.parseFrom(input, extensionRegistry);
}
@@ -303,7 +303,7 @@ public final class FooProtos {
return newBuilder();
}
- public static Builder newBuilder(org.baeldung.web.dto.FooProtos.Foo prototype) {
+ public static Builder newBuilder(com.baeldung.web.dto.FooProtos.Foo prototype) {
return newBuilder().mergeFrom(prototype);
}
@@ -322,13 +322,13 @@ public final class FooProtos {
*/
public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements
// @@protoc_insertion_point(builder_implements:baeldung.Foo)
- org.baeldung.web.dto.FooProtos.FooOrBuilder {
+ com.baeldung.web.dto.FooProtos.FooOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
- return org.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_descriptor;
+ return com.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() {
- return org.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_fieldAccessorTable.ensureFieldAccessorsInitialized(org.baeldung.web.dto.FooProtos.Foo.class, org.baeldung.web.dto.FooProtos.Foo.Builder.class);
+ return com.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_fieldAccessorTable.ensureFieldAccessorsInitialized(com.baeldung.web.dto.FooProtos.Foo.class, com.baeldung.web.dto.FooProtos.Foo.Builder.class);
}
// Construct using org.baeldung.web.dto.FooProtos.Foo.newBuilder()
@@ -364,23 +364,23 @@ public final class FooProtos {
}
public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
- return org.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_descriptor;
+ return com.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_descriptor;
}
- public org.baeldung.web.dto.FooProtos.Foo getDefaultInstanceForType() {
- return org.baeldung.web.dto.FooProtos.Foo.getDefaultInstance();
+ public com.baeldung.web.dto.FooProtos.Foo getDefaultInstanceForType() {
+ return com.baeldung.web.dto.FooProtos.Foo.getDefaultInstance();
}
- public org.baeldung.web.dto.FooProtos.Foo build() {
- org.baeldung.web.dto.FooProtos.Foo result = buildPartial();
+ public com.baeldung.web.dto.FooProtos.Foo build() {
+ com.baeldung.web.dto.FooProtos.Foo result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
- public org.baeldung.web.dto.FooProtos.Foo buildPartial() {
- org.baeldung.web.dto.FooProtos.Foo result = new org.baeldung.web.dto.FooProtos.Foo(this);
+ public com.baeldung.web.dto.FooProtos.Foo buildPartial() {
+ com.baeldung.web.dto.FooProtos.Foo result = new com.baeldung.web.dto.FooProtos.Foo(this);
int from_bitField0_ = bitField0_;
int to_bitField0_ = 0;
if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
@@ -397,16 +397,16 @@ public final class FooProtos {
}
public Builder mergeFrom(com.google.protobuf.Message other) {
- if (other instanceof org.baeldung.web.dto.FooProtos.Foo) {
- return mergeFrom((org.baeldung.web.dto.FooProtos.Foo) other);
+ if (other instanceof com.baeldung.web.dto.FooProtos.Foo) {
+ return mergeFrom((com.baeldung.web.dto.FooProtos.Foo) other);
} else {
super.mergeFrom(other);
return this;
}
}
- public Builder mergeFrom(org.baeldung.web.dto.FooProtos.Foo other) {
- if (other == org.baeldung.web.dto.FooProtos.Foo.getDefaultInstance())
+ public Builder mergeFrom(com.baeldung.web.dto.FooProtos.Foo other) {
+ if (other == com.baeldung.web.dto.FooProtos.Foo.getDefaultInstance())
return this;
if (other.hasId()) {
setId(other.getId());
@@ -433,11 +433,11 @@ public final class FooProtos {
}
public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
- org.baeldung.web.dto.FooProtos.Foo parsedMessage = null;
+ com.baeldung.web.dto.FooProtos.Foo parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
- parsedMessage = (org.baeldung.web.dto.FooProtos.Foo) e.getUnfinishedMessage();
+ parsedMessage = (com.baeldung.web.dto.FooProtos.Foo) e.getUnfinishedMessage();
throw e;
} finally {
if (parsedMessage != null) {
diff --git a/spring-rest-simple/src/main/java/org/baeldung/web/util/LinkUtil.java b/spring-rest-simple/src/main/java/com/baeldung/web/util/LinkUtil.java
similarity index 96%
rename from spring-rest-simple/src/main/java/org/baeldung/web/util/LinkUtil.java
rename to spring-rest-simple/src/main/java/com/baeldung/web/util/LinkUtil.java
index b2137aeeff..3ebba8ae1c 100644
--- a/spring-rest-simple/src/main/java/org/baeldung/web/util/LinkUtil.java
+++ b/spring-rest-simple/src/main/java/com/baeldung/web/util/LinkUtil.java
@@ -1,4 +1,4 @@
-package org.baeldung.web.util;
+package com.baeldung.web.util;
import javax.servlet.http.HttpServletResponse;
diff --git a/spring-rest-simple/src/main/webapp/WEB-INF/spring-web-config.xml b/spring-rest-simple/src/main/webapp/WEB-INF/spring-web-config.xml
new file mode 100644
index 0000000000..e83e13be71
--- /dev/null
+++ b/spring-rest-simple/src/main/webapp/WEB-INF/spring-web-config.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-rest-simple/src/test/java/com/baeldung/SpringContextIntegrationTest.java b/spring-rest-simple/src/test/java/com/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..b66e642b80
--- /dev/null
+++ b/spring-rest-simple/src/test/java/com/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,15 @@
+package com.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-rest-simple/src/test/java/org/baeldung/web/controller/mediatypes/TestConfig.java b/spring-rest-simple/src/test/java/com/baeldung/web/controller/mediatypes/TestConfig.java
similarity index 66%
rename from spring-rest-simple/src/test/java/org/baeldung/web/controller/mediatypes/TestConfig.java
rename to spring-rest-simple/src/test/java/com/baeldung/web/controller/mediatypes/TestConfig.java
index 66ffe4947d..4bbfa2818e 100644
--- a/spring-rest-simple/src/test/java/org/baeldung/web/controller/mediatypes/TestConfig.java
+++ b/spring-rest-simple/src/test/java/com/baeldung/web/controller/mediatypes/TestConfig.java
@@ -1,11 +1,11 @@
-package org.baeldung.web.controller.mediatypes;
+package com.baeldung.web.controller.mediatypes;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
-@ComponentScan({ "org.baeldung.web" })
+@ComponentScan({ "com.baeldung.web" })
public class TestConfig {
}
diff --git a/spring-rest-simple/src/test/java/org/baeldung/web/controller/status/ExampleControllerIntegrationTest.java b/spring-rest-simple/src/test/java/com/baeldung/web/controller/status/ExampleControllerIntegrationTest.java
similarity index 92%
rename from spring-rest-simple/src/test/java/org/baeldung/web/controller/status/ExampleControllerIntegrationTest.java
rename to spring-rest-simple/src/test/java/com/baeldung/web/controller/status/ExampleControllerIntegrationTest.java
index 7f78146b84..d1ae7f65c6 100644
--- a/spring-rest-simple/src/test/java/org/baeldung/web/controller/status/ExampleControllerIntegrationTest.java
+++ b/spring-rest-simple/src/test/java/com/baeldung/web/controller/status/ExampleControllerIntegrationTest.java
@@ -1,9 +1,7 @@
-package org.baeldung.web.controller.status;
+package com.baeldung.web.controller.status;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
-
-import org.baeldung.config.WebConfig;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -16,8 +14,10 @@ import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
+import com.baeldung.config.MvcConfig;
+
@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = WebConfig.class)
+@ContextConfiguration(classes = MvcConfig.class)
@WebAppConfiguration
@AutoConfigureWebClient
public class ExampleControllerIntegrationTest {
diff --git a/spring-rest-simple/src/test/java/org/baeldung/web/test/BazzNewMappingsExampleIntegrationTest.java b/spring-rest-simple/src/test/java/com/baeldung/web/test/BazzNewMappingsExampleIntegrationTest.java
similarity index 96%
rename from spring-rest-simple/src/test/java/org/baeldung/web/test/BazzNewMappingsExampleIntegrationTest.java
rename to spring-rest-simple/src/test/java/com/baeldung/web/test/BazzNewMappingsExampleIntegrationTest.java
index dfb3ff7a38..4f0395e914 100644
--- a/spring-rest-simple/src/test/java/org/baeldung/web/test/BazzNewMappingsExampleIntegrationTest.java
+++ b/spring-rest-simple/src/test/java/com/baeldung/web/test/BazzNewMappingsExampleIntegrationTest.java
@@ -1,5 +1,5 @@
-package org.baeldung.web.test;
+package com.baeldung.web.test;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
@@ -9,8 +9,6 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
-
-import org.baeldung.config.WebConfig;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -23,9 +21,11 @@ import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
+import com.baeldung.config.MvcConfig;
+
@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = WebConfig.class)
+@ContextConfiguration(classes = MvcConfig.class)
@WebAppConfiguration
@AutoConfigureWebClient
public class BazzNewMappingsExampleIntegrationTest {
diff --git a/spring-rest-simple/src/test/java/org/baeldung/web/test/RequestMappingLiveTest.java b/spring-rest-simple/src/test/java/com/baeldung/web/test/RequestMappingLiveTest.java
similarity index 99%
rename from spring-rest-simple/src/test/java/org/baeldung/web/test/RequestMappingLiveTest.java
rename to spring-rest-simple/src/test/java/com/baeldung/web/test/RequestMappingLiveTest.java
index 9dd6b13f18..f26f241beb 100644
--- a/spring-rest-simple/src/test/java/org/baeldung/web/test/RequestMappingLiveTest.java
+++ b/spring-rest-simple/src/test/java/com/baeldung/web/test/RequestMappingLiveTest.java
@@ -1,4 +1,4 @@
-package org.baeldung.web.test;
+package com.baeldung.web.test;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.equalTo;
diff --git a/spring-rest-simple/src/test/java/org/baeldung/web/test/RestTemplateBasicLiveTest.java b/spring-rest-simple/src/test/java/com/baeldung/web/test/RestTemplateBasicLiveTest.java
similarity index 99%
rename from spring-rest-simple/src/test/java/org/baeldung/web/test/RestTemplateBasicLiveTest.java
rename to spring-rest-simple/src/test/java/com/baeldung/web/test/RestTemplateBasicLiveTest.java
index e213d0255f..51e3fb097e 100644
--- a/spring-rest-simple/src/test/java/org/baeldung/web/test/RestTemplateBasicLiveTest.java
+++ b/spring-rest-simple/src/test/java/com/baeldung/web/test/RestTemplateBasicLiveTest.java
@@ -1,4 +1,4 @@
-package org.baeldung.web.test;
+package com.baeldung.web.test;
import static org.apache.commons.codec.binary.Base64.encodeBase64;
import static org.hamcrest.CoreMatchers.equalTo;
@@ -13,7 +13,6 @@ import java.net.URI;
import java.util.Arrays;
import java.util.Set;
-import org.baeldung.web.dto.Foo;
import org.junit.Before;
import org.junit.Test;
import org.springframework.http.HttpEntity;
@@ -31,6 +30,7 @@ import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RequestCallback;
import org.springframework.web.client.RestTemplate;
+import com.baeldung.web.dto.Foo;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
diff --git a/spring-rest-simple/src/test/java/org/baeldung/web/test/SpringHttpMessageConvertersLiveTest.java b/spring-rest-simple/src/test/java/com/baeldung/web/test/SpringHttpMessageConvertersLiveTest.java
similarity index 96%
rename from spring-rest-simple/src/test/java/org/baeldung/web/test/SpringHttpMessageConvertersLiveTest.java
rename to spring-rest-simple/src/test/java/com/baeldung/web/test/SpringHttpMessageConvertersLiveTest.java
index 7f250653ab..c6929da818 100644
--- a/spring-rest-simple/src/test/java/org/baeldung/web/test/SpringHttpMessageConvertersLiveTest.java
+++ b/spring-rest-simple/src/test/java/com/baeldung/web/test/SpringHttpMessageConvertersLiveTest.java
@@ -1,13 +1,10 @@
-package org.baeldung.web.test;
+package com.baeldung.web.test;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertThat;
import java.util.Arrays;
-import org.baeldung.config.converter.KryoHttpMessageConverter;
-import org.baeldung.web.dto.Foo;
-import org.baeldung.web.dto.FooProtos;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.http.HttpEntity;
@@ -18,6 +15,10 @@ import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter;
import org.springframework.web.client.RestTemplate;
+import com.baeldung.config.converter.KryoHttpMessageConverter;
+import com.baeldung.web.dto.Foo;
+import com.baeldung.web.dto.FooProtos;
+
/**
* Integration Test class. Tests methods hits the server's rest services.
*/
diff --git a/spring-rest-simple/src/test/java/org/baeldung/web/test/TestRestTemplateBasicLiveTest.java b/spring-rest-simple/src/test/java/com/baeldung/web/test/TestRestTemplateBasicLiveTest.java
similarity index 99%
rename from spring-rest-simple/src/test/java/org/baeldung/web/test/TestRestTemplateBasicLiveTest.java
rename to spring-rest-simple/src/test/java/com/baeldung/web/test/TestRestTemplateBasicLiveTest.java
index b920ed38da..49ac651da2 100644
--- a/spring-rest-simple/src/test/java/org/baeldung/web/test/TestRestTemplateBasicLiveTest.java
+++ b/spring-rest-simple/src/test/java/com/baeldung/web/test/TestRestTemplateBasicLiveTest.java
@@ -1,4 +1,4 @@
-package org.baeldung.web.test;
+package com.baeldung.web.test;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
diff --git a/spring-rest-simple/src/test/java/org/baeldung/web/util/HTTPLinkHeaderUtil.java b/spring-rest-simple/src/test/java/com/baeldung/web/util/HTTPLinkHeaderUtil.java
similarity index 98%
rename from spring-rest-simple/src/test/java/org/baeldung/web/util/HTTPLinkHeaderUtil.java
rename to spring-rest-simple/src/test/java/com/baeldung/web/util/HTTPLinkHeaderUtil.java
index bb3919eacc..86b35d2b4e 100644
--- a/spring-rest-simple/src/test/java/org/baeldung/web/util/HTTPLinkHeaderUtil.java
+++ b/spring-rest-simple/src/test/java/com/baeldung/web/util/HTTPLinkHeaderUtil.java
@@ -1,4 +1,4 @@
-package org.baeldung.web.util;
+package com.baeldung.web.util;
import java.util.List;
diff --git a/spring-rest-simple/src/test/java/org/baeldung/SpringContextTest.java b/spring-rest-simple/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..5e68a8e64f
--- /dev/null
+++ b/spring-rest-simple/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.Application;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-rest/README.md b/spring-rest/README.md
index 5d7894cdf8..54b47604d4 100644
--- a/spring-rest/README.md
+++ b/spring-rest/README.md
@@ -6,7 +6,6 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring
### Relevant Articles:
- [Spring @RequestMapping](http://www.baeldung.com/spring-requestmapping)
- [Returning Custom Status Codes from Spring Controllers](http://www.baeldung.com/spring-mvc-controller-custom-http-status-code)
-- [A Guide to OkHttp](http://www.baeldung.com/guide-to-okhttp)
- [Binary Data Formats in a Spring REST API](http://www.baeldung.com/spring-rest-api-with-binary-data-formats)
- [Guide to UriComponentsBuilder in Spring](http://www.baeldung.com/spring-uricomponentsbuilder)
- [Introduction to FindBugs](http://www.baeldung.com/intro-to-findbugs)
diff --git a/spring-rest/pom.xml b/spring-rest/pom.xml
index 36934af101..670bac9805 100644
--- a/spring-rest/pom.xml
+++ b/spring-rest/pom.xml
@@ -93,13 +93,6 @@
commons-lang3
-
-
- com.squareup.okhttp3
- okhttp
- ${com.squareup.okhttp3.version}
-
-
org.hamcrest
@@ -270,7 +263,6 @@
4.0.01.43.1.0
- 3.520.0
@@ -280,8 +272,6 @@
3.0.43.0.0false
-
- 3.4.12.2.03.5.11
diff --git a/spring-rest/src/test/java/com/baeldung/SpringContextTest.java b/spring-rest/src/test/java/com/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..4b2024e207
--- /dev/null
+++ b/spring-rest/src/test/java/com/baeldung/SpringContextTest.java
@@ -0,0 +1,24 @@
+package com.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.custom.CustomApplication;
+import com.baeldung.produceimage.ImageApplication;
+import com.baeldung.propertyeditor.PropertyEditorApplication;
+import com.baeldung.responseheaders.ResponseHeadersApplication;
+import com.baeldung.sampleapp.config.MainApplication;
+import com.baeldung.web.log.app.Application;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = { CustomApplication.class, ImageApplication.class, PropertyEditorApplication.class,
+ ResponseHeadersApplication.class, Application.class, com.baeldung.web.upload.app.UploadApplication.class,
+ MainApplication.class})
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-resttemplate/README.md b/spring-resttemplate/README.md
index c2c4965231..97a89ff7aa 100644
--- a/spring-resttemplate/README.md
+++ b/spring-resttemplate/README.md
@@ -10,3 +10,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring
- [Configure a RestTemplate with RestTemplateBuilder](http://www.baeldung.com/spring-rest-template-builder)
- [Mocking a RestTemplate in Spring](https://www.baeldung.com/spring-mock-rest-template)
- [RestTemplate Post Request with JSON](https://www.baeldung.com/spring-resttemplate-post-json)
+- [Download a Large File Through a Spring RestTemplate](https://www.baeldung.com/spring-resttemplate-download-large-file)
diff --git a/spring-resttemplate/pom.xml b/spring-resttemplate/pom.xml
index 06d4eed9fc..ae5cfed4c9 100644
--- a/spring-resttemplate/pom.xml
+++ b/spring-resttemplate/pom.xml
@@ -284,7 +284,6 @@
- 3.51.4.9
diff --git a/spring-resttemplate/src/test/java/org/baeldung/SpringContextTest.java b/spring-resttemplate/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..e52d249f0b
--- /dev/null
+++ b/spring-resttemplate/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.resttemplate.RestTemplateConfigurationApplication;
+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 = RestTemplateConfigurationApplication.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-resttemplate/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java b/spring-resttemplate/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java
index a54c124d5f..ff3034a50d 100644
--- a/spring-resttemplate/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java
+++ b/spring-resttemplate/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java
@@ -188,7 +188,7 @@ public class RestTemplateBasicLiveTest {
final String resourceUrl = fooResourceUrl + '/' + createResponse.getBody()
.getId();
final HttpEntity requestUpdate = new HttpEntity<>(updatedResource, headers);
- final ClientHttpRequestFactory requestFactory = getSimpleClientHttpRequestFactory();
+ final ClientHttpRequestFactory requestFactory = getClientHttpRequestFactory();
final RestTemplate template = new RestTemplate(requestFactory);
template.setMessageConverters(Arrays.asList(new MappingJackson2HttpMessageConverter()));
template.patchForObject(resourceUrl, requestUpdate, Void.class);
@@ -262,7 +262,7 @@ public class RestTemplateBasicLiveTest {
// Simply setting restTemplate timeout using ClientHttpRequestFactory
- ClientHttpRequestFactory getSimpleClientHttpRequestFactory() {
+ ClientHttpRequestFactory getClientHttpRequestFactory() {
final int timeout = 5;
final HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory();
clientHttpRequestFactory.setConnectTimeout(timeout * 1000);
diff --git a/spring-security-acl/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-acl/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..74f26e2e5a
--- /dev/null
+++ b/spring-security-acl/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.acl.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-angular/README.md b/spring-security-angular/README.md
index 49cd8dd62d..80312c4bab 100644
--- a/spring-security-angular/README.md
+++ b/spring-security-angular/README.md
@@ -1,3 +1,2 @@
### Relevant Articles:
- [Spring Security Login Page with Angular](https://www.baeldung.com/spring-security-login-angular)
-- [Fixing 401s with CORS Preflights and Spring Security](https://www.baeldung.com/spring-security-cors-preflight)
diff --git a/spring-security-angular/server/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-angular/server/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..e61d512bca
--- /dev/null
+++ b/spring-security-angular/server/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.springbootsecurityrest.basicauth.SpringBootSecurityApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringBootSecurityApplication.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-cache-control/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-cache-control/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..8fbaa7169b
--- /dev/null
+++ b/spring-security-cache-control/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.cachecontrol.AppRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = AppRunner.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-rest-simple/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-client/spring-security-jsp-authentication/src/test/java/org/baeldung/SpringContextTest.java
similarity index 90%
rename from spring-rest-simple/src/test/java/org/baeldung/SpringContextIntegrationTest.java
rename to spring-security-client/spring-security-jsp-authentication/src/test/java/org/baeldung/SpringContextTest.java
index 66243ef00d..0afb3899db 100644
--- a/spring-rest-simple/src/test/java/org/baeldung/SpringContextIntegrationTest.java
+++ b/spring-security-client/spring-security-jsp-authentication/src/test/java/org/baeldung/SpringContextTest.java
@@ -8,7 +8,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
-public class SpringContextIntegrationTest {
+public class SpringContextTest {
@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
new file mode 100644
index 0000000000..0afb3899db
--- /dev/null
+++ b/spring-security-client/spring-security-jsp-authorize/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,16 @@
+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/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-client/spring-security-jsp-config/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..0afb3899db
--- /dev/null
+++ b/spring-security-client/spring-security-jsp-config/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,16 @@
+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/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-client/spring-security-mvc/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..0afb3899db
--- /dev/null
+++ b/spring-security-client/spring-security-mvc/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,16 @@
+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/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-client/spring-security-thymeleaf-authentication/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..0afb3899db
--- /dev/null
+++ b/spring-security-client/spring-security-thymeleaf-authentication/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,16 @@
+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/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-client/spring-security-thymeleaf-authorize/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..0afb3899db
--- /dev/null
+++ b/spring-security-client/spring-security-thymeleaf-authorize/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,16 @@
+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/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-client/spring-security-thymeleaf-config/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..0afb3899db
--- /dev/null
+++ b/spring-security-client/spring-security-thymeleaf-config/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,16 @@
+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/README.md b/spring-security-core/README.md
index b38dc061b4..bc9a8afed7 100644
--- a/spring-security-core/README.md
+++ b/spring-security-core/README.md
@@ -10,3 +10,4 @@ mvn clean install
- [Spring Security – @PreFilter and @PostFilter](http://www.baeldung.com/spring-security-prefilter-postfilter)
- [Spring Boot Authentication Auditing Support](http://www.baeldung.com/spring-boot-authentication-audit)
- [Introduction to Spring Method Security](http://www.baeldung.com/spring-security-method-security)
+- [Overview and Need for DelegatingFilterProxy in Spring](https://www.baeldung.com/spring-delegating-filter-proxy)
\ No newline at end of file
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 37d8c34c5a..db0c9135c4 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
@@ -1,11 +1,15 @@
package org.baeldung.app;
+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.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.web.filter.DelegatingFilterProxy;
+import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
@SpringBootApplication
@EnableJpaRepositories("org.baeldung.repository")
@@ -15,4 +19,32 @@ public class App extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
+
+ public static class ApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
+
+ @Override
+ protected javax.servlet.Filter[] getServletFilters() {
+ DelegatingFilterProxy delegateFilterProxy = new DelegatingFilterProxy();
+ delegateFilterProxy.setTargetBeanName("loggingFilter");
+ return new Filter[] { delegateFilterProxy };
+ }
+
+ @Override
+ protected Class>[] getRootConfigClasses() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ protected Class>[] getServletConfigClasses() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ protected String[] getServletMappings() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ }
}
diff --git a/spring-5-mvc/src/main/java/com/baeldung/spring/filter/CustomFilter.java b/spring-security-core/src/main/java/org/baeldung/filter/CustomFilter.java
similarity index 96%
rename from spring-5-mvc/src/main/java/com/baeldung/spring/filter/CustomFilter.java
rename to spring-security-core/src/main/java/org/baeldung/filter/CustomFilter.java
index 4aa33cd749..35596eae16 100644
--- a/spring-5-mvc/src/main/java/com/baeldung/spring/filter/CustomFilter.java
+++ b/spring-security-core/src/main/java/org/baeldung/filter/CustomFilter.java
@@ -1,4 +1,4 @@
-package com.baeldung.spring.filter;
+package org.baeldung.filter;
import java.io.IOException;
diff --git a/spring-security-core/src/main/webapp/WEB-INF/web.xml b/spring-security-core/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..e4954338a9
--- /dev/null
+++ b/spring-security-core/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,17 @@
+
+
+
+
+ loggingFilter
+ org.springframework.web.filter.DelegatingFilterProxy
+
+
+
+ loggingFilter
+ /*
+
+
+
\ No newline at end of file
diff --git a/spring-security-core/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-core/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..1707c706ae
--- /dev/null
+++ b/spring-security-core/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.app.App;
+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 = App.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-core/src/test/java/org/baeldung/methodsecurity/TestMethodSecurity.java b/spring-security-core/src/test/java/org/baeldung/methodsecurity/TestMethodSecurity.java
index 309ee3076d..009d9af9fc 100644
--- a/spring-security-core/src/test/java/org/baeldung/methodsecurity/TestMethodSecurity.java
+++ b/spring-security-core/src/test/java/org/baeldung/methodsecurity/TestMethodSecurity.java
@@ -80,7 +80,7 @@ public class TestMethodSecurity {
@Test
@WithMockUser(username = "JOHN", authorities = { "SYS_ADMIN" })
- public void givenAuthoritySysAdmin_whenCallGetUsernameInLowerCase_thenReturnUsername() {
+ public void givenAuthoritySysAdmin_whenCallGetUsernameLC_thenReturnUsername() {
String username = userRoleService.getUsernameLC();
assertEquals("john", username);
}
diff --git a/spring-security-cors/README.md b/spring-security-cors/README.md
new file mode 100644
index 0000000000..2ab5e33ee3
--- /dev/null
+++ b/spring-security-cors/README.md
@@ -0,0 +1,3 @@
+## Relevant Articles
+
+- [Fixing 401s with CORS Preflights and Spring Security](https://www.baeldung.com/spring-security-cors-preflight)
diff --git a/spring-security-kerberos/pom.xml b/spring-security-kerberos/pom.xml
index 35c4ba4926..d98d0ff508 100644
--- a/spring-security-kerberos/pom.xml
+++ b/spring-security-kerberos/pom.xml
@@ -7,12 +7,14 @@
0.1-SNAPSHOTspring-security-kerberoswar
+
parent-boot-1com.baeldung0.0.1-SNAPSHOT../parent-boot-1
+
org.springframework.boot
@@ -50,6 +52,7 @@
test
+
diff --git a/spring-security-mvc-boot/pom.xml b/spring-security-mvc-boot/pom.xml
index 4c25dc01e8..906bebf442 100644
--- a/spring-security-mvc-boot/pom.xml
+++ b/spring-security-mvc-boot/pom.xml
@@ -1,12 +1,13 @@
-
+4.0.0com.baeldungspring-security-mvc-boot0.0.1-SNAPSHOTspring-security-mvc-boot
- war
+ pomSpring Security MVC Boot
@@ -45,10 +46,6 @@
org.springframework.securityspring-security-data
-
- com.h2database
- h2
- org.hamcresthamcrest-core
@@ -198,7 +195,7 @@
**/*LiveTest.java**/*IntegrationTest.java
- **/*IntTest.java
+ **/*IntTest.java**/*EntryPointsTest.java
@@ -217,22 +214,13 @@
+
+ spring-security-mvc-boot-default
+ spring-security-mvc-boot-mysql
+ spring-security-mvc-boot-postgre
+
- org.baeldung.custom.Application
-
-
-
-
-
-
-
-
-
1.1.21.6.12.6.11
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-default/pom.xml b/spring-security-mvc-boot/spring-security-mvc-boot-default/pom.xml
new file mode 100644
index 0000000000..8f7f18f093
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-default/pom.xml
@@ -0,0 +1,42 @@
+
+
+ 4.0.0
+ com.baeldung
+ spring-security-mvc-boot-default
+ 0.0.1-SNAPSHOT
+ spring-security-mvc-boot-default
+ jar
+ Spring Security MVC Boot
+
+
+ spring-security-mvc-boot
+ com.baeldung
+ 0.0.1-SNAPSHOT
+ ../
+
+
+
+
+ com.h2database
+ h2
+
+
+
+
+ org.baeldung.custom.Application
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-security-mvc-boot/src/main/java/com/baeldung/AppConfig.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/AppConfig.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/com/baeldung/AppConfig.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/AppConfig.java
diff --git a/spring-security-mvc-boot/src/main/java/com/baeldung/SpringSecurityConfig.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/SpringSecurityConfig.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/com/baeldung/SpringSecurityConfig.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/SpringSecurityConfig.java
diff --git a/spring-security-mvc-boot/src/main/java/com/baeldung/data/repositories/TweetRepository.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/data/repositories/TweetRepository.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/com/baeldung/data/repositories/TweetRepository.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/data/repositories/TweetRepository.java
diff --git a/spring-security-mvc-boot/src/main/java/com/baeldung/data/repositories/UserRepository.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/data/repositories/UserRepository.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/com/baeldung/data/repositories/UserRepository.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/data/repositories/UserRepository.java
diff --git a/spring-security-mvc-boot/src/main/java/com/baeldung/models/AppUser.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/models/AppUser.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/com/baeldung/models/AppUser.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/models/AppUser.java
diff --git a/spring-security-mvc-boot/src/main/java/com/baeldung/models/Tweet.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/models/Tweet.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/com/baeldung/models/Tweet.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/models/Tweet.java
diff --git a/spring-security-mvc-boot/src/main/java/com/baeldung/security/AppUserPrincipal.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/security/AppUserPrincipal.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/com/baeldung/security/AppUserPrincipal.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/security/AppUserPrincipal.java
diff --git a/spring-security-mvc-boot/src/main/java/com/baeldung/security/AuthenticationSuccessHandlerImpl.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/security/AuthenticationSuccessHandlerImpl.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/com/baeldung/security/AuthenticationSuccessHandlerImpl.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/security/AuthenticationSuccessHandlerImpl.java
diff --git a/spring-security-mvc-boot/src/main/java/com/baeldung/security/CustomUserDetailsService.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/security/CustomUserDetailsService.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/com/baeldung/security/CustomUserDetailsService.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/security/CustomUserDetailsService.java
diff --git a/spring-security-mvc-boot/src/main/java/com/baeldung/util/DummyContentUtil.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/util/DummyContentUtil.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/com/baeldung/util/DummyContentUtil.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/com/baeldung/util/DummyContentUtil.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/Application.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/Application.java
similarity index 61%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/Application.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/Application.java
index f932ac3066..682d429963 100644
--- a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/Application.java
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/Application.java
@@ -1,12 +1,8 @@
package org.baeldung.custom;
import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/config/MethodSecurityConfig.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/config/MethodSecurityConfig.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/config/MethodSecurityConfig.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/config/MethodSecurityConfig.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/config/MvcConfig.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/config/MvcConfig.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/config/MvcConfig.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/config/MvcConfig.java
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/config/SecurityConfig.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/config/SecurityConfig.java
new file mode 100644
index 0000000000..739e4d3417
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/config/SecurityConfig.java
@@ -0,0 +1,15 @@
+package org.baeldung.custom.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+
+@Configuration
+public class SecurityConfig {
+
+ @Bean
+ public PasswordEncoder encoder() {
+ return new BCryptPasswordEncoder(11);
+ }
+}
\ No newline at end of file
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/persistence/SetupData.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/persistence/SetupData.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/persistence/SetupData.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/persistence/SetupData.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/persistence/dao/OrganizationRepository.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/persistence/dao/OrganizationRepository.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/persistence/dao/OrganizationRepository.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/persistence/dao/OrganizationRepository.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/persistence/dao/PrivilegeRepository.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/persistence/dao/PrivilegeRepository.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/persistence/dao/PrivilegeRepository.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/persistence/dao/PrivilegeRepository.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/persistence/dao/UserRepository.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/persistence/dao/UserRepository.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/persistence/dao/UserRepository.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/persistence/dao/UserRepository.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/persistence/model/Foo.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/persistence/model/Foo.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/persistence/model/Foo.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/persistence/model/Foo.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/persistence/model/Organization.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/persistence/model/Organization.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/persistence/model/Organization.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/persistence/model/Organization.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/persistence/model/Privilege.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/persistence/model/Privilege.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/persistence/model/Privilege.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/persistence/model/Privilege.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/persistence/model/User.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/persistence/model/User.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/persistence/model/User.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/persistence/model/User.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/security/CustomMethodSecurityExpressionHandler.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/security/CustomMethodSecurityExpressionHandler.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/security/CustomMethodSecurityExpressionHandler.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/security/CustomMethodSecurityExpressionHandler.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/security/CustomMethodSecurityExpressionRoot.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/security/CustomMethodSecurityExpressionRoot.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/security/CustomMethodSecurityExpressionRoot.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/security/CustomMethodSecurityExpressionRoot.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/security/CustomPermissionEvaluator.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/security/CustomPermissionEvaluator.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/security/CustomPermissionEvaluator.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/security/CustomPermissionEvaluator.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/security/MySecurityExpressionRoot.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/security/MySecurityExpressionRoot.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/security/MySecurityExpressionRoot.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/security/MySecurityExpressionRoot.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/security/MyUserDetailsService.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/security/MyUserDetailsService.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/security/MyUserDetailsService.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/security/MyUserDetailsService.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/security/MyUserPrincipal.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/security/MyUserPrincipal.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/security/MyUserPrincipal.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/security/MyUserPrincipal.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/web/MainController.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/web/MainController.java
similarity index 70%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/custom/web/MainController.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/web/MainController.java
index 6572954427..74de45d1a8 100644
--- a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/web/MainController.java
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/custom/web/MainController.java
@@ -3,14 +3,16 @@ package org.baeldung.custom.web;
import org.baeldung.custom.persistence.dao.OrganizationRepository;
import org.baeldung.custom.persistence.model.Foo;
import org.baeldung.custom.persistence.model.Organization;
+import org.baeldung.custom.security.MyUserPrincipal;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
@@ -23,14 +25,14 @@ public class MainController {
// @PostAuthorize("hasPermission(returnObject, 'read')")
@PreAuthorize("hasPermission(#id, 'Foo', 'read')")
- @RequestMapping(method = RequestMethod.GET, value = "/foos/{id}")
+ @GetMapping("/foos/{id}")
@ResponseBody
public Foo findById(@PathVariable final long id) {
return new Foo("Sample");
}
@PreAuthorize("hasPermission(#foo, 'write')")
- @RequestMapping(method = RequestMethod.POST, value = "/foos")
+ @PostMapping("/foos")
@ResponseStatus(HttpStatus.CREATED)
@ResponseBody
public Foo create(@RequestBody final Foo foo) {
@@ -40,7 +42,7 @@ public class MainController {
//
@PreAuthorize("hasAuthority('FOO_READ_PRIVILEGE')")
- @RequestMapping(method = RequestMethod.GET, value = "/foos")
+ @GetMapping("/foos")
@ResponseBody
public Foo findFooByName(@RequestParam final String name) {
return new Foo(name);
@@ -49,10 +51,18 @@ public class MainController {
//
@PreAuthorize("isMember(#id)")
- @RequestMapping(method = RequestMethod.GET, value = "/organizations/{id}")
+ @GetMapping("/organizations/{id}")
@ResponseBody
public Organization findOrgById(@PathVariable final long id) {
- return organizationRepository.findById(id).orElse(null);
+ return organizationRepository.findById(id)
+ .orElse(null);
+ }
+
+ @PreAuthorize("hasPermission(#id, 'Foo', 'read')")
+ @GetMapping("/user")
+ @ResponseBody
+ public MyUserPrincipal retrieveUserDetails(@AuthenticationPrincipal MyUserPrincipal principal) {
+ return principal;
}
}
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/ip/IpApplication.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/ip/IpApplication.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/ip/IpApplication.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/ip/IpApplication.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/ip/config/CustomIpAuthenticationProvider.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/ip/config/CustomIpAuthenticationProvider.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/ip/config/CustomIpAuthenticationProvider.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/ip/config/CustomIpAuthenticationProvider.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/ip/config/SecurityConfig.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/ip/config/SecurityConfig.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/ip/config/SecurityConfig.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/ip/config/SecurityConfig.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/ip/config/SecurityXmlConfig.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/ip/config/SecurityXmlConfig.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/ip/config/SecurityXmlConfig.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/ip/config/SecurityXmlConfig.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/ip/web/MainController.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/ip/web/MainController.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/ip/web/MainController.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/ip/web/MainController.java
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/jdbcauthentication/h2/H2JdbcAuthenticationApplication.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/jdbcauthentication/h2/H2JdbcAuthenticationApplication.java
new file mode 100644
index 0000000000..6bd30414ef
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/jdbcauthentication/h2/H2JdbcAuthenticationApplication.java
@@ -0,0 +1,15 @@
+package org.baeldung.jdbcauthentication.h2;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+
+@SpringBootApplication
+@EnableWebSecurity
+public class H2JdbcAuthenticationApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(H2JdbcAuthenticationApplication.class, args);
+ }
+
+}
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/jdbcauthentication/h2/config/SecurityConfiguration.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/jdbcauthentication/h2/config/SecurityConfiguration.java
new file mode 100644
index 0000000000..8b8696f0b2
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/jdbcauthentication/h2/config/SecurityConfiguration.java
@@ -0,0 +1,51 @@
+package org.baeldung.jdbcauthentication.h2.config;
+
+import javax.sql.DataSource;
+
+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.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.core.userdetails.User;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+
+@Configuration
+public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
+ @Override
+ protected void configure(HttpSecurity httpSecurity) throws Exception {
+ httpSecurity.authorizeRequests()
+ .antMatchers("/h2-console/**")
+ .permitAll()
+ .anyRequest()
+ .authenticated()
+ .and()
+ .formLogin()
+ .permitAll();
+ httpSecurity.csrf()
+ .ignoringAntMatchers("/h2-console/**");
+ httpSecurity.headers()
+ .frameOptions()
+ .sameOrigin();
+ }
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Autowired
+ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
+ auth.jdbcAuthentication()
+ .dataSource(dataSource)
+ .withDefaultSchema()
+ .withUser(User.withUsername("user")
+ .password(passwordEncoder().encode("pass"))
+ .roles("USER"));
+ }
+
+ @Bean
+ public PasswordEncoder passwordEncoder() {
+ return new BCryptPasswordEncoder();
+ }
+}
\ No newline at end of file
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/jdbcauthentication/h2/web/UserController.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/jdbcauthentication/h2/web/UserController.java
new file mode 100644
index 0000000000..0955061614
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/jdbcauthentication/h2/web/UserController.java
@@ -0,0 +1,17 @@
+package org.baeldung.jdbcauthentication.h2.web;
+
+import java.security.Principal;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/principal")
+public class UserController {
+
+ @GetMapping
+ public Principal retrievePrincipal(Principal principal) {
+ return principal;
+ }
+}
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/multipleauthproviders/CustomAuthenticationProvider.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multipleauthproviders/CustomAuthenticationProvider.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/multipleauthproviders/CustomAuthenticationProvider.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multipleauthproviders/CustomAuthenticationProvider.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/multipleauthproviders/MultipleAuthController.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multipleauthproviders/MultipleAuthController.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/multipleauthproviders/MultipleAuthController.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multipleauthproviders/MultipleAuthController.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/multipleauthproviders/MultipleAuthProvidersApplication.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multipleauthproviders/MultipleAuthProvidersApplication.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/multipleauthproviders/MultipleAuthProvidersApplication.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multipleauthproviders/MultipleAuthProvidersApplication.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/multipleauthproviders/MultipleAuthProvidersSecurityConfig.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multipleauthproviders/MultipleAuthProvidersSecurityConfig.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/multipleauthproviders/MultipleAuthProvidersSecurityConfig.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multipleauthproviders/MultipleAuthProvidersSecurityConfig.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/multipleentrypoints/MultipleEntryPointsApplication.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multipleentrypoints/MultipleEntryPointsApplication.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/multipleentrypoints/MultipleEntryPointsApplication.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multipleentrypoints/MultipleEntryPointsApplication.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/multipleentrypoints/MultipleEntryPointsSecurityConfig.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multipleentrypoints/MultipleEntryPointsSecurityConfig.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/multipleentrypoints/MultipleEntryPointsSecurityConfig.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multipleentrypoints/MultipleEntryPointsSecurityConfig.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/multipleentrypoints/PagesController.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multipleentrypoints/PagesController.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/multipleentrypoints/PagesController.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multipleentrypoints/PagesController.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/multiplelogin/MultipleLoginApplication.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multiplelogin/MultipleLoginApplication.java
similarity index 69%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/multiplelogin/MultipleLoginApplication.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multiplelogin/MultipleLoginApplication.java
index e9dc541ad3..d25324eb54 100644
--- a/spring-security-mvc-boot/src/main/java/org/baeldung/multiplelogin/MultipleLoginApplication.java
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multiplelogin/MultipleLoginApplication.java
@@ -1,11 +1,8 @@
package org.baeldung.multiplelogin;
import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan("org.baeldung.multiplelogin")
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/multiplelogin/MultipleLoginMvcConfig.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multiplelogin/MultipleLoginMvcConfig.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/multiplelogin/MultipleLoginMvcConfig.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multiplelogin/MultipleLoginMvcConfig.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/multiplelogin/MultipleLoginSecurityConfig.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multiplelogin/MultipleLoginSecurityConfig.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/multiplelogin/MultipleLoginSecurityConfig.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multiplelogin/MultipleLoginSecurityConfig.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/multiplelogin/UsersController.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multiplelogin/UsersController.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/multiplelogin/UsersController.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/multiplelogin/UsersController.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/CustomAuthenticationProvider.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/CustomAuthenticationProvider.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/CustomAuthenticationProvider.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/CustomAuthenticationProvider.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/MyLogoutSuccessHandler.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/MyLogoutSuccessHandler.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/MyLogoutSuccessHandler.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/MyLogoutSuccessHandler.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/MyUserDetailsService.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/MyUserDetailsService.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/MyUserDetailsService.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/MyUserDetailsService.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/RolesAuthoritiesApplication.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/RolesAuthoritiesApplication.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/RolesAuthoritiesApplication.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/RolesAuthoritiesApplication.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/config/MvcConfig.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/config/MvcConfig.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/config/MvcConfig.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/config/MvcConfig.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/config/SecurityConfig.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/config/SecurityConfig.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/config/SecurityConfig.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/config/SecurityConfig.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/model/Privilege.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/model/Privilege.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/model/Privilege.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/model/Privilege.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/model/Role.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/model/Role.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/model/Role.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/model/Role.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/model/User.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/model/User.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/model/User.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/model/User.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/persistence/IUserService.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/persistence/IUserService.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/persistence/IUserService.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/persistence/IUserService.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/persistence/PrivilegeRepository.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/persistence/PrivilegeRepository.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/persistence/PrivilegeRepository.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/persistence/PrivilegeRepository.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/persistence/RoleRepository.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/persistence/RoleRepository.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/persistence/RoleRepository.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/persistence/RoleRepository.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/persistence/SetupDataLoader.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/persistence/SetupDataLoader.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/persistence/SetupDataLoader.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/persistence/SetupDataLoader.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/persistence/UserRepository.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/persistence/UserRepository.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/persistence/UserRepository.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/persistence/UserRepository.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/persistence/UserService.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/persistence/UserService.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/rolesauthorities/persistence/UserService.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/rolesauthorities/persistence/UserService.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/ssl/HttpsEnabledApplication.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/ssl/HttpsEnabledApplication.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/ssl/HttpsEnabledApplication.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/ssl/HttpsEnabledApplication.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/ssl/SecurityConfig.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/ssl/SecurityConfig.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/ssl/SecurityConfig.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/ssl/SecurityConfig.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/ssl/WelcomeController.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/ssl/WelcomeController.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/ssl/WelcomeController.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/ssl/WelcomeController.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/voter/MinuteBasedVoter.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/voter/MinuteBasedVoter.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/voter/MinuteBasedVoter.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/voter/MinuteBasedVoter.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/voter/VoterApplication.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/voter/VoterApplication.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/voter/VoterApplication.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/voter/VoterApplication.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/voter/VoterMvcConfig.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/voter/VoterMvcConfig.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/voter/VoterMvcConfig.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/voter/VoterMvcConfig.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/voter/WebSecurityConfig.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/voter/WebSecurityConfig.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/voter/WebSecurityConfig.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/voter/WebSecurityConfig.java
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/voter/XmlSecurityConfig.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/voter/XmlSecurityConfig.java
similarity index 100%
rename from spring-security-mvc-boot/src/main/java/org/baeldung/voter/XmlSecurityConfig.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/java/org/baeldung/voter/XmlSecurityConfig.java
diff --git a/spring-security-mvc-boot/src/main/resources/application-ssl.properties b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/application-ssl.properties
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/application-ssl.properties
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/application-ssl.properties
diff --git a/spring-security-mvc-boot/src/main/resources/application.properties b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/application.properties
similarity index 74%
rename from spring-security-mvc-boot/src/main/resources/application.properties
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/application.properties
index 25eac743d1..365dedab9e 100644
--- a/spring-security-mvc-boot/src/main/resources/application.properties
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/application.properties
@@ -8,5 +8,7 @@ spring.jpa.database=H2
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
+logging.level.org.springframework.security.web.FilterChainProxy=DEBUG
-#logging.level.org.springframework.security.web.FilterChainProxy=DEBUG
\ No newline at end of file
+spring.h2.console.enabled=true
+spring.h2.console.path=/h2-console
\ No newline at end of file
diff --git a/spring-security-mvc-boot/src/main/resources/keystore/baeldung.p12 b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/keystore/baeldung.p12
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/keystore/baeldung.p12
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/keystore/baeldung.p12
diff --git a/xmlunit-2/src/main/resources/logback.xml b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/logback.xml
similarity index 100%
rename from xmlunit-2/src/main/resources/logback.xml
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/logback.xml
diff --git a/spring-security-mvc-boot/src/main/resources/persistence-h2.properties b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/persistence-h2.properties
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/persistence-h2.properties
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/persistence-h2.properties
diff --git a/spring-security-mvc-boot/src/main/resources/spring-security-custom-voter.xml b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/spring-security-custom-voter.xml
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/spring-security-custom-voter.xml
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/spring-security-custom-voter.xml
diff --git a/spring-security-mvc-boot/src/main/resources/spring-security-ip.xml b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/spring-security-ip.xml
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/spring-security-ip.xml
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/spring-security-ip.xml
diff --git a/spring-security-mvc-boot/src/main/resources/spring-security-multiple-auth-providers.xml b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/spring-security-multiple-auth-providers.xml
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/spring-security-multiple-auth-providers.xml
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/spring-security-multiple-auth-providers.xml
diff --git a/spring-security-mvc-boot/src/main/resources/spring-security-multiple-entry.xml b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/spring-security-multiple-entry.xml
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/spring-security-multiple-entry.xml
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/spring-security-multiple-entry.xml
diff --git a/spring-security-mvc-boot/src/main/resources/templates/403.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/403.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/403.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/403.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/adminPage.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/adminPage.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/adminPage.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/adminPage.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/index.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/index.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/index.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/index.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/login.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/login.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/login.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/login.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/loginAdmin.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/loginAdmin.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/loginAdmin.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/loginAdmin.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/loginUser.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/loginUser.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/loginUser.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/loginUser.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/multipleHttpElems/login.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/multipleHttpElems/login.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/multipleHttpElems/login.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/multipleHttpElems/login.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/multipleHttpElems/loginWithWarning.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/multipleHttpElems/loginWithWarning.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/multipleHttpElems/loginWithWarning.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/multipleHttpElems/loginWithWarning.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/multipleHttpElems/multipleHttpLinks.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/multipleHttpElems/multipleHttpLinks.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/multipleHttpElems/multipleHttpLinks.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/multipleHttpElems/multipleHttpLinks.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/multipleHttpElems/myAdminPage.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/multipleHttpElems/myAdminPage.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/multipleHttpElems/myAdminPage.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/multipleHttpElems/myAdminPage.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/multipleHttpElems/myGuestPage.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/multipleHttpElems/myGuestPage.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/multipleHttpElems/myGuestPage.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/multipleHttpElems/myGuestPage.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/multipleHttpElems/myPrivateUserPage.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/multipleHttpElems/myPrivateUserPage.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/multipleHttpElems/myPrivateUserPage.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/multipleHttpElems/myPrivateUserPage.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/multipleHttpElems/myUserPage.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/multipleHttpElems/myUserPage.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/multipleHttpElems/myUserPage.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/multipleHttpElems/myUserPage.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/private.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/private.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/private.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/private.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/protectedLinks.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/protectedLinks.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/protectedLinks.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/protectedLinks.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/home.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/rolesauthorities/home.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/home.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/rolesauthorities/home.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/login.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/rolesauthorities/login.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/login.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/rolesauthorities/login.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/protectedbyauthority.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/rolesauthorities/protectedbyauthority.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/protectedbyauthority.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/rolesauthorities/protectedbyauthority.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/protectedbynothing.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/rolesauthorities/protectedbynothing.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/protectedbynothing.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/rolesauthorities/protectedbynothing.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/protectedbyrole.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/rolesauthorities/protectedbyrole.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/protectedbyrole.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/rolesauthorities/protectedbyrole.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/ssl/welcome.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/ssl/welcome.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/ssl/welcome.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/ssl/welcome.html
diff --git a/spring-security-mvc-boot/src/main/resources/templates/userPage.html b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/userPage.html
similarity index 100%
rename from spring-security-mvc-boot/src/main/resources/templates/userPage.html
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/main/resources/templates/userPage.html
diff --git a/spring-security-mvc-boot/src/test/java/com/baeldung/relationships/SpringDataWithSecurityIntegrationTest.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/com/baeldung/relationships/SpringDataWithSecurityIntegrationTest.java
similarity index 100%
rename from spring-security-mvc-boot/src/test/java/com/baeldung/relationships/SpringDataWithSecurityIntegrationTest.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/com/baeldung/relationships/SpringDataWithSecurityIntegrationTest.java
diff --git a/spring-security-mvc-boot/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/SpringContextIntegrationTest.java
similarity index 100%
rename from spring-security-mvc-boot/src/test/java/org/baeldung/SpringContextIntegrationTest.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/SpringContextIntegrationTest.java
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/jdbcauthentication/h2/web/UserControllerLiveTest.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/jdbcauthentication/h2/web/UserControllerLiveTest.java
new file mode 100644
index 0000000000..638e9d7919
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/jdbcauthentication/h2/web/UserControllerLiveTest.java
@@ -0,0 +1,35 @@
+package org.baeldung.jdbcauthentication.h2.web;
+
+import static io.restassured.RestAssured.given;
+import static org.hamcrest.CoreMatchers.is;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.http.HttpStatus;
+
+import io.restassured.authentication.FormAuthConfig;
+import io.restassured.filter.session.SessionFilter;
+
+/**
+ * This Live Test requires the H2JdbcAuthenticationApplication application to be up and running
+ */
+public class UserControllerLiveTest {
+
+ private static final String PRINCIPAL_SVC_URL = "http://localhost:8082/principal";
+
+ @Test
+ public void givenExisting_whenRequestPrincipal_thenRetrieveData() throws Exception {
+ SessionFilter filter = new SessionFilter();
+ given().auth()
+ .form("user", "pass", new FormAuthConfig("/login", "username", "password").withCsrfFieldName("_csrf"))
+ .and()
+ .filter(filter)
+ .when()
+ .get(PRINCIPAL_SVC_URL)
+ .then()
+ .statusCode(HttpStatus.OK.value())
+ .and()
+ .body("authorities[0].authority", is("ROLE_USER"))
+ .body("principal.username", is("user"))
+ .body("name", is("user"));
+ }
+}
diff --git a/spring-security-mvc-boot/src/test/java/org/baeldung/web/ApplicationLiveTest.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/web/ApplicationLiveTest.java
similarity index 100%
rename from spring-security-mvc-boot/src/test/java/org/baeldung/web/ApplicationLiveTest.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/web/ApplicationLiveTest.java
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/web/CustomUserDetailsServiceIntegrationTest.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/web/CustomUserDetailsServiceIntegrationTest.java
new file mode 100644
index 0000000000..d16acc729a
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/web/CustomUserDetailsServiceIntegrationTest.java
@@ -0,0 +1,89 @@
+package org.baeldung.web;
+
+import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+import org.apache.http.HttpHeaders;
+import org.baeldung.custom.Application;
+import org.baeldung.custom.persistence.model.Foo;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.security.test.context.support.WithAnonymousUser;
+import org.springframework.security.test.context.support.WithUserDetails;
+import org.springframework.test.web.servlet.MockMvc;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+@SpringBootTest(classes = { Application.class })
+@AutoConfigureMockMvc
+public class CustomUserDetailsServiceIntegrationTest {
+
+ @Autowired
+ private MockMvc mvc;
+
+ @Test
+ @WithUserDetails("john")
+ public void givenUserWithReadPermissions_whenRequestUserInfo_thenRetrieveUserData() throws Exception {
+ this.mvc.perform(get("/user").with(csrf()))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.user.privileges[0].name").value("FOO_READ_PRIVILEGE"))
+ .andExpect(jsonPath("$.user.organization.name").value("FirstOrg"))
+ .andExpect(jsonPath("$.user.username").value("john"));
+ }
+
+ @Test
+ @WithUserDetails("tom")
+ public void givenUserWithWritePermissions_whenRequestUserInfo_thenRetrieveUserData() throws Exception {
+ this.mvc.perform(get("/user").with(csrf()))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.user.privileges").isArray())
+ .andExpect(jsonPath("$.user.organization.name").value("SecondOrg"))
+ .andExpect(jsonPath("$.user.username").value("tom"));
+ }
+
+ @Test
+ @WithUserDetails("john")
+ public void givenUserWithReadPermissions_whenRequestFoo_thenRetrieveSampleFoo() throws Exception {
+ this.mvc.perform(get("/foos/1").with(csrf()))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.name").value("Sample"));
+ }
+
+ @Test
+ @WithAnonymousUser
+ public void givenAnonymous_whenRequestFoo_thenRetrieveUnauthorized() throws Exception {
+ this.mvc.perform(get("/foos/1").with(csrf()))
+ .andExpect(status().isUnauthorized());
+ }
+
+ @Test
+ @WithUserDetails("john")
+ public void givenUserWithReadPermissions_whenCreateNewFoo_thenForbiddenStatusRetrieved() throws Exception {
+ this.mvc.perform(post("/foos").with(csrf())
+ .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+ .content(asJsonString(new Foo())))
+ .andExpect(status().isForbidden());
+ }
+
+ @Test
+ @WithUserDetails("tom")
+ public void givenUserWithWritePermissions_whenCreateNewFoo_thenOkStatusRetrieved() throws Exception {
+ this.mvc.perform(post("/foos").with(csrf())
+ .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+ .content(asJsonString(new Foo())))
+ .andExpect(status().isCreated());
+ }
+
+ private static String asJsonString(final Object obj) throws Exception {
+ final ObjectMapper mapper = new ObjectMapper();
+ final String jsonContent = mapper.writeValueAsString(obj);
+ return jsonContent;
+ }
+
+}
diff --git a/spring-security-mvc-boot/src/test/java/org/baeldung/web/HttpsApplicationIntegrationTest.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/web/HttpsApplicationIntegrationTest.java
similarity index 100%
rename from spring-security-mvc-boot/src/test/java/org/baeldung/web/HttpsApplicationIntegrationTest.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/web/HttpsApplicationIntegrationTest.java
diff --git a/spring-security-mvc-boot/src/test/java/org/baeldung/web/IpLiveTest.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/web/IpLiveTest.java
similarity index 100%
rename from spring-security-mvc-boot/src/test/java/org/baeldung/web/IpLiveTest.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/web/IpLiveTest.java
diff --git a/spring-security-mvc-boot/src/test/java/org/baeldung/web/MultipleAuthProvidersApplicationIntegrationTest.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/web/MultipleAuthProvidersApplicationIntegrationTest.java
similarity index 100%
rename from spring-security-mvc-boot/src/test/java/org/baeldung/web/MultipleAuthProvidersApplicationIntegrationTest.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/web/MultipleAuthProvidersApplicationIntegrationTest.java
diff --git a/spring-security-mvc-boot/src/test/java/org/baeldung/web/MultipleEntryPointsIntegrationTest.java b/spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/web/MultipleEntryPointsIntegrationTest.java
similarity index 100%
rename from spring-security-mvc-boot/src/test/java/org/baeldung/web/MultipleEntryPointsIntegrationTest.java
rename to spring-security-mvc-boot/spring-security-mvc-boot-default/src/test/java/org/baeldung/web/MultipleEntryPointsIntegrationTest.java
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-mysql/pom.xml b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/pom.xml
new file mode 100644
index 0000000000..765953c557
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/pom.xml
@@ -0,0 +1,28 @@
+
+
+ 4.0.0
+ com.baeldung
+ spring-security-mvc-boot-mysql
+ 0.0.1-SNAPSHOT
+ spring-security-mvc-boot-mysql
+ jar
+ Spring Security MVC Boot using MySQL
+
+
+ spring-security-mvc-boot
+ com.baeldung
+ 0.0.1-SNAPSHOT
+ ..
+
+
+
+
+ mysql
+ mysql-connector-java
+ runtime
+
+
+
+
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/java/com/baeldung/jdbcauthentication/mysql/MySqlJdbcAuthenticationApplication.java b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/java/com/baeldung/jdbcauthentication/mysql/MySqlJdbcAuthenticationApplication.java
new file mode 100644
index 0000000000..238a48730c
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/java/com/baeldung/jdbcauthentication/mysql/MySqlJdbcAuthenticationApplication.java
@@ -0,0 +1,13 @@
+package com.baeldung.jdbcauthentication.mysql;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class MySqlJdbcAuthenticationApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(MySqlJdbcAuthenticationApplication.class, args);
+ }
+
+}
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/java/com/baeldung/jdbcauthentication/mysql/config/SecurityConfiguration.java b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/java/com/baeldung/jdbcauthentication/mysql/config/SecurityConfiguration.java
new file mode 100644
index 0000000000..a0584818cd
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/java/com/baeldung/jdbcauthentication/mysql/config/SecurityConfiguration.java
@@ -0,0 +1,35 @@
+package com.baeldung.jdbcauthentication.mysql.config;
+
+import javax.sql.DataSource;
+
+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.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+
+@Configuration
+public class SecurityConfiguration {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Autowired
+ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
+ auth.jdbcAuthentication()
+ .dataSource(dataSource)
+ .usersByUsernameQuery("select email,password,enabled "
+ + "from bael_users "
+ + "where email = ?")
+ .authoritiesByUsernameQuery("select email,authority "
+ + "from authorities "
+ + "where email = ?");
+ }
+
+ @Bean
+ public PasswordEncoder passwordEncoder() {
+ return new BCryptPasswordEncoder();
+ }
+
+}
\ No newline at end of file
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/java/com/baeldung/jdbcauthentication/mysql/web/UserController.java b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/java/com/baeldung/jdbcauthentication/mysql/web/UserController.java
new file mode 100644
index 0000000000..ed15f8bfe6
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/java/com/baeldung/jdbcauthentication/mysql/web/UserController.java
@@ -0,0 +1,17 @@
+package com.baeldung.jdbcauthentication.mysql.web;
+
+import java.security.Principal;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/principal")
+public class UserController {
+
+ @GetMapping
+ public Principal retrievePrincipal(Principal principal) {
+ return principal;
+ }
+}
\ No newline at end of file
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/resources/application.properties b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/resources/application.properties
new file mode 100644
index 0000000000..2962475108
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/resources/application.properties
@@ -0,0 +1,8 @@
+server.port=8082
+
+spring.datasource.url=jdbc:mysql://localhost:3306/jdbc_authentication
+spring.datasource.username=root
+spring.datasource.password=pass
+
+spring.datasource.initialization-mode=always
+spring.jpa.hibernate.ddl-auto=none
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/resources/data.sql b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/resources/data.sql
new file mode 100644
index 0000000000..8214fd8204
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/resources/data.sql
@@ -0,0 +1,4 @@
+-- User user@email.com/pass
+INSERT INTO bael_users (name, email, password, enabled) values ('user', 'user@email.com', '$2a$10$8.UnVuG9HHgffUDAlk8qfOuVGkqRzgVymGe07xd00DMxs.AQubh4a', 1);
+
+INSERT INTO authorities (email, authority) values ('user@email.com', 'ROLE_USER');
\ No newline at end of file
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/resources/schema.sql b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/resources/schema.sql
new file mode 100644
index 0000000000..bb38c74366
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/main/resources/schema.sql
@@ -0,0 +1,18 @@
+DROP TABLE IF EXISTS authorities;
+DROP TABLE IF EXISTS bael_users;
+
+CREATE TABLE bael_users (
+ name VARCHAR(50) NOT NULL,
+ email VARCHAR(50) NOT NULL,
+ password VARCHAR(100) NOT NULL,
+ enabled TINYINT NOT NULL DEFAULT 1,
+ PRIMARY KEY (email)
+);
+
+CREATE TABLE authorities (
+ email VARCHAR(50) NOT NULL,
+ authority VARCHAR(50) NOT NULL,
+ FOREIGN KEY (email) REFERENCES bael_users(email)
+);
+
+CREATE UNIQUE INDEX ix_auth_email on authorities (email,authority);
\ No newline at end of file
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/test/java/com/baeldung/jdbcauthentication/mysql/SpringContextIntegrationTest.java b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/test/java/com/baeldung/jdbcauthentication/mysql/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..2c19e2c0ca
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/test/java/com/baeldung/jdbcauthentication/mysql/SpringContextIntegrationTest.java
@@ -0,0 +1,15 @@
+package com.baeldung.jdbcauthentication.mysql;
+
+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 = MySqlJdbcAuthenticationApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/test/java/com/baeldung/jdbcauthentication/mysql/web/UserControllerLiveTest.java b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/test/java/com/baeldung/jdbcauthentication/mysql/web/UserControllerLiveTest.java
new file mode 100644
index 0000000000..79bc84ea69
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-mysql/src/test/java/com/baeldung/jdbcauthentication/mysql/web/UserControllerLiveTest.java
@@ -0,0 +1,35 @@
+package com.baeldung.jdbcauthentication.mysql.web;
+
+import static io.restassured.RestAssured.given;
+import static org.hamcrest.CoreMatchers.is;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.http.HttpStatus;
+
+/**
+ * This Live Test requires:
+ * * a MySql instance running, that allows a 'root' user with password 'pass', and with a database named jdbc_authentication
+ * (e.g. with the following command `docker run -p 3306:3306 --name bael-mysql -e MYSQL_ROOT_PASSWORD=pass -e MYSQL_DATABASE=jdbc_authentication mysql:latest`)
+ * * the service up and running
+ *
+ */
+public class UserControllerLiveTest {
+
+ private static final String PRINCIPAL_SVC_URL = "http://localhost:8082/principal";
+
+ @Test
+ public void givenExisting_whenRequestPrincipal_thenRetrieveData() throws Exception {
+ given().auth()
+ .preemptive()
+ .basic("user@email.com", "pass")
+ .when()
+ .get(PRINCIPAL_SVC_URL)
+ .then()
+ .statusCode(HttpStatus.OK.value())
+ .and()
+ .body("authorities[0].authority", is("ROLE_USER"))
+ .body("principal.username", is("user@email.com"))
+ .body("name", is("user@email.com"));
+ }
+
+}
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-postgre/pom.xml b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/pom.xml
new file mode 100644
index 0000000000..e68e47b596
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/pom.xml
@@ -0,0 +1,28 @@
+
+
+ 4.0.0
+ com.baeldung
+ spring-security-mvc-boot-postgre
+ 0.0.1-SNAPSHOT
+ spring-security-mvc-boot-postgre
+ jar
+ Spring Security MVC Boot using PostgreSQL
+
+
+ spring-security-mvc-boot
+ com.baeldung
+ 0.0.1-SNAPSHOT
+ ..
+
+
+
+
+ org.postgresql
+ postgresql
+ runtime
+
+
+
+
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/java/com/baeldung/jdbcauthentication/postgre/PostgreJdbcAuthenticationApplication.java b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/java/com/baeldung/jdbcauthentication/postgre/PostgreJdbcAuthenticationApplication.java
new file mode 100644
index 0000000000..d4b555e8c6
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/java/com/baeldung/jdbcauthentication/postgre/PostgreJdbcAuthenticationApplication.java
@@ -0,0 +1,13 @@
+package com.baeldung.jdbcauthentication.postgre;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class PostgreJdbcAuthenticationApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(PostgreJdbcAuthenticationApplication.class, args);
+ }
+
+}
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/java/com/baeldung/jdbcauthentication/postgre/config/SecurityConfiguration.java b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/java/com/baeldung/jdbcauthentication/postgre/config/SecurityConfiguration.java
new file mode 100644
index 0000000000..85dc9d364c
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/java/com/baeldung/jdbcauthentication/postgre/config/SecurityConfiguration.java
@@ -0,0 +1,29 @@
+package com.baeldung.jdbcauthentication.postgre.config;
+
+import javax.sql.DataSource;
+
+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.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+
+@Configuration
+public class SecurityConfiguration {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Autowired
+ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
+ auth.jdbcAuthentication()
+ .dataSource(dataSource);
+ }
+
+ @Bean
+ public PasswordEncoder passwordEncoder() {
+ return new BCryptPasswordEncoder();
+ }
+
+}
\ No newline at end of file
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/java/com/baeldung/jdbcauthentication/postgre/web/UserController.java b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/java/com/baeldung/jdbcauthentication/postgre/web/UserController.java
new file mode 100644
index 0000000000..da85a46562
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/java/com/baeldung/jdbcauthentication/postgre/web/UserController.java
@@ -0,0 +1,17 @@
+package com.baeldung.jdbcauthentication.postgre.web;
+
+import java.security.Principal;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/principal")
+public class UserController {
+
+ @GetMapping
+ public Principal retrievePrincipal(Principal principal) {
+ return principal;
+ }
+}
\ No newline at end of file
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/resources/application.properties b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/resources/application.properties
new file mode 100644
index 0000000000..2940c5121e
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/resources/application.properties
@@ -0,0 +1,8 @@
+server.port=8082
+
+spring.datasource.url=jdbc:postgresql://localhost:5432/jdbc_authentication
+spring.datasource.username=postgres
+spring.datasource.password=pass
+
+spring.datasource.initialization-mode=always
+spring.jpa.hibernate.ddl-auto=none
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/resources/data.sql b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/resources/data.sql
new file mode 100644
index 0000000000..fcc6b54949
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/resources/data.sql
@@ -0,0 +1,4 @@
+-- User user/pass
+INSERT INTO users (username, password, enabled) values ('user', '$2a$10$8.UnVuG9HHgffUDAlk8qfOuVGkqRzgVymGe07xd00DMxs.AQubh4a', true);
+
+INSERT INTO authorities (username, authority) values ('user', 'ROLE_USER');
\ No newline at end of file
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/resources/schema.sql b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/resources/schema.sql
new file mode 100644
index 0000000000..d78edfb528
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/main/resources/schema.sql
@@ -0,0 +1,16 @@
+DROP TABLE IF EXISTS authorities;
+DROP TABLE IF EXISTS users;
+
+CREATE TABLE users (
+ username varchar(50) NOT NULL PRIMARY KEY,
+ password varchar(100) NOT NULL,
+ enabled boolean not null DEFAULT true
+);
+
+CREATE TABLE authorities (
+ username varchar(50) NOT NULL,
+ authority varchar(50) NOT NULL,
+ CONSTRAINT foreign_authorities_users_1 foreign key(username) references users(username)
+);
+
+CREATE UNIQUE INDEX ix_auth_username on authorities (username,authority);
\ No newline at end of file
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/test/java/com/baeldung/jdbcauthentication/postgre/SpringContextIntegrationTest.java b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/test/java/com/baeldung/jdbcauthentication/postgre/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..f133ef73be
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/test/java/com/baeldung/jdbcauthentication/postgre/SpringContextIntegrationTest.java
@@ -0,0 +1,17 @@
+package com.baeldung.jdbcauthentication.postgre;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.jdbcauthentication.postgre.PostgreJdbcAuthenticationApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = PostgreJdbcAuthenticationApplication.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/test/java/com/baeldung/jdbcauthentication/postgre/web/UserControllerLiveTest.java b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/test/java/com/baeldung/jdbcauthentication/postgre/web/UserControllerLiveTest.java
new file mode 100644
index 0000000000..b5f4379c0a
--- /dev/null
+++ b/spring-security-mvc-boot/spring-security-mvc-boot-postgre/src/test/java/com/baeldung/jdbcauthentication/postgre/web/UserControllerLiveTest.java
@@ -0,0 +1,35 @@
+package com.baeldung.jdbcauthentication.postgre.web;
+
+import static io.restassured.RestAssured.given;
+import static org.hamcrest.CoreMatchers.is;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.http.HttpStatus;
+
+/**
+ * This Live Test requires:
+ * * a PostgreSQL instance running, that allows a 'root' user with password 'pass', and with a database named jdbc_authentication
+ * (e.g. with the following command `docker run -p 5432:5432 --name bael-postgre -e POSTGRES_PASSWORD=pass -e POSTGRES_DB=jdbc_authentication postgres:latest`)
+ * * the service up and running
+ *
+ */
+public class UserControllerLiveTest {
+
+ private static final String PRINCIPAL_SVC_URL = "http://localhost:8082/principal";
+
+ @Test
+ public void givenExisting_whenRequestPrincipal_thenRetrieveData() throws Exception {
+ given().auth()
+ .preemptive()
+ .basic("user", "pass")
+ .when()
+ .get(PRINCIPAL_SVC_URL)
+ .then()
+ .statusCode(HttpStatus.OK.value())
+ .and()
+ .body("authorities[0].authority", is("ROLE_USER"))
+ .body("principal.username", is("user"))
+ .body("name", is("user"));
+ }
+
+}
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/config/SecurityConfig.java b/spring-security-mvc-boot/src/main/java/org/baeldung/custom/config/SecurityConfig.java
deleted file mode 100644
index f2da5af92c..0000000000
--- a/spring-security-mvc-boot/src/main/java/org/baeldung/custom/config/SecurityConfig.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.baeldung.custom.config;
-
-import org.baeldung.custom.security.MyUserDetailsService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
-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.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.security.crypto.password.PasswordEncoder;
-
-@Configuration
-@EnableWebSecurity
-@ComponentScan("org.baeldung.security")
-public class SecurityConfig extends WebSecurityConfigurerAdapter {
-
- @Autowired
- private MyUserDetailsService userDetailsService;
-
- @Override
- protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
- auth.authenticationProvider(authenticationProvider());
- }
-
- @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()
- .and().csrf().disable();
- ;
- // @formatter:on
- }
-
- @Bean
- public DaoAuthenticationProvider authenticationProvider() {
- final DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
- authProvider.setUserDetailsService(userDetailsService);
- authProvider.setPasswordEncoder(encoder());
- return authProvider;
- }
-
- @Bean
- public PasswordEncoder encoder() {
- return new BCryptPasswordEncoder(11);
- }
-}
\ No newline at end of file
diff --git a/spring-security-mvc-boot/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-mvc-boot/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..2041249b71
--- /dev/null
+++ b/spring-security-mvc-boot/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.custom.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-mvc-boot/src/test/java/org/baeldung/web/CustomUserDetailsServiceIntegrationTest.java b/spring-security-mvc-boot/src/test/java/org/baeldung/web/CustomUserDetailsServiceIntegrationTest.java
deleted file mode 100644
index fb25175902..0000000000
--- a/spring-security-mvc-boot/src/test/java/org/baeldung/web/CustomUserDetailsServiceIntegrationTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.baeldung.web;
-
-import static org.junit.Assert.assertEquals;
-
-import org.baeldung.custom.Application;
-import org.baeldung.custom.config.MvcConfig;
-import org.baeldung.custom.config.SecurityConfig;
-import org.baeldung.custom.persistence.dao.UserRepository;
-import org.baeldung.custom.persistence.model.User;
-import org.junit.After;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.authentication.AuthenticationProvider;
-import org.springframework.security.authentication.BadCredentialsException;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.context.web.WebAppConfiguration;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@SpringBootTest(classes = {Application.class})
-@WebAppConfiguration
-public class CustomUserDetailsServiceIntegrationTest {
-
- private static final String USERNAME = "user";
- private static final String PASSWORD = "pass";
- private static final String USERNAME2 = "user2";
-
- @Autowired
- private UserRepository myUserRepository;
-
- @Autowired
- private AuthenticationProvider authenticationProvider;
-
- @Autowired
- private PasswordEncoder passwordEncoder;
-
- //
-
- @Test
- public void givenExistingUser_whenAuthenticate_thenRetrieveFromDb() {
- User user = new User();
- user.setUsername(USERNAME);
- user.setPassword(passwordEncoder.encode(PASSWORD));
-
- myUserRepository.save(user);
-
- UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(USERNAME, PASSWORD);
- Authentication authentication = authenticationProvider.authenticate(auth);
-
- assertEquals(authentication.getName(), USERNAME);
- }
-
- @Test(expected = BadCredentialsException.class)
- public void givenIncorrectUser_whenAuthenticate_thenBadCredentialsException() {
- User user = new User();
- user.setUsername(USERNAME);
- user.setPassword(passwordEncoder.encode(PASSWORD));
-
- myUserRepository.save(user);
-
- UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(USERNAME2, PASSWORD);
- authenticationProvider.authenticate(auth);
- }
-
- //
-
- @After
- public void tearDown() {
- myUserRepository.removeUserByUsername(USERNAME);
- }
-
-}
diff --git a/spring-security-mvc-custom/pom.xml b/spring-security-mvc-custom/pom.xml
index 4e932f3245..3bae514bc1 100644
--- a/spring-security-mvc-custom/pom.xml
+++ b/spring-security-mvc-custom/pom.xml
@@ -194,10 +194,8 @@
19.0
- 3.5
- 2.61.6.1
diff --git a/spring-security-mvc-session/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-security-mvc-custom/src/test/java/org/baeldung/SpringContextTest.java
similarity index 93%
rename from spring-security-mvc-session/src/test/java/org/baeldung/SpringContextIntegrationTest.java
rename to spring-security-mvc-custom/src/test/java/org/baeldung/SpringContextTest.java
index 9e74e83a53..5ee80d856a 100644
--- a/spring-security-mvc-session/src/test/java/org/baeldung/SpringContextIntegrationTest.java
+++ b/spring-security-mvc-custom/src/test/java/org/baeldung/SpringContextTest.java
@@ -11,7 +11,7 @@ import org.springframework.test.context.web.WebAppConfiguration;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { MvcConfig.class, SecSecurityConfig.class })
@WebAppConfiguration
-public class SpringContextIntegrationTest {
+public class SpringContextTest {
@Test
public void whenSpringContextIsBootstrapped_thenNoExceptions() {
diff --git a/spring-security-mvc-digest-auth/pom.xml b/spring-security-mvc-digest-auth/pom.xml
index cf1de1730d..0baaea15ef 100644
--- a/spring-security-mvc-digest-auth/pom.xml
+++ b/spring-security-mvc-digest-auth/pom.xml
@@ -196,13 +196,11 @@
19.0
- 3.54.4.54.5.2
- 2.61.6.1
diff --git a/spring-security-mvc-digest-auth/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-mvc-digest-auth/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..cd2b796308
--- /dev/null
+++ b/spring-security-mvc-digest-auth/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,20 @@
+package org.baeldung;
+
+import org.baeldung.spring.ClientConfig;
+import org.baeldung.spring.MvcConfig;
+import org.baeldung.spring.SecSecurityConfig;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { ClientConfig.class, MvcConfig.class, SecSecurityConfig.class })
+@WebAppConfiguration
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-mvc-jsonview/pom.xml b/spring-security-mvc-jsonview/pom.xml
index 8fa7b4ffb5..a7f668ae8b 100644
--- a/spring-security-mvc-jsonview/pom.xml
+++ b/spring-security-mvc-jsonview/pom.xml
@@ -111,7 +111,7 @@
javax.servletjavax.servlet-api
- ${javax.servlet.version}
+ ${javax.servlet-api.version}provided
@@ -206,12 +206,6 @@
-
- 3.1.0
- 1.2
-
-
- 2.61.6.12.4.0
diff --git a/spring-security-mvc-jsonview/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-mvc-jsonview/src/test/java/com/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..b1a3de714e
--- /dev/null
+++ b/spring-security-mvc-jsonview/src/test/java/com/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package com.baeldung;
+
+import com.baeldung.spring.AppConfig;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = AppConfig.class)
+@WebAppConfiguration
+public class SpringContextTest {
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-mvc-ldap/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-mvc-ldap/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..30ba7671d8
--- /dev/null
+++ b/spring-security-mvc-ldap/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,15 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SampleLDAPApplication.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-mvc-login/pom.xml b/spring-security-mvc-login/pom.xml
index 02ed0e36f2..1ca11bc1ab 100644
--- a/spring-security-mvc-login/pom.xml
+++ b/spring-security-mvc-login/pom.xml
@@ -175,7 +175,6 @@
- 2.61.6.1
diff --git a/spring-security-mvc-login/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-mvc-login/src/test/java/com/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..4cf3b736ea
--- /dev/null
+++ b/spring-security-mvc-login/src/test/java/com/baeldung/SpringContextTest.java
@@ -0,0 +1,16 @@
+package com.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration({ "/RedirectionWebSecurityConfig.xml", "/mvc-servlet.xml" })
+@WebAppConfiguration
+public class SpringContextTest {
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-mvc-persisted-remember-me/pom.xml b/spring-security-mvc-persisted-remember-me/pom.xml
index 5e987dcb77..2f7989d573 100644
--- a/spring-security-mvc-persisted-remember-me/pom.xml
+++ b/spring-security-mvc-persisted-remember-me/pom.xml
@@ -99,7 +99,7 @@
javax.servletjavax.servlet-api
- ${javax.servlet.version}
+ ${javax.servlet-api.version}provided
@@ -200,15 +200,10 @@
9.4.1212
-
- 3.1.0
- 1.2
-
19.0
- 2.61.6.11.5.10.RELEASE
diff --git a/spring-security-mvc-persisted-remember-me/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-mvc-persisted-remember-me/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..8113ed0fbe
--- /dev/null
+++ b/spring-security-mvc-persisted-remember-me/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,20 @@
+package org.baeldung;
+
+import org.baeldung.spring.MvcConfig;
+import org.baeldung.spring.PersistenceConfig;
+import org.baeldung.spring.SecurityConfig;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { MvcConfig.class, PersistenceConfig.class, SecurityConfig.class })
+@WebAppConfiguration
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-mvc-session/pom.xml b/spring-security-mvc-session/pom.xml
deleted file mode 100644
index c0e1527a24..0000000000
--- a/spring-security-mvc-session/pom.xml
+++ /dev/null
@@ -1,180 +0,0 @@
-
- 4.0.0
- com.baeldung
- spring-security-mvc-session
- 0.1-SNAPSHOT
- spring-security-mvc-session
- war
-
-
- com.baeldung
- parent-spring-4
- 0.0.1-SNAPSHOT
- ../parent-spring-4
-
-
-
-
-
-
-
- org.springframework.security
- spring-security-web
- ${org.springframework.security.version}
-
-
- org.springframework.security
- spring-security-config
- ${org.springframework.security.version}
-
-
- org.springframework.security
- spring-security-taglibs
- ${org.springframework.security.version}
-
-
-
-
-
- org.springframework
- spring-core
- ${spring.version}
-
-
- commons-logging
- commons-logging
-
-
-
-
- org.springframework
- spring-context
- ${spring.version}
-
-
- org.springframework
- spring-jdbc
- ${spring.version}
-
-
- org.springframework
- spring-beans
- ${spring.version}
-
-
- org.springframework
- spring-aop
- ${spring.version}
-
-
- org.springframework
- spring-tx
- ${spring.version}
-
-
- org.springframework
- spring-expression
- ${spring.version}
-
-
-
- org.springframework
- spring-web
- ${spring.version}
-
-
- org.springframework
- spring-webmvc
- ${spring.version}
-
-
-
-
-
- javax.servlet
- javax.servlet-api
- ${javax.servlet-api.version}
- provided
-
-
-
- javax.servlet
- jstl
- ${jstl.version}
- runtime
-
-
-
-
-
- com.codahale.metrics
- metrics-core
- ${codahale.metrics.version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- 1.5.10.RELEASE
- test
-
-
-
-
-
- spring-security-mvc-session
-
-
- src/main/resources
- true
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-war-plugin
- ${maven-war-plugin.version}
-
-
-
- org.codehaus.cargo
- cargo-maven2-plugin
- ${cargo-maven2-plugin.version}
-
- true
-
- jetty8x
- embedded
-
-
-
-
-
-
- 8082
-
-
-
-
-
-
-
-
-
-
-
- 4.2.6.RELEASE
-
-
- 3.0.2
-
-
- 2.6
- 1.6.1
-
-
-
\ No newline at end of file
diff --git a/spring-security-mvc-session/src/main/java/org/baeldung/spring/MvcConfig.java b/spring-security-mvc-session/src/main/java/org/baeldung/spring/MvcConfig.java
deleted file mode 100644
index 9e9c240181..0000000000
--- a/spring-security-mvc-session/src/main/java/org/baeldung/spring/MvcConfig.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.baeldung.spring;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.ViewResolver;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-import org.springframework.web.servlet.view.InternalResourceViewResolver;
-import org.springframework.web.servlet.view.JstlView;
-
-@EnableWebMvc
-@Configuration
-public class MvcConfig extends WebMvcConfigurerAdapter {
-
- public MvcConfig() {
- super();
- }
-
- // API
-
- @Override
- public void addViewControllers(final ViewControllerRegistry registry) {
- super.addViewControllers(registry);
-
- registry.addViewController("/anonymous.html");
-
- registry.addViewController("/login.html");
- registry.addViewController("/homepage.html");
- registry.addViewController("/sessionExpired.html");
- registry.addViewController("/invalidExpired.html");
- registry.addViewController("/console.html");
- }
-
- @Bean
- public ViewResolver viewResolver() {
- final InternalResourceViewResolver bean = new InternalResourceViewResolver();
-
- bean.setViewClass(JstlView.class);
- bean.setPrefix("/WEB-INF/view/");
- bean.setSuffix(".jsp");
-
- return bean;
- }
-}
\ No newline at end of file
diff --git a/spring-security-mvc-socket/pom.xml b/spring-security-mvc-socket/pom.xml
index f1d28355fd..f799a7fa9f 100644
--- a/spring-security-mvc-socket/pom.xml
+++ b/spring-security-mvc-socket/pom.xml
@@ -78,7 +78,7 @@
com.h2databaseh2
- ${h2database.version}
+ ${h2.version}
@@ -186,7 +186,6 @@
5.2.10.Final4.2.3.RELEASE1.11.3.RELEASE
- 1.4.1961.2.3
diff --git a/spring-security-mvc-socket/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-mvc-socket/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..7b9c738904
--- /dev/null
+++ b/spring-security-mvc-socket/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,24 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+import com.baeldung.springsecuredsockets.config.AppConfig;
+import com.baeldung.springsecuredsockets.config.DataStoreConfig;
+import com.baeldung.springsecuredsockets.config.SecurityConfig;
+import com.baeldung.springsecuredsockets.config.SocketBrokerConfig;
+import com.baeldung.springsecuredsockets.config.SocketSecurityConfig;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { AppConfig.class, DataStoreConfig.class, SecurityConfig.class,
+ SocketBrokerConfig.class, SocketSecurityConfig.class })
+@WebAppConfiguration
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-mvc/.gitignore b/spring-security-mvc/.gitignore
new file mode 100644
index 0000000000..83c05e60c8
--- /dev/null
+++ b/spring-security-mvc/.gitignore
@@ -0,0 +1,13 @@
+*.class
+
+#folders#
+/target
+/neoDb*
+/data
+/src/main/webapp/WEB-INF/classes
+*/META-INF/*
+
+# Packaged files #
+*.jar
+*.war
+*.ear
\ No newline at end of file
diff --git a/spring-security-mvc-session/README.md b/spring-security-mvc/README.md
similarity index 100%
rename from spring-security-mvc-session/README.md
rename to spring-security-mvc/README.md
diff --git a/spring-security-mvc/pom.xml b/spring-security-mvc/pom.xml
new file mode 100644
index 0000000000..98ad3daa46
--- /dev/null
+++ b/spring-security-mvc/pom.xml
@@ -0,0 +1,84 @@
+
+ 4.0.0
+ com.baeldung
+ spring-security-mvc
+ 0.1-SNAPSHOT
+ spring-security-mvc
+ jar
+
+
+ com.baeldung
+ parent-boot-2
+ 0.0.1-SNAPSHOT
+ ../parent-boot-2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+
+
+ org.springframework.security
+ spring-security-taglibs
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.apache.tomcat.embed
+ tomcat-embed-jasper
+ provided
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+
+
+
+ javax.servlet
+ jstl
+ runtime
+
+
+
+
+ io.dropwizard.metrics
+ metrics-core
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.security
+ spring-security-test
+ test
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ com.baeldung.SpringSessionApplication
+ JAR
+
+
+
+
+
+
diff --git a/spring-security-mvc/src/main/java/com/baeldung/SpringSessionApplication.java b/spring-security-mvc/src/main/java/com/baeldung/SpringSessionApplication.java
new file mode 100644
index 0000000000..c2a4b35df0
--- /dev/null
+++ b/spring-security-mvc/src/main/java/com/baeldung/SpringSessionApplication.java
@@ -0,0 +1,12 @@
+package com.baeldung;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class SpringSessionApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(SpringSessionApplication.class, args);
+ }
+}
diff --git a/spring-security-mvc-session/src/main/java/org/baeldung/monitoring/MetricRegistrySingleton.java b/spring-security-mvc/src/main/java/com/baeldung/monitoring/MetricRegistrySingleton.java
similarity index 95%
rename from spring-security-mvc-session/src/main/java/org/baeldung/monitoring/MetricRegistrySingleton.java
rename to spring-security-mvc/src/main/java/com/baeldung/monitoring/MetricRegistrySingleton.java
index ed253305ed..e2224996c2 100644
--- a/spring-security-mvc-session/src/main/java/org/baeldung/monitoring/MetricRegistrySingleton.java
+++ b/spring-security-mvc/src/main/java/com/baeldung/monitoring/MetricRegistrySingleton.java
@@ -1,4 +1,4 @@
-package org.baeldung.monitoring;
+package com.baeldung.monitoring;
import java.util.concurrent.TimeUnit;
diff --git a/spring-security-mvc-session/src/main/java/org/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java b/spring-security-mvc/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
similarity index 99%
rename from spring-security-mvc-session/src/main/java/org/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
rename to spring-security-mvc/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
index 19f49ea59d..9d4fc19098 100644
--- a/spring-security-mvc-session/src/main/java/org/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
+++ b/spring-security-mvc/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
@@ -1,4 +1,4 @@
-package org.baeldung.security;
+package com.baeldung.security;
import java.io.IOException;
import java.util.Collection;
diff --git a/spring-security-mvc-session/src/main/java/org/baeldung/security/SessionFilter.java b/spring-security-mvc/src/main/java/com/baeldung/security/SessionFilter.java
similarity index 97%
rename from spring-security-mvc-session/src/main/java/org/baeldung/security/SessionFilter.java
rename to spring-security-mvc/src/main/java/com/baeldung/security/SessionFilter.java
index d37d46e478..f4f876af9c 100644
--- a/spring-security-mvc-session/src/main/java/org/baeldung/security/SessionFilter.java
+++ b/spring-security-mvc/src/main/java/com/baeldung/security/SessionFilter.java
@@ -1,4 +1,4 @@
-package org.baeldung.security;
+package com.baeldung.security;
import java.io.IOException;
import java.util.Arrays;
diff --git a/spring-security-mvc/src/main/java/com/baeldung/spring/MvcConfig.java b/spring-security-mvc/src/main/java/com/baeldung/spring/MvcConfig.java
new file mode 100644
index 0000000000..38a4f3f81b
--- /dev/null
+++ b/spring-security-mvc/src/main/java/com/baeldung/spring/MvcConfig.java
@@ -0,0 +1,33 @@
+package com.baeldung.spring;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class MvcConfig implements WebMvcConfigurer {
+
+ @Override
+ public void addViewControllers(final ViewControllerRegistry registry) {
+ registry.addViewController("/anonymous.html");
+
+ registry.addViewController("/login.html");
+ registry.addViewController("/homepage.html");
+ registry.addViewController("/sessionExpired.html");
+ registry.addViewController("/invalidSession.html");
+ registry.addViewController("/console.html");
+ }
+
+
+ /*
+ * Spring Boot supports configuring a ViewResolver with properties
+ */
+// @Bean
+// public ViewResolver viewResolver() {
+// final InternalResourceViewResolver bean = new InternalResourceViewResolver();
+//
+// bean.setViewClass(JstlView.class);
+// bean.setPrefix("/WEB-INF/view/");
+// bean.setSuffix(".jsp");
+// }
+}
diff --git a/spring-security-mvc-session/src/main/java/org/baeldung/spring/SecSecurityConfig.java b/spring-security-mvc/src/main/java/com/baeldung/spring/SecSecurityConfig.java
similarity index 78%
rename from spring-security-mvc-session/src/main/java/org/baeldung/spring/SecSecurityConfig.java
rename to spring-security-mvc/src/main/java/com/baeldung/spring/SecSecurityConfig.java
index deeea78e4e..a922ba6f7f 100644
--- a/spring-security-mvc-session/src/main/java/org/baeldung/spring/SecSecurityConfig.java
+++ b/spring-security-mvc/src/main/java/com/baeldung/spring/SecSecurityConfig.java
@@ -1,19 +1,20 @@
-package org.baeldung.spring;
+package com.baeldung.spring;
-import org.baeldung.security.MySimpleUrlAuthenticationSuccessHandler;
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.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.config.http.SessionCreationPolicy;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
import org.springframework.security.web.session.HttpSessionEventPublisher;
+import com.baeldung.security.MySimpleUrlAuthenticationSuccessHandler;
+
@Configuration
// @ImportResource({ "classpath:webSecurityConfig.xml" })
-@EnableWebSecurity
public class SecSecurityConfig extends WebSecurityConfigurerAdapter {
public SecSecurityConfig() {
@@ -24,9 +25,9 @@ public class SecSecurityConfig extends WebSecurityConfigurerAdapter {
protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
// @formatter:off
auth.inMemoryAuthentication()
- .withUser("user1").password("user1Pass").roles("USER")
+ .withUser("user1").password(passwordEncoder().encode("user1Pass")).roles("USER")
.and()
- .withUser("admin1").password("admin1Pass").roles("ADMIN");
+ .withUser("admin1").password(passwordEncoder().encode("admin1Pass")).roles("ADMIN");
// @formatter:on
}
@@ -37,7 +38,7 @@ public class SecSecurityConfig extends WebSecurityConfigurerAdapter {
.csrf().disable()
.authorizeRequests()
.antMatchers("/anonymous*").anonymous()
- .antMatchers("/login*").permitAll()
+ .antMatchers("/login*","/invalidSession*", "/sessionExpired*").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
@@ -69,4 +70,9 @@ public class SecSecurityConfig extends WebSecurityConfigurerAdapter {
return new HttpSessionEventPublisher();
}
+ @Bean
+ public PasswordEncoder passwordEncoder() {
+ return new BCryptPasswordEncoder();
+ }
+
}
diff --git a/spring-security-mvc-session/src/main/java/org/baeldung/web/SessionListenerWithMetrics.java b/spring-security-mvc/src/main/java/com/baeldung/web/SessionListenerWithMetrics.java
similarity index 92%
rename from spring-security-mvc-session/src/main/java/org/baeldung/web/SessionListenerWithMetrics.java
rename to spring-security-mvc/src/main/java/com/baeldung/web/SessionListenerWithMetrics.java
index 46bf2708f7..fb1a81744e 100644
--- a/spring-security-mvc-session/src/main/java/org/baeldung/web/SessionListenerWithMetrics.java
+++ b/spring-security-mvc/src/main/java/com/baeldung/web/SessionListenerWithMetrics.java
@@ -1,12 +1,11 @@
-package org.baeldung.web;
+package com.baeldung.web;
import java.util.concurrent.atomic.AtomicInteger;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
-import org.baeldung.monitoring.MetricRegistrySingleton;
-
+import com.baeldung.monitoring.MetricRegistrySingleton;
import com.codahale.metrics.Counter;
public class SessionListenerWithMetrics implements HttpSessionListener {
diff --git a/spring-security-mvc/src/main/java/com/baeldung/web/SessionRestController.java b/spring-security-mvc/src/main/java/com/baeldung/web/SessionRestController.java
new file mode 100644
index 0000000000..1353ee25d0
--- /dev/null
+++ b/spring-security-mvc/src/main/java/com/baeldung/web/SessionRestController.java
@@ -0,0 +1,17 @@
+package com.baeldung.web;
+
+import javax.servlet.http.HttpSession;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class SessionRestController {
+
+ @GetMapping("/session-max-interval")
+ @ResponseBody
+ public String retrieveMaxSessionIncativeInterval(HttpSession session) {
+ return "Max Inactive Interval before Session expires: " + session.getMaxInactiveInterval();
+ }
+}
diff --git a/spring-security-mvc/src/main/resources/application.properties b/spring-security-mvc/src/main/resources/application.properties
new file mode 100644
index 0000000000..56b2b7b123
--- /dev/null
+++ b/spring-security-mvc/src/main/resources/application.properties
@@ -0,0 +1,8 @@
+server.servlet.session.timeout=65s
+
+spring.mvc.view.prefix=/WEB-INF/view/
+spring.mvc.view.suffix=.jsp
+
+## Secure Session Cookie configurations
+#server.servlet.session.cookie.http-only=true
+#server.servlet.session.cookie.secure=true
\ No newline at end of file
diff --git a/spring-security-mvc-session/src/main/resources/logback.xml b/spring-security-mvc/src/main/resources/logback.xml
similarity index 100%
rename from spring-security-mvc-session/src/main/resources/logback.xml
rename to spring-security-mvc/src/main/resources/logback.xml
diff --git a/spring-security-mvc-session/src/main/resources/webSecurityConfig.xml b/spring-security-mvc/src/main/resources/webSecurityConfig.xml
similarity index 97%
rename from spring-security-mvc-session/src/main/resources/webSecurityConfig.xml
rename to spring-security-mvc/src/main/resources/webSecurityConfig.xml
index e8aa2f76bc..42ff4c2186 100644
--- a/spring-security-mvc-session/src/main/resources/webSecurityConfig.xml
+++ b/spring-security-mvc/src/main/resources/webSecurityConfig.xml
@@ -2,9 +2,9 @@
diff --git a/spring-security-mvc-session/src/main/webapp/WEB-INF/mvc-servlet.xml b/spring-security-mvc/src/main/webapp/WEB-INF/mvc-servlet.xml
similarity index 100%
rename from spring-security-mvc-session/src/main/webapp/WEB-INF/mvc-servlet.xml
rename to spring-security-mvc/src/main/webapp/WEB-INF/mvc-servlet.xml
diff --git a/spring-security-mvc-session/src/main/webapp/WEB-INF/view/anonymous.jsp b/spring-security-mvc/src/main/webapp/WEB-INF/view/anonymous.jsp
similarity index 100%
rename from spring-security-mvc-session/src/main/webapp/WEB-INF/view/anonymous.jsp
rename to spring-security-mvc/src/main/webapp/WEB-INF/view/anonymous.jsp
diff --git a/spring-security-mvc-session/src/main/webapp/WEB-INF/view/console.jsp b/spring-security-mvc/src/main/webapp/WEB-INF/view/console.jsp
similarity index 100%
rename from spring-security-mvc-session/src/main/webapp/WEB-INF/view/console.jsp
rename to spring-security-mvc/src/main/webapp/WEB-INF/view/console.jsp
diff --git a/spring-security-mvc-session/src/main/webapp/WEB-INF/view/homepage.jsp b/spring-security-mvc/src/main/webapp/WEB-INF/view/homepage.jsp
similarity index 100%
rename from spring-security-mvc-session/src/main/webapp/WEB-INF/view/homepage.jsp
rename to spring-security-mvc/src/main/webapp/WEB-INF/view/homepage.jsp
diff --git a/spring-security-mvc-session/src/main/webapp/WEB-INF/view/invalidSession.jsp b/spring-security-mvc/src/main/webapp/WEB-INF/view/invalidSession.jsp
similarity index 100%
rename from spring-security-mvc-session/src/main/webapp/WEB-INF/view/invalidSession.jsp
rename to spring-security-mvc/src/main/webapp/WEB-INF/view/invalidSession.jsp
diff --git a/spring-security-mvc-session/src/main/webapp/WEB-INF/view/login.jsp b/spring-security-mvc/src/main/webapp/WEB-INF/view/login.jsp
similarity index 100%
rename from spring-security-mvc-session/src/main/webapp/WEB-INF/view/login.jsp
rename to spring-security-mvc/src/main/webapp/WEB-INF/view/login.jsp
diff --git a/spring-security-mvc-session/src/main/webapp/WEB-INF/view/sessionExpired.jsp b/spring-security-mvc/src/main/webapp/WEB-INF/view/sessionExpired.jsp
similarity index 100%
rename from spring-security-mvc-session/src/main/webapp/WEB-INF/view/sessionExpired.jsp
rename to spring-security-mvc/src/main/webapp/WEB-INF/view/sessionExpired.jsp
diff --git a/spring-security-mvc-session/src/main/webapp/WEB-INF/web.xml b/spring-security-mvc/src/main/webapp/WEB-INF/web.xml
similarity index 100%
rename from spring-security-mvc-session/src/main/webapp/WEB-INF/web.xml
rename to spring-security-mvc/src/main/webapp/WEB-INF/web.xml
diff --git a/spring-security-mvc/src/test/java/com/baeldung/SpringContextIntegrationTest.java b/spring-security-mvc/src/test/java/com/baeldung/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..8e53a6371a
--- /dev/null
+++ b/spring-security-mvc/src/test/java/com/baeldung/SpringContextIntegrationTest.java
@@ -0,0 +1,15 @@
+package com.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-mvc/src/test/java/com/baeldung/session/SessionConfigurationLiveTest.java b/spring-security-mvc/src/test/java/com/baeldung/session/SessionConfigurationLiveTest.java
new file mode 100644
index 0000000000..7d9a03d5f6
--- /dev/null
+++ b/spring-security-mvc/src/test/java/com/baeldung/session/SessionConfigurationLiveTest.java
@@ -0,0 +1,92 @@
+package com.baeldung.session;
+
+import static io.restassured.RestAssured.given;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.Optional;
+
+import org.junit.Test;
+import org.springframework.http.HttpStatus;
+
+import io.restassured.filter.session.SessionFilter;
+import io.restassured.response.Response;
+import io.restassured.specification.RequestSpecification;
+
+/**
+ * This Live Test requires the service to be up and running.
+ */
+public class SessionConfigurationLiveTest {
+
+ private static final String USER = "user1";
+ private static final String PASSWORD = "user1Pass";
+ private static final String SESSION_SVC_URL = "http://localhost:8080/session-max-interval";
+
+ @Test
+ public void givenValidUser_whenRequestResourceAfterSessionExpiration_thenRedirectedToInvalidSessionUri() throws Exception {
+ SessionFilter sessionFilter = new SessionFilter();
+ simpleSvcRequestLoggingIn(sessionFilter);
+ Response resp2 = simpleResponseRequestUsingSessionNotFollowingRedirects(sessionFilter);
+ assertThat(resp2.getStatusCode()).isEqualTo(HttpStatus.OK.value());
+ assertThat(resp2.getBody()
+ .asString()).isEqualTo("Max Inactive Interval before Session expires: 60");
+
+ // session will be expired in 60 seconds...
+ Thread.sleep(62000);
+ Response resp3 = simpleResponseRequestUsingSessionNotFollowingRedirects(sessionFilter);
+
+ assertThat(resp3.getStatusCode()).isEqualTo(HttpStatus.FOUND.value());
+ assertThat(resp3.getHeader("Location")).isEqualTo("http://localhost:8080/invalidSession.html");
+ }
+
+ @Test
+ public void givenValidUser_whenLoginMoreThanMaxValidSession_thenRedirectedToExpiredSessionUri() throws Exception {
+ SessionFilter sessionFilter = new SessionFilter();
+ simpleSvcRequestLoggingIn(sessionFilter);
+ simpleSvcRequestLoggingIn();
+
+ // this login will expire the first session
+ simpleSvcRequestLoggingIn();
+
+ // now try to access a resource using expired session
+ Response resp4 = given().filter(sessionFilter)
+ .and()
+ .redirects()
+ .follow(false)
+ .when()
+ .get(SESSION_SVC_URL);
+
+ assertThat(resp4.getStatusCode()).isEqualTo(HttpStatus.FOUND.value());
+ assertThat(resp4.getHeader("Location")).isEqualTo("http://localhost:8080/sessionExpired.html");
+ }
+
+ private static void simpleSvcRequestLoggingIn() {
+ simpleSvcRequestLoggingIn(null);
+ }
+
+ private static void simpleSvcRequestLoggingIn(SessionFilter sessionFilter) {
+ Response response = simpleResponseSvcRequestLoggingIn(Optional.ofNullable(sessionFilter));
+
+ assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK.value());
+ assertThat(response.getBody()
+ .asString()).isEqualTo("Max Inactive Interval before Session expires: 60");
+ }
+
+ private static Response simpleResponseSvcRequestLoggingIn(Optional sessionFilter) {
+ RequestSpecification spec = given().auth()
+ .form(USER, PASSWORD);
+ sessionFilter.ifPresent(filter -> spec.and()
+ .filter(filter));
+ return spec.when()
+ .get(SESSION_SVC_URL);
+ }
+
+ private static Response simpleResponseRequestUsingSessionNotFollowingRedirects(SessionFilter sessionFilter) {
+ return given().filter(sessionFilter)
+ .and()
+ .redirects()
+ .follow(false)
+ .when()
+ .get(SESSION_SVC_URL);
+ }
+
+}
diff --git a/spring-security-mvc/src/test/resources/.gitignore b/spring-security-mvc/src/test/resources/.gitignore
new file mode 100644
index 0000000000..83c05e60c8
--- /dev/null
+++ b/spring-security-mvc/src/test/resources/.gitignore
@@ -0,0 +1,13 @@
+*.class
+
+#folders#
+/target
+/neoDb*
+/data
+/src/main/webapp/WEB-INF/classes
+*/META-INF/*
+
+# Packaged files #
+*.jar
+*.war
+*.ear
\ No newline at end of file
diff --git a/spring-security-openid/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-openid/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..fa346b2b31
--- /dev/null
+++ b/spring-security-openid/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import org.baeldung.config.SpringOpenidApplication;
+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 = SpringOpenidApplication.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-react/pom.xml b/spring-security-react/pom.xml
index c7b7c85be8..40c284af7f 100644
--- a/spring-security-react/pom.xml
+++ b/spring-security-react/pom.xml
@@ -169,10 +169,8 @@
19.0
- 3.5
- 2.62.71.69.4.11.v20180605
diff --git a/spring-security-react/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-react/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..9cc52b4726
--- /dev/null
+++ b/spring-security-react/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.baeldung.spring.MvcConfig;
+import org.baeldung.spring.SecSecurityConfig;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { MvcConfig.class, SecSecurityConfig.class })
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-rest-basic-auth/pom.xml b/spring-security-rest-basic-auth/pom.xml
index 8a90247386..78bab83db5 100644
--- a/spring-security-rest-basic-auth/pom.xml
+++ b/spring-security-rest-basic-auth/pom.xml
@@ -279,7 +279,6 @@
19.0
- 2.61.6.1
diff --git a/spring-security-rest-basic-auth/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-rest-basic-auth/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..f54cbf3b7b
--- /dev/null
+++ b/spring-security-rest-basic-auth/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,15 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration({ "/webSecurityConfig.xml" })
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-rest-custom/pom.xml b/spring-security-rest-custom/pom.xml
index 2180b917e5..4bab9b9d95 100644
--- a/spring-security-rest-custom/pom.xml
+++ b/spring-security-rest-custom/pom.xml
@@ -206,7 +206,6 @@
19.0
- 3.51.2
diff --git a/spring-security-rest/pom.xml b/spring-security-rest/pom.xml
index af38c1ffef..a66909a68e 100644
--- a/spring-security-rest/pom.xml
+++ b/spring-security-rest/pom.xml
@@ -271,7 +271,6 @@
26.0-jre
- 3.51.3.2
diff --git a/spring-security-rest/src/main/java/org/baeldung/web/controller/CustomController.java b/spring-security-rest/src/main/java/org/baeldung/web/controller/CustomController.java
new file mode 100644
index 0000000000..7d40b9bb8d
--- /dev/null
+++ b/spring-security-rest/src/main/java/org/baeldung/web/controller/CustomController.java
@@ -0,0 +1,14 @@
+package org.baeldung.web.controller;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+@Controller
+public class CustomController {
+
+ @RequestMapping(value = "/custom", method = RequestMethod.POST)
+ public String custom() {
+ return "custom";
+ }
+}
\ No newline at end of file
diff --git a/spring-security-rest/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-rest/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..d984cf5c35
--- /dev/null
+++ b/spring-security-rest/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,20 @@
+package org.baeldung;
+
+import org.baeldung.spring.ClientWebConfig;
+import org.baeldung.spring.SecurityJavaConfig;
+import org.baeldung.spring.WebConfig;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@WebAppConfiguration
+@ContextConfiguration(classes = { ClientWebConfig.class, SecurityJavaConfig.class, WebConfig.class })
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-sso/spring-security-sso-auth-server/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-sso/spring-security-sso-auth-server/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..f677f683b2
--- /dev/null
+++ b/spring-security-sso/spring-security-sso-auth-server/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,18 @@
+package org.baeldung;
+
+import org.baeldung.config.AuthorizationServerApplication;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = AuthorizationServerApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
+public class SpringContextTest {
+
+ @Test
+ public void whenLoadApplication_thenSuccess() {
+
+ }
+}
diff --git a/spring-security-sso/spring-security-sso-ui-2/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-sso/spring-security-sso-ui-2/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..61a2a022ed
--- /dev/null
+++ b/spring-security-sso/spring-security-sso-ui-2/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,18 @@
+package org.baeldung;
+
+import org.baeldung.config.UiApplication;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = UiApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
+public class SpringContextTest {
+
+ @Test
+ public void whenLoadApplication_thenSuccess() {
+
+ }
+}
diff --git a/spring-security-sso/spring-security-sso-ui/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-sso/spring-security-sso-ui/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..61a2a022ed
--- /dev/null
+++ b/spring-security-sso/spring-security-sso-ui/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,18 @@
+package org.baeldung;
+
+import org.baeldung.config.UiApplication;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = UiApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
+public class SpringContextTest {
+
+ @Test
+ public void whenLoadApplication_thenSuccess() {
+
+ }
+}
diff --git a/spring-security-x509/spring-security-x509-basic-auth/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-x509/spring-security-x509-basic-auth/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..5c65dd3e8a
--- /dev/null
+++ b/spring-security-x509/spring-security-x509-basic-auth/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.spring.security.x509.X509AuthenticationServer;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = X509AuthenticationServer.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-security-x509/spring-security-x509-client-auth/src/test/java/org/baeldung/SpringContextTest.java b/spring-security-x509/spring-security-x509-client-auth/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..5c65dd3e8a
--- /dev/null
+++ b/spring-security-x509/spring-security-x509-client-auth/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.spring.security.x509.X509AuthenticationServer;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = X509AuthenticationServer.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-session/README.md b/spring-session/README.md
index 505d043e75..c9875beadf 100644
--- a/spring-session/README.md
+++ b/spring-session/README.md
@@ -5,3 +5,4 @@
### Relevant Articles:
- [Guide to Spring Session](https://www.baeldung.com/spring-session)
- [Spring Session with JDBC](https://www.baeldung.com/spring-session-jdbc)
+- [Spring Session with MongoDB](https://www.baeldung.com/spring-session-mongodb)
diff --git a/spring-session/spring-session-jdbc/src/test/java/org/baeldung/SpringContextTest.java b/spring-session/spring-session-jdbc/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..b69855ba38
--- /dev/null
+++ b/spring-session/spring-session-jdbc/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.springsessionjdbc.SpringSessionJdbcApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SpringSessionJdbcApplication.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-session/spring-session-mongodb/pom.xml b/spring-session/spring-session-mongodb/pom.xml
index 16fbaccc84..dc055ff32d 100644
--- a/spring-session/spring-session-mongodb/pom.xml
+++ b/spring-session/spring-session-mongodb/pom.xml
@@ -42,11 +42,6 @@
-
- 2.1.3.RELEASE
- 2.1.5.RELEASE
-
-
@@ -56,4 +51,9 @@
+
+ 2.1.3.RELEASE
+ 2.1.5.RELEASE
+
+
\ 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/SpringContextTest.java
new file mode 100644
index 0000000000..307d31a809
--- /dev/null
+++ b/spring-session/spring-session-mongodb/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,16 @@
+package org.baeldung;
+
+import com.baeldung.springsessionmongodb.SpringSessionMongoDBApplication;
+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 = SpringSessionMongoDBApplication.class)
+public class SpringContextTest {
+
+ @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/SpringContextTest.java
new file mode 100644
index 0000000000..994f93c24f
--- /dev/null
+++ b/spring-session/spring-session-redis/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.spring.session.SessionWebApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SessionWebApplication.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-sleuth/src/test/java/org/baeldung/SpringContextTest.java b/spring-sleuth/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..ff22398ca4
--- /dev/null
+++ b/spring-sleuth/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.spring.session.SleuthWebApp;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SleuthWebApp.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-soap/pom.xml b/spring-soap/pom.xml
index ba05eddf5d..e155a0f6b2 100644
--- a/spring-soap/pom.xml
+++ b/spring-soap/pom.xml
@@ -13,11 +13,6 @@
../parent-boot-2
-
- 1.8
- 2.1.2.RELEASE
-
-
@@ -66,4 +61,8 @@
+
+ 2.1.2.RELEASE
+
+
diff --git a/spring-social-login/pom.xml b/spring-social-login/pom.xml
index e948c908d4..655e885568 100644
--- a/spring-social-login/pom.xml
+++ b/spring-social-login/pom.xml
@@ -94,8 +94,4 @@
-
- 3.3.2
-
-
\ No newline at end of file
diff --git a/spring-social-login/src/test/java/org/baeldung/SpringContextTest.java b/spring-social-login/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..cfd8759c52
--- /dev/null
+++ b/spring-social-login/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,18 @@
+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.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class, webEnvironment = WebEnvironment.RANDOM_PORT)
+public class SpringContextTest {
+
+ @Test
+ public void whenLoadApplication_thenSuccess() {
+
+ }
+}
diff --git a/spring-spel/src/test/java/org/baeldung/SpringContextTest.java b/spring-spel/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..e25c1bf8e4
--- /dev/null
+++ b/spring-spel/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,15 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-state-machine/src/test/java/org/baeldung/SpringContextTest.java b/spring-state-machine/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..1e847c0d65
--- /dev/null
+++ b/spring-state-machine/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,23 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.baeldung.spring.statemachine.config.ForkJoinStateMachineConfiguration;
+import com.baeldung.spring.statemachine.config.HierarchicalStateMachineConfiguration;
+import com.baeldung.spring.statemachine.config.JunctionStateMachineConfiguration;
+import com.baeldung.spring.statemachine.config.SimpleEnumStateMachineConfiguration;
+import com.baeldung.spring.statemachine.config.SimpleStateMachineConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { SimpleStateMachineConfiguration.class, SimpleEnumStateMachineConfiguration.class,
+ JunctionStateMachineConfiguration.class, HierarchicalStateMachineConfiguration.class,
+ ForkJoinStateMachineConfiguration.class })
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-static-resources/README.md b/spring-static-resources/README.md
index c12e0272d4..64f017b5dd 100644
--- a/spring-static-resources/README.md
+++ b/spring-static-resources/README.md
@@ -2,3 +2,4 @@
- [Cachable Static Assets with Spring MVC](http://www.baeldung.com/cachable-static-assets-with-spring-mvc)
- [Minification of JS and CSS Assets with Maven](http://www.baeldung.com/maven-minification-of-js-and-css-assets)
- [Serve Static Resources with Spring](http://www.baeldung.com/spring-mvc-static-resources)
+- [Load a Resource as a String in Spring](https://www.baeldung.com/spring-load-resource-as-string)
diff --git a/spring-static-resources/pom.xml b/spring-static-resources/pom.xml
index 84519a37c1..b8068814ba 100644
--- a/spring-static-resources/pom.xml
+++ b/spring-static-resources/pom.xml
@@ -145,7 +145,7 @@
commons-iocommons-io
- ${commons.io.version}
+ ${commons-io.version}
@@ -215,9 +215,6 @@
1.5.1
-
-
- 2.5
\ No newline at end of file
diff --git a/spring-static-resources/src/test/java/com/baeldung/SpringContextTest.java b/spring-static-resources/src/test/java/com/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..0dcbba3221
--- /dev/null
+++ b/spring-static-resources/src/test/java/com/baeldung/SpringContextTest.java
@@ -0,0 +1,20 @@
+package com.baeldung;
+
+import org.baeldung.spring.SecSecurityConfig;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.support.AnnotationConfigContextLoader;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { SecSecurityConfig.class }, loader = AnnotationConfigContextLoader.class)
+@WebAppConfiguration
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+
+ }
+}
diff --git a/spring-swagger-codegen/spring-swagger-codegen-app/src/test/java/org/baeldung/SpringContextTest.java b/spring-swagger-codegen/spring-swagger-codegen-app/src/test/java/org/baeldung/SpringContextTest.java
new file mode 100644
index 0000000000..79b2b7fa88
--- /dev/null
+++ b/spring-swagger-codegen/spring-swagger-codegen-app/src/test/java/org/baeldung/SpringContextTest.java
@@ -0,0 +1,17 @@
+package org.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.petstore.app.PetStoreApplication;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = PetStoreApplication.class)
+public class SpringContextTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-thymeleaf-2/pom.xml b/spring-thymeleaf-2/pom.xml
index bc1147cb14..1b95cac43c 100644
--- a/spring-thymeleaf-2/pom.xml
+++ b/spring-thymeleaf-2/pom.xml
@@ -23,11 +23,6 @@
-
- 1.8
- 1.8
-
-
@@ -37,4 +32,9 @@
spring-thymeleaf-2
+
+
+ 1.8
+ 1.8
+
diff --git a/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/ThymeleafConfig.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/ThymeleafConfig.java
new file mode 100644
index 0000000000..2fd11628ad
--- /dev/null
+++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/ThymeleafConfig.java
@@ -0,0 +1,23 @@
+package com.baeldung.thymeleaf;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.thymeleaf.templatemode.TemplateMode;
+import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
+
+@Configuration
+public class ThymeleafConfig {
+
+ @Bean
+ public ClassLoaderTemplateResolver secondaryTemplateResolver() {
+ ClassLoaderTemplateResolver secondaryTemplateResolver = new ClassLoaderTemplateResolver();
+ secondaryTemplateResolver.setPrefix("templates-2/");
+ secondaryTemplateResolver.setSuffix(".html");
+ secondaryTemplateResolver.setTemplateMode(TemplateMode.HTML);
+ secondaryTemplateResolver.setCharacterEncoding("UTF-8");
+ secondaryTemplateResolver.setOrder(1);
+ secondaryTemplateResolver.setCheckExistence(true);
+
+ return secondaryTemplateResolver;
+ }
+}
diff --git a/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/templatedir/HelloController.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/templatedir/HelloController.java
new file mode 100644
index 0000000000..b404418106
--- /dev/null
+++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/templatedir/HelloController.java
@@ -0,0 +1,13 @@
+package com.baeldung.thymeleaf.templatedir;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+
+@Controller
+public class HelloController {
+
+ @GetMapping("/hello")
+ public String sayHello() {
+ return "hello";
+ }
+}
diff --git a/spring-thymeleaf-2/src/main/resources/application.properties b/spring-thymeleaf-2/src/main/resources/application.properties
new file mode 100644
index 0000000000..b09232bb1b
--- /dev/null
+++ b/spring-thymeleaf-2/src/main/resources/application.properties
@@ -0,0 +1 @@
+#spring.thymeleaf.prefix=classpath:/templates-2/
\ No newline at end of file
diff --git a/spring-thymeleaf-2/src/main/resources/templates-2/hello.html b/spring-thymeleaf-2/src/main/resources/templates-2/hello.html
new file mode 100644
index 0000000000..035904c8ba
--- /dev/null
+++ b/spring-thymeleaf-2/src/main/resources/templates-2/hello.html
@@ -0,0 +1,10 @@
+
+
+
+
+Enums in Thymeleaf
+
+
+
Hello from 'templates/templates-2'
+
+
\ No newline at end of file
diff --git a/spring-thymeleaf-2/src/main/resources/templates/enums/view.html b/spring-thymeleaf-2/src/main/resources/templates/enums/view.html
index 5f473886d6..f766f66277 100644
--- a/spring-thymeleaf-2/src/main/resources/templates/enums/view.html
+++ b/spring-thymeleaf-2/src/main/resources/templates/enums/view.html
@@ -5,26 +5,26 @@
Enums in Thymeleaf
-