From 0ed2149658fb1b03cf79d4c7dff436e424288940 Mon Sep 17 00:00:00 2001
From: Daniel Gerhardt <daniel.gerhardt@mni.thm.de>
Date: Tue, 5 Mar 2013 12:12:16 +0100
Subject: [PATCH] Added X-Deprecated-API HTTP header flag to URLs not
 conforming with the API specification. Changed StatisticsController to allow
 requests without a trailing slash to be consistent with the other
 **/statistics paths.

---
 .../AudienceQuestionController.java           |  4 ++++
 .../controller/FeedbackController.java        | 20 +++++++++++++++----
 .../LecturerQuestionController.java           | 14 +++++++++++++
 .../arsnova/controller/SessionController.java |  4 ++++
 .../controller/StatisticsController.java      | 17 ++++++++++------
 5 files changed, 49 insertions(+), 10 deletions(-)

diff --git a/src/main/java/de/thm/arsnova/controller/AudienceQuestionController.java b/src/main/java/de/thm/arsnova/controller/AudienceQuestionController.java
index 8dfc841e..deb90a82 100644
--- a/src/main/java/de/thm/arsnova/controller/AudienceQuestionController.java
+++ b/src/main/java/de/thm/arsnova/controller/AudienceQuestionController.java
@@ -56,6 +56,8 @@ public class AudienceQuestionController extends AbstractController {
 			@RequestParam final String sessionkey,
 			final HttpServletResponse response
 	) {
+		response.addHeader("X-Deprecated-API", "1");
+		
 		return questionService.getInterposedCount(sessionkey);
 	}
 
@@ -65,6 +67,8 @@ public class AudienceQuestionController extends AbstractController {
 			@RequestParam final String sessionkey,
 			final HttpServletResponse response
 	) {
+		response.addHeader("X-Deprecated-API", "1");
+		
 		return questionService.getInterposedReadingCount(sessionkey);
 	}
 
