From cb45cf97591f37fbd3f8ea02c4ceec31dc6b29c0 Mon Sep 17 00:00:00 2001 From: Daniel Gerhardt <daniel.gerhardt@mni.thm.de> Date: Wed, 13 Feb 2013 11:56:35 +0100 Subject: [PATCH] API-Changes (QuestionByAudienceController): Removed sessionKey from routes if it is not needed. Changed sessionKey from PathVariable to RequestParam if still needed. /session/{sessionKey}/question/* => /question/byaudience/* Added redirections for legacy routes to LegacyController. --- .../arsnova/controller/LegacyController.java | 53 +++++++++++++++++++ .../QuestionByAudienceController.java | 33 ++++++------ .../arsnova/services/IQuestionService.java | 2 +- .../thm/arsnova/services/QuestionService.java | 7 +-- 4 files changed, 73 insertions(+), 22 deletions(-) diff --git a/src/main/java/de/thm/arsnova/controller/LegacyController.java b/src/main/java/de/thm/arsnova/controller/LegacyController.java index a256b77e8..dbb5e1160 100644 --- a/src/main/java/de/thm/arsnova/controller/LegacyController.java +++ b/src/main/java/de/thm/arsnova/controller/LegacyController.java @@ -92,6 +92,36 @@ public class LegacyController extends AbstractController { return String.format("forward:/question/bylecturer/myanswers?sessionkey=%s", sessionKey); } + + @RequestMapping(value = "/session/{sessionKey}/interposed") + public final String redirectQuestionByAudience( + @PathVariable final String sessionKey, + final HttpServletResponse response + ) { + response.addHeader("X-Deprecated-API", "1"); + + return String.format("forward:/question/byaudience/?sessionkey=%s", sessionKey); + } + + @RequestMapping(value = "/session/{sessionKey}/interposedcount") + public final String redirectQuestionByAudienceCount( + @PathVariable final String sessionKey, + final HttpServletResponse response + ) { + response.addHeader("X-Deprecated-API", "1"); + + return String.format("forward:/question/byaudience/count?sessionkey=%s", sessionKey); + } + + @RequestMapping(value = "/session/{sessionKey}/interposedreadingcount") + public final String redirectQuestionByAudienceReadCount( + @PathVariable final String sessionKey, + final HttpServletResponse response + ) { + response.addHeader("X-Deprecated-API", "1"); + + return String.format("forward:/question/byaudience/readcount?sessionkey=%s", sessionKey); + } /* generalized routes */ @@ -118,4 +148,27 @@ public class LegacyController extends AbstractController { return String.format("forward:/question/bylecturer/%s/%s?sessionkey=%s", arg1, arg2, sessionKey); } + @RequestMapping(value = "/session/{sessionKey}/interposed/{arg1}") + public final String redirectQuestionByAudienceWithOneArgument( + @PathVariable final String sessionKey, + @PathVariable final String arg1, + final HttpServletResponse response + ) { + response.addHeader("X-Deprecated-API", "1"); + + return String.format("forward:/question/byaudience/%s?sessionkey=%s", arg1, sessionKey); + } + + @RequestMapping(value = "/session/{sessionKey}/interposed/{arg1}/{arg2}") + public final String redirectQuestionByAudienceWithTwoArguments( + @PathVariable final String sessionKey, + @PathVariable final String arg1, + @PathVariable final String arg2, + final HttpServletResponse response + ) { + response.addHeader("X-Deprecated-API", "1"); + + return String.format("forward:/question/byaudience/%s/%s?sessionkey=%s", arg1, arg2, sessionKey); + } + } diff --git a/src/main/java/de/thm/arsnova/controller/QuestionByAudienceController.java b/src/main/java/de/thm/arsnova/controller/QuestionByAudienceController.java index 8001f67dc..78864ea2f 100644 --- a/src/main/java/de/thm/arsnova/controller/QuestionByAudienceController.java +++ b/src/main/java/de/thm/arsnova/controller/QuestionByAudienceController.java @@ -31,6 +31,7 @@ import org.springframework.web.bind.annotation.PathVariable; 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 de.thm.arsnova.entities.InterposedQuestion; @@ -38,6 +39,7 @@ import de.thm.arsnova.entities.InterposedReadingCount; import de.thm.arsnova.services.IQuestionService; @Controller +@RequestMapping("/question/byaudience") public class QuestionByAudienceController extends AbstractController { public static final Logger LOGGER = LoggerFactory.getLogger(QuestionByAudienceController.class); @@ -45,47 +47,47 @@ public class QuestionByAudienceController extends AbstractController { @Autowired private IQuestionService questionService; - @RequestMapping(value = "/session/{sessionKey}/interposedcount", method = RequestMethod.GET) + @RequestMapping(value = "/count", method = RequestMethod.GET) @ResponseBody public final int getInterposedCount( - @PathVariable final String sessionKey, + @RequestParam final String sessionkey, final HttpServletResponse response ) { - return questionService.getInterposedCount(sessionKey); + return questionService.getInterposedCount(sessionkey); } - @RequestMapping(value = "/session/{sessionKey}/interposedreadingcount", method = RequestMethod.GET) + @RequestMapping(value = "/readcount", method = RequestMethod.GET) @ResponseBody public final InterposedReadingCount getUnreadInterposedCount( - @PathVariable final String sessionKey, + @RequestParam final String sessionkey, final HttpServletResponse response ) { - return questionService.getInterposedReadingCount(sessionKey); + return questionService.getInterposedReadingCount(sessionkey); } - @RequestMapping(value = "/session/{sessionKey}/interposed", method = RequestMethod.GET) + @RequestMapping(value = "/", method = RequestMethod.GET) @ResponseBody public final List<InterposedQuestion> getInterposedQuestions( - @PathVariable final String sessionKey, + @RequestParam final String sessionkey, final HttpServletResponse response ) { - return questionService.getInterposedQuestions(sessionKey); + return questionService.getInterposedQuestions(sessionkey); } - @RequestMapping(value = "/session/{sessionKey}/interposed/{questionId}", method = RequestMethod.GET) + @RequestMapping(value = "/{questionId}", method = RequestMethod.GET) @ResponseBody public final InterposedQuestion getInterposedQuestions( - @PathVariable final String sessionKey, + @RequestParam final String sessionkey, @PathVariable final String questionId, final HttpServletResponse response ) { - return questionService.readInterposedQuestion(sessionKey, questionId); + return questionService.readInterposedQuestion(questionId); } - @RequestMapping(value = "/session/{sessionkey}/interposed", method = RequestMethod.POST) + @RequestMapping(value = "/", method = RequestMethod.POST) @ResponseBody public final void postInterposedQuestion( - @PathVariable final String sessionkey, + @RequestParam final String sessionkey, @RequestBody final InterposedQuestion question, final HttpServletResponse response ) { @@ -103,10 +105,9 @@ public class QuestionByAudienceController extends AbstractController { return; } - @RequestMapping(value = "/session/{sessionkey}/interposed/{questionId}", method = RequestMethod.DELETE) + @RequestMapping(value = "/{questionId}", method = RequestMethod.DELETE) @ResponseBody public final void deleteInterposedQuestion( - @PathVariable final String sessionkey, @PathVariable final String questionId, final HttpServletResponse response ) { diff --git a/src/main/java/de/thm/arsnova/services/IQuestionService.java b/src/main/java/de/thm/arsnova/services/IQuestionService.java index 61d52d732..f9e10c261 100644 --- a/src/main/java/de/thm/arsnova/services/IQuestionService.java +++ b/src/main/java/de/thm/arsnova/services/IQuestionService.java @@ -61,6 +61,6 @@ public interface IQuestionService { List<InterposedQuestion> getInterposedQuestions(String sessionKey); - InterposedQuestion readInterposedQuestion(String sessionKey, String questionId); + InterposedQuestion readInterposedQuestion(String questionId); } diff --git a/src/main/java/de/thm/arsnova/services/QuestionService.java b/src/main/java/de/thm/arsnova/services/QuestionService.java index 03805a373..92f055b49 100644 --- a/src/main/java/de/thm/arsnova/services/QuestionService.java +++ b/src/main/java/de/thm/arsnova/services/QuestionService.java @@ -178,13 +178,10 @@ public class QuestionService implements IQuestionService { @Override @Authenticated - public InterposedQuestion readInterposedQuestion(String sessionKey, String questionId) { + public InterposedQuestion readInterposedQuestion(String questionId) { try { InterposedQuestion question = databaseDao.getInterposedQuestion(questionId); - Session session = this.databaseDao.getSessionFromKeyword(sessionKey); - if (session == null || !session.getKeyword().equals(question.getSessionId())) { - throw new NotFoundException(); - } + Session session = this.databaseDao.getSessionFromKeyword(question.getSessionId()); User user = this.userService.getCurrentUser(); if (session.isCreator(user)) { -- GitLab