From 6cd8a4dfa6f1122933037bb4e63ac850f9aba9cb Mon Sep 17 00:00:00 2001
From: Daniel Gerhardt <code@z.dgerhardt.net>
Date: Tue, 2 May 2017 19:09:20 +0200
Subject: [PATCH] Throw and handle NoHandlerFoundException for unmapped paths

---
 src/main/java/de/thm/arsnova/config/AppConfig.java        | 1 -
 .../arsnova/controller/ControllerExceptionHandler.java    | 8 ++++++++
 src/main/webapp/WEB-INF/web.xml                           | 4 ++++
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/main/java/de/thm/arsnova/config/AppConfig.java b/src/main/java/de/thm/arsnova/config/AppConfig.java
index 767331d9..0a414d26 100644
--- a/src/main/java/de/thm/arsnova/config/AppConfig.java
+++ b/src/main/java/de/thm/arsnova/config/AppConfig.java
@@ -139,7 +139,6 @@ public class AppConfig extends WebMvcConfigurerAdapter {
 	@Override
 	public void addResourceHandlers(ResourceHandlerRegistry registry) {
 		registry.addResourceHandler("swagger.json").addResourceLocations("classpath:/");
-		registry.addResourceHandler("/**").addResourceLocations("/");
 	}
 
 	@Bean
diff --git a/src/main/java/de/thm/arsnova/controller/ControllerExceptionHandler.java b/src/main/java/de/thm/arsnova/controller/ControllerExceptionHandler.java
index 9e91b10a..8358bc6f 100644
--- a/src/main/java/de/thm/arsnova/controller/ControllerExceptionHandler.java
+++ b/src/main/java/de/thm/arsnova/controller/ControllerExceptionHandler.java
@@ -37,6 +37,7 @@ import org.springframework.web.bind.annotation.ControllerAdvice;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.servlet.NoHandlerFoundException;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -54,6 +55,13 @@ public class ControllerExceptionHandler extends AbstractControllerExceptionHandl
 		return handleException(e, Level.TRACE);
 	}
 
+	@ExceptionHandler(NoHandlerFoundException.class)
+	@ResponseBody
+	@ResponseStatus(HttpStatus.NOT_FOUND)
+	public Map<String, Object> handleNoHandlerFoundException(final Exception e, final HttpServletRequest request) {
+		return handleException(e, Level.TRACE);
+	}
+
 	@ExceptionHandler(NotFoundException.class)
 	@ResponseBody
 	@ResponseStatus(HttpStatus.NOT_FOUND)
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index 097b6fd5..4e7f0b83 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -21,6 +21,10 @@
 	<servlet>
 		<servlet-name>arsnova</servlet-name>
 		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+		<init-param>
+			<param-name>throwExceptionIfNoHandlerFound</param-name>
+			<param-value>true</param-value>
+		</init-param>
 		<load-on-startup>1</load-on-startup>
 		<async-supported>true</async-supported>
 	</servlet>
-- 
GitLab