From 2f1d4eb8e94a35cae7859e40af866683176786f1 Mon Sep 17 00:00:00 2001 From: Daniel Gerhardt <daniel.gerhardt@mni.thm.de> Date: Tue, 19 Feb 2013 17:08:27 +0100 Subject: [PATCH] API-Changes: /questionbylecturer/* => [/session/{sessionKey}]/lecturerquestion/* /questionbyaudience/* => [/session/{sessionKey}]/audiencequestion/* --- .../arsnova/controller/LegacyController.java | 30 ++--- .../QuestionByAudienceController.java | 2 +- .../QuestionByLecturerController.java | 19 +-- .../arsnova/controller/SessionController.java | 108 +++++++++++++++++- 4 files changed, 131 insertions(+), 28 deletions(-) diff --git a/src/main/java/de/thm/arsnova/controller/LegacyController.java b/src/main/java/de/thm/arsnova/controller/LegacyController.java index 5a7a9b8e..fb9556aa 100644 --- a/src/main/java/de/thm/arsnova/controller/LegacyController.java +++ b/src/main/java/de/thm/arsnova/controller/LegacyController.java @@ -40,7 +40,7 @@ public class LegacyController extends AbstractController { ) { response.addHeader("X-Deprecated-API", "1"); - return "forward:/session/?filter=owned"; + return "forward:/session/?ownedonly=true"; } @RequestMapping(value = "/session/visitedsessions", method = RequestMethod.GET) @@ -49,7 +49,7 @@ public class LegacyController extends AbstractController { ) { response.addHeader("X-Deprecated-API", "1"); - return "forward:/session/?filter=visited"; + return "forward:/session/?visitedonly=true"; } @RequestMapping(value = "/session/{sessionKey}/question") @@ -58,7 +58,7 @@ public class LegacyController extends AbstractController { final HttpServletResponse response ) { response.addHeader("X-Deprecated-API", "1"); - return String.format("forward:/question/bylecturer/?sessionkey=%s", sessionKey); + return String.format("forward:/lecturerquestion/?sessionkey=%s", sessionKey); } @RequestMapping(value = "/session/{sessionKey}/skillquestions", method = RequestMethod.GET) @@ -67,7 +67,7 @@ public class LegacyController extends AbstractController { final HttpServletResponse response ) { response.addHeader("X-Deprecated-API", "1"); - return String.format("forward:/question/bylecturer/list?sessionkey=%s", sessionKey); + return String.format("forward:/lecturerquestion/?sessionkey=%s", sessionKey); } @RequestMapping(value = "/session/{sessionKey}/skillquestioncount", method = RequestMethod.GET) @@ -76,7 +76,7 @@ public class LegacyController extends AbstractController { final HttpServletResponse response ) { response.addHeader("X-Deprecated-API", "1"); - return String.format("forward:/question/bylecturer/count?sessionkey=%s", sessionKey); + return String.format("forward:/lecturerquestion/count?sessionkey=%s", sessionKey); } @RequestMapping(value = "/session/{sessionKey}/answercount", method = RequestMethod.GET) @@ -85,7 +85,7 @@ public class LegacyController extends AbstractController { final HttpServletResponse response ) { response.addHeader("X-Deprecated-API", "1"); - return String.format("forward:/question/bylecturer/answercount?sessionkey=%s", sessionKey); + return String.format("forward:/lecturerquestion/answercount?sessionkey=%s", sessionKey); } @RequestMapping(value = "/session/{sessionKey}/unanswered", method = RequestMethod.GET) @@ -94,7 +94,7 @@ public class LegacyController extends AbstractController { final HttpServletResponse response ) { response.addHeader("X-Deprecated-API", "1"); - return String.format("forward:/question/bylecturer/answercount?sessionkey=%s", sessionKey); + return String.format("forward:/lecturerquestion/answercount?sessionkey=%s", sessionKey); } @RequestMapping(value = "/session/{sessionKey}/myanswers", method = RequestMethod.GET) @@ -103,7 +103,7 @@ public class LegacyController extends AbstractController { final HttpServletResponse response ) { response.addHeader("X-Deprecated-API", "1"); - return String.format("forward:/question/bylecturer/myanswers?sessionkey=%s", sessionKey); + return String.format("forward:/lecturerquestion/myanswers?sessionkey=%s", sessionKey); } @RequestMapping(value = "/session/{sessionKey}/interposed") @@ -112,7 +112,7 @@ public class LegacyController extends AbstractController { final HttpServletResponse response ) { response.addHeader("X-Deprecated-API", "1"); - return String.format("forward:/question/byaudience/?sessionkey=%s", sessionKey); + return String.format("forward:/audiencequestion/?sessionkey=%s", sessionKey); } @RequestMapping(value = "/session/{sessionKey}/interposedcount", method = RequestMethod.GET) @@ -121,7 +121,7 @@ public class LegacyController extends AbstractController { final HttpServletResponse response ) { response.addHeader("X-Deprecated-API", "1"); - return String.format("forward:/question/byaudience/count?sessionkey=%s", sessionKey); + return String.format("forward:/audiencequestion/count?sessionkey=%s", sessionKey); } @RequestMapping(value = "/session/{sessionKey}/interposedreadingcount", method = RequestMethod.GET) @@ -130,7 +130,7 @@ public class LegacyController extends AbstractController { final HttpServletResponse response ) { response.addHeader("X-Deprecated-API", "1"); - return String.format("forward:/question/byaudience/readcount?sessionkey=%s", sessionKey); + return String.format("forward:/audiencequestion/readcount?sessionkey=%s", sessionKey); } /* generalized routes */ @@ -142,7 +142,7 @@ public class LegacyController extends AbstractController { final HttpServletResponse response ) { response.addHeader("X-Deprecated-API", "1"); - return String.format("forward:/question/bylecturer/%s?sessionkey=%s", arg1, sessionKey); + return String.format("forward:/lecturerquestion/%s/?sessionkey=%s", arg1, sessionKey); } @RequestMapping( @@ -155,7 +155,7 @@ public class LegacyController extends AbstractController { final HttpServletResponse response ) { response.addHeader("X-Deprecated-API", "1"); - return String.format("forward:/question/bylecturer/%s/%s?sessionkey=%s", arg1, arg2, sessionKey); + return String.format("forward:/lecturerquestion/%s/%s/?sessionkey=%s", arg1, arg2, sessionKey); } @RequestMapping(value = "/session/{sessionKey}/interposed/{arg1}") @@ -165,7 +165,7 @@ public class LegacyController extends AbstractController { final HttpServletResponse response ) { response.addHeader("X-Deprecated-API", "1"); - return String.format("forward:/question/byaudience/%s?sessionkey=%s", arg1, sessionKey); + return String.format("forward:/audiencequestion/%s/?sessionkey=%s", arg1, sessionKey); } @RequestMapping(value = "/session/{sessionKey}/interposed/{arg1}/{arg2}") @@ -176,7 +176,7 @@ public class LegacyController extends AbstractController { final HttpServletResponse response ) { response.addHeader("X-Deprecated-API", "1"); - return String.format("forward:/question/byaudience/%s/%s?sessionkey=%s", arg1, arg2, sessionKey); + return String.format("forward:/audiencequestion/%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 98eb60d9..2490a062 100644 --- a/src/main/java/de/thm/arsnova/controller/QuestionByAudienceController.java +++ b/src/main/java/de/thm/arsnova/controller/QuestionByAudienceController.java @@ -42,7 +42,7 @@ import de.thm.arsnova.exceptions.PreconditionFailedException; import de.thm.arsnova.services.IQuestionService; @Controller -@RequestMapping("/question/byaudience") +@RequestMapping("/audiencequestion") public class QuestionByAudienceController extends AbstractController { public static final Logger LOGGER = LoggerFactory.getLogger(QuestionByAudienceController.class); diff --git a/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java b/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java index 31fb13df..7a6c1be4 100644 --- a/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java +++ b/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java @@ -44,7 +44,7 @@ import de.thm.arsnova.exceptions.NotFoundException; import de.thm.arsnova.services.IQuestionService; @Controller -@RequestMapping("/question/bylecturer") +@RequestMapping("/lecturerquestion") public class QuestionByLecturerController extends AbstractController { public static final Logger LOGGER = LoggerFactory.getLogger(QuestionByLecturerController.class); @@ -129,7 +129,7 @@ public class QuestionByLecturerController extends AbstractController { } @RequestMapping( - value = { "/list" }, + value = { "/" }, method = RequestMethod.GET ) @ResponseBody @@ -139,7 +139,9 @@ public class QuestionByLecturerController extends AbstractController { ) { List<Question> questions = questionService.getSkillQuestions(sessionkey); if (questions == null || questions.isEmpty()) { - throw new NotFoundException(); + response.setStatus(HttpStatus.NO_CONTENT.value()); + + return null; } return questions; } @@ -150,6 +152,8 @@ public class QuestionByLecturerController extends AbstractController { return questionService.getSkillQuestionCount(sessionkey); } + /* + * TODO: is this used anywhere? @RequestMapping(value = "/ids", method = RequestMethod.GET) @ResponseBody public final List<String> getQuestionIds( @@ -162,6 +166,7 @@ public class QuestionByLecturerController extends AbstractController { } return questions; } + */ @RequestMapping(value = "/{questionId}", method = RequestMethod.DELETE) @ResponseBody @@ -231,7 +236,7 @@ public class QuestionByLecturerController extends AbstractController { * @throws ForbiddenException * if not logged in */ - @RequestMapping(value = "/{questionId}/answers", method = RequestMethod.GET) + @RequestMapping(value = "/{questionId}/answer/", method = RequestMethod.GET) @ResponseBody public final List<Answer> getAnswers( @PathVariable final String questionId, @@ -244,7 +249,7 @@ public class QuestionByLecturerController extends AbstractController { return answers; } - @RequestMapping(value = "/{questionId}/answer", method = RequestMethod.POST) + @RequestMapping(value = "/{questionId}/answer/", method = RequestMethod.POST) @ResponseBody public final Answer saveAnswer( @PathVariable final String questionId, @@ -275,7 +280,7 @@ public class QuestionByLecturerController extends AbstractController { questionService.deleteAnswer(questionId, answerId); } - @RequestMapping(value = "/{questionId}/answers", method = RequestMethod.DELETE) + @RequestMapping(value = "/{questionId}/answer/", method = RequestMethod.DELETE) @ResponseBody public final void deleteAnswers( @PathVariable final String questionId, @@ -306,7 +311,7 @@ public class QuestionByLecturerController extends AbstractController { return questionService.getAnswerCount(questionId); } - @RequestMapping(value = "/{questionId}/freetextanswers", method = RequestMethod.GET) + @RequestMapping(value = "/{questionId}/freetextanswer/", method = RequestMethod.GET) @ResponseBody public final List<Answer> getFreetextAnswers( @PathVariable final String questionId, diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java index 5120bd8e..60ff3f7b 100644 --- a/src/main/java/de/thm/arsnova/controller/SessionController.java +++ b/src/main/java/de/thm/arsnova/controller/SessionController.java @@ -38,8 +38,6 @@ import org.springframework.web.bind.annotation.ResponseStatus; import de.thm.arsnova.entities.LoggedIn; import de.thm.arsnova.entities.Session; import de.thm.arsnova.entities.User; -import de.thm.arsnova.exceptions.NoContentException; -import de.thm.arsnova.exceptions.NotFoundException; import de.thm.arsnova.services.ISessionService; import de.thm.arsnova.services.IUserService; @@ -102,7 +100,8 @@ public class SessionController extends AbstractController { @RequestMapping(value = "/", method = RequestMethod.GET) @ResponseBody public final List<Session> getSessions( - @RequestParam final String filter, + @RequestParam(value = "ownedonly", defaultValue = "false") final boolean ownedOnly, + @RequestParam(value = "visitedonly", defaultValue = "false") final boolean visitedOnly, final HttpServletResponse response ) { User user = userService.getCurrentUser(); @@ -115,10 +114,15 @@ public class SessionController extends AbstractController { return null; } - if ("owned".equals(filter)) { + /* TODO: implement all parameter combinations, implement use of user parameter */ + if (ownedOnly && !visitedOnly) { sessions = sessionService.getMySessions(user); - } else if ("visited".equals(filter)) { + } else if (visitedOnly && !ownedOnly) { sessions = sessionService.getMyVisitedSessions(userService.getCurrentUser()); + } else { + response.setStatus(HttpStatus.NOT_IMPLEMENTED.value()); + + return null; } if (sessions == null || sessions.isEmpty()) { @@ -127,4 +131,98 @@ public class SessionController extends AbstractController { return sessions; } + + /* internal redirections */ + + @RequestMapping(value = "/{sessionKey}/lecturerquestion") + public final String redirectLecturerQuestion( + @PathVariable final String sessionKey, + final HttpServletResponse response + ) { + response.addHeader("X-Forwarded", "1"); + + return String.format("forward:/lecturerquestion/?sessionkey=%s", sessionKey); + } + + @RequestMapping(value = "/{sessionKey}/lecturerquestion/{arg1}") + public final String redirectLecturerQuestionWithOneArgument( + @PathVariable final String sessionKey, + @PathVariable final String arg1, + final HttpServletResponse response + ) { + response.addHeader("X-Forwarded", "1"); + + return String.format("forward:/lecturerquestion/%s/?sessionkey=%s", arg1, sessionKey); + } + + @RequestMapping(value = "/{sessionKey}/lecturerquestion/{arg1}/{arg2}") + public final String redirectLecturerQuestionWithTwoArguments( + @PathVariable final String sessionKey, + @PathVariable final String arg1, + @PathVariable final String arg2, + final HttpServletResponse response + ) { + response.addHeader("X-Forwarded", "1"); + + return String.format("forward:/lecturerquestion/%s/%s/?sessionkey=%s", arg1, arg2, sessionKey); + } + + @RequestMapping(value = "/{sessionKey}/lecturerquestion/{arg1}/{arg2}/{arg3}") + public final String redirectLecturerQuestionWithThreeArguments( + @PathVariable final String sessionKey, + @PathVariable final String arg1, + @PathVariable final String arg2, + @PathVariable final String arg3, + final HttpServletResponse response + ) { + response.addHeader("X-Forwarded", "1"); + + return String.format("forward:/lecturerquestion/%s/%s/%s/?sessionkey=%s", arg1, arg2, arg3, sessionKey); + } + + @RequestMapping(value = "/{sessionKey}/audiencequestion") + public final String redirectAudienceQuestion( + @PathVariable final String sessionKey, + final HttpServletResponse response + ) { + response.addHeader("X-Forwarded", "1"); + + return String.format("forward:/audiencequestion/?sessionkey=%s", sessionKey); + } + + @RequestMapping(value = "/{sessionKey}/audiencequestion/{arg1}") + public final String redirectAudienceQuestionWithOneArgument( + @PathVariable final String sessionKey, + @PathVariable final String arg1, + final HttpServletResponse response + ) { + response.addHeader("X-Forwarded", "1"); + + return String.format("forward:/audiencequestion/%s/?sessionkey=%s", arg1, sessionKey); + } + + @RequestMapping(value = "/{sessionKey}/audiencequestion/{arg1}/{arg2}") + public final String redirectAudienceQuestionWithTwoArguments( + @PathVariable final String sessionKey, + @PathVariable final String arg1, + @PathVariable final String arg2, + final HttpServletResponse response + ) { + response.addHeader("X-Forwarded", "1"); + + return String.format("forward:/audiencequestion/%s/%s/?sessionkey=%s", arg1, arg2, sessionKey); + } + + @RequestMapping(value = "/{sessionKey}/audiencequestion/{arg1}/{arg2}/{arg3}") + public final String redirectAudienceQuestionWithThreeArguments( + @PathVariable final String sessionKey, + @PathVariable final String arg1, + @PathVariable final String arg2, + @PathVariable final String arg3, + final HttpServletResponse response + ) { + response.addHeader("X-Forwarded", "1"); + + return String.format("forward:/audiencequestion/%s/%s/%s/?sessionkey=%s", arg1, arg2, arg3, sessionKey); + } } -- GitLab