diff --git a/src/main/java/de/thm/arsnova/controller/FeedbackController.java b/src/main/java/de/thm/arsnova/controller/FeedbackController.java
index c1a4be8f..808368ce 100644
--- a/src/main/java/de/thm/arsnova/controller/FeedbackController.java
+++ b/src/main/java/de/thm/arsnova/controller/FeedbackController.java
@@ -51,7 +51,9 @@ public class FeedbackController extends AbstractController {
 
 	@RequestMapping(value = "/session/{sessionkey}/feedback", method = RequestMethod.GET)
 	@ResponseBody
-	public final Feedback getFeedback(@PathVariable final String sessionkey) {
+	public final Feedback getFeedback(@PathVariable final String sessionkey, final HttpServletResponse response) {
+		response.addHeader("X-Deprecated-API", "1");
+		
 		return feedbackService.getFeedback(sessionkey);
 	}
 
@@ -59,6 +61,8 @@ public class FeedbackController extends AbstractController {
 	@ResponseBody
 	public final Integer getMyFeedback(@PathVariable final String sessionkey, final HttpServletResponse response) {
 		Integer value = feedbackService.getMyFeedback(sessionkey, userService.getCurrentUser());
+		
+		response.addHeader("X-Deprecated-API", "1");
 
 		if (value != null && value >= Feedback.MIN_FEEDBACK_TYPE && value <= Feedback.MAX_FEEDBACK_TYPE) {
 			return value;
@@ -68,19 +72,25 @@ public class FeedbackController extends AbstractController {
 
 	@RequestMapping(value = "/session/{sessionkey}/feedbackcount", method = RequestMethod.GET)
 	@ResponseBody
-	public final int getFeedbackCount(@PathVariable final String sessionkey) {
+	public final int getFeedbackCount(@PathVariable final String sessionkey, final HttpServletResponse response) {
+		response.addHeader("X-Deprecated-API", "1");
+		
 		return feedbackService.getFeedbackCount(sessionkey);
 	}
 
 	@RequestMapping(value = "/session/{sessionkey}/roundedaveragefeedback", method = RequestMethod.GET)
 	@ResponseBody
-	public final long getAverageFeedbackRounded(@PathVariable final String sessionkey) {
+	public final long getAverageFeedbackRounded(@PathVariable final String sessionkey, final HttpServletResponse response) {
+		response.addHeader("X-Deprecated-API", "1");
+		
 		return feedbackService.getAverageFeedbackRounded(sessionkey);
 	}
 
 	@RequestMapping(value = "/session/{sessionkey}/averagefeedback", method = RequestMethod.GET)
 	@ResponseBody
-	public final double getAverageFeedback(@PathVariable final String sessionkey) {
+	public final double getAverageFeedback(@PathVariable final String sessionkey, final HttpServletResponse response) {
+		response.addHeader("X-Deprecated-API", "1");
+		
 		return feedbackService.getAverageFeedback(sessionkey);
 	}
 
@@ -92,6 +102,8 @@ public class FeedbackController extends AbstractController {
 			@RequestBody final int value,
 			final HttpServletResponse response
 	) {
+		response.addHeader("X-Deprecated-API", "1");
+		
 		User user = userService.getCurrentUser();
 		if (feedbackService.saveFeedback(sessionkey, value, user)) {
 			Feedback feedback = feedbackService.getFeedback(sessionkey);
diff --git a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java
index 281cc599..7c18c10c 100644
--- a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java
+++ b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java
@@ -149,6 +149,8 @@ public class LecturerQuestionController extends AbstractController {
 	@RequestMapping(value = "/count", method = RequestMethod.GET)
 	@ResponseBody
 	public final int getSkillQuestionCount(@RequestParam final String sessionkey, final HttpServletResponse response) {
+		response.addHeader("X-Deprecated-API", "1");
+		
 		return questionService.getSkillQuestionCount(sessionkey);
 	}
 
@@ -187,6 +189,9 @@ public class LecturerQuestionController extends AbstractController {
 		if (answers == null || answers.isEmpty()) {
 			throw new NoContentException();
 		}
+		
+		response.addHeader("X-Deprecated-API", "1");
+		
 		return answers;
 	}
 
@@ -216,6 +221,9 @@ public class LecturerQuestionController extends AbstractController {
 			response.setStatus(HttpStatus.NO_CONTENT.value());
 			return null;
 		}
+		
+		response.addHeader("X-Deprecated-API", "1");
+		
 		return answer;
 	}
 
@@ -308,6 +316,8 @@ public class LecturerQuestionController extends AbstractController {
 			@PathVariable final String questionId,
 			final HttpServletResponse response
 	) {
+		response.addHeader("X-Deprecated-API", "1");
+		
 		return questionService.getAnswerCount(questionId);
 	}
 
@@ -326,6 +336,8 @@ public class LecturerQuestionController extends AbstractController {
 			@RequestParam final String sessionkey,
 			final HttpServletResponse response
 	) {
+		response.addHeader("X-Deprecated-API", "1");
+		
 		return questionService.getMytAnswers(sessionkey);
 	}
 
@@ -335,6 +347,8 @@ public class LecturerQuestionController extends AbstractController {
 			@RequestParam final String sessionkey,
 			final HttpServletResponse response
 	) {
+		response.addHeader("X-Deprecated-API", "1");
+		
 		return questionService.getTotalAnswerCount(sessionkey);
 	}
 
diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java
index fdafc527..50639f5f 100644
--- a/src/main/java/de/thm/arsnova/controller/SessionController.java
+++ b/src/main/java/de/thm/arsnova/controller/SessionController.java
@@ -71,6 +71,8 @@ public class SessionController extends AbstractController {
 			@PathVariable final String sessionkey,
 			final HttpServletResponse response
 	) {
+		response.addHeader("X-Deprecated-API", "1");
+		
 		User user = userService.getCurrentUser();
 		LoggedIn loggedIn = sessionService.registerAsOnlineUser(user, sessionkey);
 		if (loggedIn != null) {
@@ -86,6 +88,8 @@ public class SessionController extends AbstractController {
 			@PathVariable final String sessionkey,
 			final HttpServletResponse response
 	) {
+		response.addHeader("X-Deprecated-API", "1");
+		
 		return sessionService.countActiveUsers(sessionkey);
 	}
 
diff --git a/src/main/java/de/thm/arsnova/controller/StatisticsController.java b/src/main/java/de/thm/arsnova/controller/StatisticsController.java
index 09317972..38b99a40 100644
--- a/src/main/java/de/thm/arsnova/controller/StatisticsController.java
+++ b/src/main/java/de/thm/arsnova/controller/StatisticsController.java
@@ -1,5 +1,7 @@
 package de.thm.arsnova.controller;
 
+import javax.servlet.http.HttpServletResponse;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -10,27 +12,30 @@ import de.thm.arsnova.entities.Statistics;
 import de.thm.arsnova.services.IStatisticsService;
 
 @Controller
-@RequestMapping("/statistics")
 public class StatisticsController {
 
 	@Autowired
 	private IStatisticsService statisticsService;
 
-	@RequestMapping(method = RequestMethod.GET, value = "/")
+	@RequestMapping(method = RequestMethod.GET, value = "/statistics")
 	@ResponseBody
 	public final Statistics getStatistics() {
 		return statisticsService.getStatistics();
 	}
 
-	@RequestMapping(method = RequestMethod.GET, value = "/activeusercount", produces = "text/plain")
+	@RequestMapping(method = RequestMethod.GET, value = "/statistics/activeusercount", produces = "text/plain")
 	@ResponseBody
-	public final String countActiveUsers() {
+	public final String countActiveUsers(HttpServletResponse response) {
+		response.addHeader("X-Deprecated-API", "1");
+		
 		return Integer.toString(statisticsService.countActiveUsers());
 	}
 
-	@RequestMapping(method = RequestMethod.GET, value = "/sessioncount", produces = "text/plain")
+	@RequestMapping(method = RequestMethod.GET, value = "/statistics/sessioncount", produces = "text/plain")
 	@ResponseBody
-	public final String countSessions() {
+	public final String countSessions(HttpServletResponse response) {
+		response.addHeader("X-Deprecated-API", "1");
+		
 		return Integer.toString(statisticsService.getStatistics().getOpenSessions()
 				+ statisticsService.getStatistics().getClosedSessions());
 	}
-- 
GitLab