diff --git a/pom.xml b/pom.xml index e97a671a7cb986b73d45f6d1b1e69c886f1be98b..8effd6591f4a18e877b3c4e7a08732cb10ec50ea 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ <packaging>war</packaging> <properties> - <org.springframework-version>3.1.3.RELEASE</org.springframework-version> + <org.springframework-version>3.2.0.RELEASE</org.springframework-version> <org.springframework.security-version>3.1.3.RELEASE</org.springframework.security-version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.url>https://scm.thm.de/arsnova</project.url> diff --git a/src/main/java/de/thm/arsnova/controller/AbstractController.java b/src/main/java/de/thm/arsnova/controller/AbstractController.java index 3c379b3379ca5267bbdbd718aacbd8706a00bca9..3c86d4a0c69a501b154527c5402d8516708619fa 100644 --- a/src/main/java/de/thm/arsnova/controller/AbstractController.java +++ b/src/main/java/de/thm/arsnova/controller/AbstractController.java @@ -6,9 +6,11 @@ import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; +import de.thm.arsnova.exceptions.BadRequestException; import de.thm.arsnova.exceptions.ForbiddenException; import de.thm.arsnova.exceptions.NoContentException; import de.thm.arsnova.exceptions.NotFoundException; +import de.thm.arsnova.exceptions.PreconditionFailedException; import de.thm.arsnova.exceptions.UnauthorizedException; public class AbstractController { @@ -31,4 +33,14 @@ public class AbstractController { @ExceptionHandler(NoContentException.class) public void handleNoContentException(final Exception e, final HttpServletRequest request) { } + + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(BadRequestException.class) + public void handleBadRequestException(final Exception e, final HttpServletRequest request) { + } + + @ResponseStatus(HttpStatus.PRECONDITION_FAILED) + @ExceptionHandler(PreconditionFailedException.class) + public void handlePreconditionFailedException(final Exception e, final HttpServletRequest request) { + } } diff --git a/src/main/java/de/thm/arsnova/controller/FeedbackController.java b/src/main/java/de/thm/arsnova/controller/FeedbackController.java index 627c8fd47edbea568df3231bf94b7f1652aadc85..c1a4be8fafc62ff72ec7a9f707f54ba49c0701ef 100644 --- a/src/main/java/de/thm/arsnova/controller/FeedbackController.java +++ b/src/main/java/de/thm/arsnova/controller/FeedbackController.java @@ -30,9 +30,11 @@ 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.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; import de.thm.arsnova.entities.Feedback; import de.thm.arsnova.entities.User; +import de.thm.arsnova.exceptions.NotFoundException; import de.thm.arsnova.services.IFeedbackService; import de.thm.arsnova.services.IUserService; @@ -61,8 +63,7 @@ public class FeedbackController extends AbstractController { if (value != null && value >= Feedback.MIN_FEEDBACK_TYPE && value <= Feedback.MAX_FEEDBACK_TYPE) { return value; } - response.setStatus(HttpStatus.NOT_FOUND.value()); - return null; + throw new NotFoundException(); } @RequestMapping(value = "/session/{sessionkey}/feedbackcount", method = RequestMethod.GET) @@ -85,6 +86,7 @@ public class FeedbackController extends AbstractController { @RequestMapping(value = "/session/{sessionkey}/feedback", method = RequestMethod.POST) @ResponseBody + @ResponseStatus(HttpStatus.CREATED) public final Feedback postFeedback( @PathVariable final String sessionkey, @RequestBody final int value, @@ -94,15 +96,11 @@ public class FeedbackController extends AbstractController { if (feedbackService.saveFeedback(sessionkey, value, user)) { Feedback feedback = feedbackService.getFeedback(sessionkey); if (feedback != null) { - response.setStatus(HttpStatus.CREATED.value()); return feedback; } - - response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value()); - return null; + throw new RuntimeException(); } - response.setStatus(HttpStatus.BAD_REQUEST.value()); - return null; + throw new NotFoundException(); } } diff --git a/src/main/java/de/thm/arsnova/controller/FoodVoteController.java b/src/main/java/de/thm/arsnova/controller/FoodVoteController.java index 61269ef5a9b1163fdae90064536d100021be6982..f784b03abdde97ce364e520c253c40c20ecf256b 100644 --- a/src/main/java/de/thm/arsnova/controller/FoodVoteController.java +++ b/src/main/java/de/thm/arsnova/controller/FoodVoteController.java @@ -66,7 +66,4 @@ public class FoodVoteController extends AbstractController { public final String getFoodVoteCount() { return Integer.toString(foodService.getFoodVoteCount()); } - - - } diff --git a/src/main/java/de/thm/arsnova/controller/LoginController.java b/src/main/java/de/thm/arsnova/controller/LoginController.java index dd025d368ae83d662923dfda889a5e0596ec4e31..5fe73f1e3b2f31e8fe20f3f435b1e5b2eead5199 100644 --- a/src/main/java/de/thm/arsnova/controller/LoginController.java +++ b/src/main/java/de/thm/arsnova/controller/LoginController.java @@ -76,7 +76,7 @@ public class LoginController extends AbstractController { public static final Logger LOGGER = LoggerFactory.getLogger(LoginController.class); - @RequestMapping(method = RequestMethod.GET, value = "/doLogin") + @RequestMapping(value = "/doLogin", method = RequestMethod.GET) public final View doLogin( @RequestParam("type") final String type, @RequestParam(value = "user", required = false) final String guestName, @@ -127,13 +127,13 @@ public class LoginController extends AbstractController { return null; } - @RequestMapping(method = RequestMethod.GET, value = "/whoami") + @RequestMapping(value = "/whoami", method = RequestMethod.GET) @ResponseBody public final User whoami() { return userService.getCurrentUser(); } - @RequestMapping(method = RequestMethod.GET, value = "/logout") + @RequestMapping(value = "/logout", method = RequestMethod.GET) public final View doLogout(final HttpServletRequest request) { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); request.getSession().invalidate(); diff --git a/src/main/java/de/thm/arsnova/controller/QuestionByAudienceController.java b/src/main/java/de/thm/arsnova/controller/QuestionByAudienceController.java index 78864ea2f23dfc8cdbe89397672696cb19b2a8ca..46bfe1457f4d9f074c572f7199bf1f6048ce5321 100644 --- a/src/main/java/de/thm/arsnova/controller/QuestionByAudienceController.java +++ b/src/main/java/de/thm/arsnova/controller/QuestionByAudienceController.java @@ -33,9 +33,12 @@ 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; import de.thm.arsnova.entities.InterposedQuestion; import de.thm.arsnova.entities.InterposedReadingCount; +import de.thm.arsnova.exceptions.BadRequestException; +import de.thm.arsnova.exceptions.PreconditionFailedException; import de.thm.arsnova.services.IQuestionService; @Controller @@ -86,23 +89,21 @@ public class QuestionByAudienceController extends AbstractController { @RequestMapping(value = "/", method = RequestMethod.POST) @ResponseBody + @ResponseStatus(HttpStatus.CREATED) public final void postInterposedQuestion( @RequestParam final String sessionkey, @RequestBody final InterposedQuestion question, final HttpServletResponse response ) { if (!sessionkey.equals(question.getSessionId())) { - response.setStatus(HttpStatus.PRECONDITION_FAILED.value()); - return; + throw new PreconditionFailedException(); } if (questionService.saveQuestion(question)) { - response.setStatus(HttpStatus.CREATED.value()); return; } - response.setStatus(HttpStatus.BAD_REQUEST.value()); - return; + throw new BadRequestException(); } @RequestMapping(value = "/{questionId}", method = RequestMethod.DELETE) @@ -113,5 +114,4 @@ public class QuestionByAudienceController extends AbstractController { ) { questionService.deleteQuestion(questionId); } - } diff --git a/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java b/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java index 007ff95afbd01d64dcb196ebc31354924ba19a48..1dfea5429371117fe718dbc3f0c40d38da6f7a02 100644 --- a/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java +++ b/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java @@ -33,9 +33,13 @@ 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; import de.thm.arsnova.entities.Answer; import de.thm.arsnova.entities.Question; +import de.thm.arsnova.exceptions.BadRequestException; +import de.thm.arsnova.exceptions.ForbiddenException; +import de.thm.arsnova.exceptions.NoContentException; import de.thm.arsnova.exceptions.NotFoundException; import de.thm.arsnova.services.IQuestionService; @@ -59,8 +63,7 @@ public class QuestionByLecturerController extends AbstractController { return question; } - response.setStatus(HttpStatus.NOT_FOUND.value()); - return null; + throw new NotFoundException(); } @RequestMapping( @@ -68,19 +71,17 @@ public class QuestionByLecturerController extends AbstractController { method = RequestMethod.POST ) @ResponseBody + @ResponseStatus(HttpStatus.CREATED) public final Question postQuestion( @RequestBody final Question question, final HttpServletResponse response ) { if (questionService.saveQuestion(question) != null) { - response.setStatus(HttpStatus.CREATED.value()); return question; } - response.setStatus(HttpStatus.BAD_REQUEST.value()); - - return null; + throw new BadRequestException(); } @RequestMapping( @@ -94,7 +95,7 @@ public class QuestionByLecturerController extends AbstractController { @RequestBody final Question question, final HttpServletResponse response ) { - response.setStatus(HttpStatus.NO_CONTENT.value()); + throw new NoContentException(); /* TODO: Not yet implemented! The following code has been copy-and-pasted from postQuestion */ /* @@ -127,8 +128,7 @@ public class QuestionByLecturerController extends AbstractController { @RequestBody final Question question, final HttpServletResponse response ) { - /* TODO: Not yet implemented! */ - response.setStatus(HttpStatus.NO_CONTENT.value()); + throw new NoContentException(); } @@ -143,8 +143,7 @@ public class QuestionByLecturerController extends AbstractController { ) { List<Question> questions = questionService.getSkillQuestions(sessionkey); if (questions == null || questions.isEmpty()) { - response.setStatus(HttpStatus.NOT_FOUND.value()); - return null; + throw new NotFoundException(); } LOGGER.info(questions.toString()); return questions; @@ -188,8 +187,7 @@ public class QuestionByLecturerController extends AbstractController { ) { List<String> answers = questionService.getUnAnsweredQuestions(sessionkey); if (answers == null || answers.isEmpty()) { - response.setStatus(HttpStatus.NO_CONTENT.value()); - return null; + throw new NoContentException(); } return answers; } diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java index 885e076cb54b138ec75ea184806c87481230dc88..641d6c21dbe793440fc48eee95b5f183fc878bc5 100644 --- a/src/main/java/de/thm/arsnova/controller/SessionController.java +++ b/src/main/java/de/thm/arsnova/controller/SessionController.java @@ -32,10 +32,13 @@ 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.ResponseBody; +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; @@ -58,6 +61,7 @@ public class SessionController extends AbstractController { @RequestMapping(value = "/session/{sessionkey}/online", method = RequestMethod.POST) @ResponseBody + @ResponseStatus(HttpStatus.CREATED) public final LoggedIn registerAsOnlineUser( @PathVariable final String sessionkey, final HttpServletResponse response @@ -65,12 +69,10 @@ public class SessionController extends AbstractController { User user = userService.getCurrentUser(); LoggedIn loggedIn = sessionService.registerAsOnlineUser(user, sessionkey); if (loggedIn != null) { - response.setStatus(HttpStatus.CREATED.value()); return loggedIn; } - response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value()); - return null; + throw new RuntimeException(); } @RequestMapping(value = "/session/{sessionkey}/activeusercount", method = RequestMethod.GET) @@ -84,10 +86,10 @@ public class SessionController extends AbstractController { @RequestMapping(value = "/session", method = RequestMethod.POST) @ResponseBody + @ResponseStatus(HttpStatus.CREATED) public final Session postNewSession(@RequestBody final Session session, final HttpServletResponse response) { Session newSession = sessionService.saveSession(session); if (session != null) { - response.setStatus(HttpStatus.CREATED.value()); return newSession; } @@ -100,13 +102,11 @@ public class SessionController extends AbstractController { public final List<Session> getMySession(final HttpServletResponse response) { String username = userService.getCurrentUser().getUsername(); if (username == null) { - response.setStatus(HttpStatus.NOT_FOUND.value()); - return null; + throw new NotFoundException(); } List<Session> sessions = sessionService.getMySessions(username); if (sessions == null || sessions.isEmpty()) { - response.setStatus(HttpStatus.NOT_FOUND.value()); - return null; + throw new NotFoundException(); } return sessions; } @@ -116,8 +116,7 @@ public class SessionController extends AbstractController { public final List<Session> getMyVisitedSession(final HttpServletResponse response) { List<Session> sessions = sessionService.getMyVisitedSessions(userService.getCurrentUser()); if (sessions == null || sessions.isEmpty()) { - response.setStatus(HttpStatus.NO_CONTENT.value()); - return null; + throw new NoContentException(); } return sessions; } diff --git a/src/main/java/de/thm/arsnova/controller/WelcomeController.java b/src/main/java/de/thm/arsnova/controller/WelcomeController.java index 55796f95ca00e3ffcd436a1011b927c561d801dc..588dad75e08a442d13c23a4152e9a6140ec23c83 100644 --- a/src/main/java/de/thm/arsnova/controller/WelcomeController.java +++ b/src/main/java/de/thm/arsnova/controller/WelcomeController.java @@ -27,7 +27,7 @@ import org.springframework.web.servlet.ModelAndView; @Controller public class WelcomeController extends AbstractController { - @RequestMapping(method = RequestMethod.GET, value = "/") + @RequestMapping(value = "/", method = RequestMethod.GET) public final ModelAndView home(final HttpServletRequest request) { String referer = request.getHeader("referer"); String target = "index.html"; diff --git a/src/main/java/de/thm/arsnova/exceptions/BadRequestException.java b/src/main/java/de/thm/arsnova/exceptions/BadRequestException.java new file mode 100644 index 0000000000000000000000000000000000000000..f2289bf5157b2f9d60e0467023113a4f2a5fa9c5 --- /dev/null +++ b/src/main/java/de/thm/arsnova/exceptions/BadRequestException.java @@ -0,0 +1,5 @@ +package de.thm.arsnova.exceptions; + +public class BadRequestException extends RuntimeException { + private static final long serialVersionUID = 1L; +} diff --git a/src/main/java/de/thm/arsnova/exceptions/PreconditionFailedException.java b/src/main/java/de/thm/arsnova/exceptions/PreconditionFailedException.java new file mode 100644 index 0000000000000000000000000000000000000000..827f0c5bf6899a518217abae5ba93effebe78699 --- /dev/null +++ b/src/main/java/de/thm/arsnova/exceptions/PreconditionFailedException.java @@ -0,0 +1,5 @@ +package de.thm.arsnova.exceptions; + +public class PreconditionFailedException extends RuntimeException { + private static final long serialVersionUID = 1L; +} diff --git a/src/main/webapp/WEB-INF/arsnova-servlet.xml b/src/main/webapp/WEB-INF/spring/arsnova-servlet.xml similarity index 75% rename from src/main/webapp/WEB-INF/arsnova-servlet.xml rename to src/main/webapp/WEB-INF/spring/arsnova-servlet.xml index 7bc0504de6c08a724ac9b475b0584f6169ecb143..0026ff2470c7f87a991ab1df943470672f0e50ad 100644 --- a/src/main/webapp/WEB-INF/arsnova-servlet.xml +++ b/src/main/webapp/WEB-INF/spring/arsnova-servlet.xml @@ -4,15 +4,26 @@ xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" - xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd - http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd - http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd - http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"> + xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd + http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <!-- ARSnova Servlet Context --> <context:component-scan base-package="de.thm.arsnova.controller" /> - <context:annotation-config /> + <mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" /> + + <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> + <property name="favorPathExtension" value="false" /> + <property name="favorParameter" value="true" /> + <property name="mediaTypes" > + <value> + html=text/html + json=application/json + </value> + </property> + </bean> <aop:aspectj-autoproxy> <aop:include name="authorizationAdviser" /> @@ -21,6 +32,7 @@ <mvc:annotation-driven /> <mvc:resources mapping="/**" location="/" /> + <!-- --> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> @@ -32,14 +44,9 @@ </list> </property> </bean> + <!-- --> <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> - <property name="mediaTypes"> - <map> - <entry key="html" value="text/html"/> - <entry key="json" value="application/json" /> - </map> - </property> <property name="viewResolvers"> <list> <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver"> diff --git a/src/main/webapp/WEB-INF/spring/spring-main.xml b/src/main/webapp/WEB-INF/spring/spring-main.xml index c4c06e25c50e31b0de8724a9c655d473728fca80..aeab85f1b01c303f311d8e1e553192f14339225a 100644 --- a/src/main/webapp/WEB-INF/spring/spring-main.xml +++ b/src/main/webapp/WEB-INF/spring/spring-main.xml @@ -7,12 +7,12 @@ xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task" xmlns:aop="http://www.springframework.org/schema/aop" - xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd - http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd - http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd - http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd - http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd - http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"> + xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd + http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd + http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd + http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" diff --git a/src/main/webapp/WEB-INF/spring/spring-security.xml b/src/main/webapp/WEB-INF/spring/spring-security.xml index bc0a0d1f6e629cbbc656576614030fb60241d57e..ecd7f7669a93c1cecda86eec020db8c05416affb 100644 --- a/src/main/webapp/WEB-INF/spring/spring-security.xml +++ b/src/main/webapp/WEB-INF/spring/spring-security.xml @@ -5,9 +5,9 @@ xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd - http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd - http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd - http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"> + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd + http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <security:authentication-manager alias="authenticationManager"> <security:authentication-provider ref="facebookAuthProvider" /> diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 5128d8dc1a0cad468a10043935281652b7513646..ae5e104f8d0c6fb6d632c8110aa791485ea42681 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -16,6 +16,12 @@ <servlet> <servlet-name>arsnova</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> + <init-param> + <param-name>contextConfigLocation</param-name> + <param-value> + /WEB-INF/spring/arsnova-servlet.xml + </param-value> + </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> diff --git a/src/test/java/de/thm/arsnova/AbstractSpringContextTestBase.java b/src/test/java/de/thm/arsnova/AbstractSpringContextTestBase.java deleted file mode 100644 index 02fe1ace237001392fd977f9568d5540099aa99c..0000000000000000000000000000000000000000 --- a/src/test/java/de/thm/arsnova/AbstractSpringContextTestBase.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (C) 2012 THM webMedia - * - * This file is part of ARSnova. - * - * ARSnova is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * ARSnova is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package de.thm.arsnova; - -import static org.junit.Assert.assertNotNull; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.junit.runner.RunWith; -import org.springframework.mock.web.MockHttpServletRequest; -import org.springframework.mock.web.MockHttpServletResponse; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.web.servlet.HandlerAdapter; -import org.springframework.web.servlet.HandlerExecutionChain; -import org.springframework.web.servlet.HandlerInterceptor; -import org.springframework.web.servlet.HandlerMapping; -import org.springframework.web.servlet.ModelAndView; -import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; -import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations = { - "file:src/main/webapp/WEB-INF/arsnova-servlet.xml", - "file:src/main/webapp/WEB-INF/spring/spring-main.xml", - "file:src/test/resources/test-config.xml" }) -public class AbstractSpringContextTestBase extends - AbstractJUnit4SpringContextTests { - - protected MockHttpServletRequest request; - protected MockHttpServletResponse response; - - protected ModelAndView handle(HttpServletRequest request, - HttpServletResponse response) throws Exception { - final HandlerMapping handlerMapping = applicationContext - .getBean(RequestMappingHandlerMapping.class); - final HandlerExecutionChain handler = handlerMapping - .getHandler(request); - assertNotNull( - "No handler found for request, check you request mapping", - handler); - - final Object controller = handler.getHandler(); - // if you want to override any injected attributes do it here - - final HandlerInterceptor[] interceptors = handlerMapping.getHandler( - request).getInterceptors(); - for (HandlerInterceptor interceptor : interceptors) { - final boolean carryOn = interceptor.preHandle(request, response, - controller); - if (!carryOn) { - return null; - } - } - HandlerAdapter handlerAdapter = applicationContext - .getBean(RequestMappingHandlerAdapter.class); - ; - final ModelAndView mav = handlerAdapter.handle(request, response, - controller); - return mav; - } -} diff --git a/src/test/java/de/thm/arsnova/Selenium2Test.java b/src/test/java/de/thm/arsnova/Selenium2Test.java index 76a602a800bc702190d9a87ad8e74db28ff9bf14..98a5211c11e13cbcbb125d0e70bd5412015a949e 100644 --- a/src/test/java/de/thm/arsnova/Selenium2Test.java +++ b/src/test/java/de/thm/arsnova/Selenium2Test.java @@ -7,7 +7,6 @@ import java.util.Properties; import org.junit.After; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; diff --git a/src/test/java/de/thm/arsnova/WiringTest.java b/src/test/java/de/thm/arsnova/WiringTest.java deleted file mode 100644 index 5f8590492afbb957ca1e662bed4636851a8c8f33..0000000000000000000000000000000000000000 --- a/src/test/java/de/thm/arsnova/WiringTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2012 THM webMedia - * - * This file is part of ARSnova. - * - * ARSnova is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * ARSnova is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package de.thm.arsnova; - -import static org.junit.Assert.assertTrue; - -import org.junit.Test; - -/** - * Unit test to verify Spring context wiring. - * - */ -public class WiringTest extends AbstractSpringContextTestBase { - - @Test - public void testWiring() throws Exception { - assertTrue(applicationContext.getBeanDefinitionCount() > 0); - } -} \ No newline at end of file diff --git a/src/test/java/de/thm/arsnova/controller/FeedbackControllerTest.java b/src/test/java/de/thm/arsnova/controller/FeedbackControllerTest.java index 18034a38724b1fe9137dea6a7db0e87513fba67f..d0b8997bcac3b8d60fad34d7d06f6c214073eb3f 100644 --- a/src/test/java/de/thm/arsnova/controller/FeedbackControllerTest.java +++ b/src/test/java/de/thm/arsnova/controller/FeedbackControllerTest.java @@ -1,8 +1,8 @@ package de.thm.arsnova.controller; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -import static org.junit.Assert.assertEquals; import javax.inject.Inject; @@ -27,7 +27,7 @@ import de.thm.arsnova.services.StubUserService; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { - "file:src/main/webapp/WEB-INF/arsnova-servlet.xml", + "file:src/main/webapp/WEB-INF/spring/arsnova-servlet.xml", "file:src/main/webapp/WEB-INF/spring/spring-main.xml", "file:src/test/resources/test-config.xml" }) diff --git a/src/test/java/de/thm/arsnova/controller/LoginControllerTest.java b/src/test/java/de/thm/arsnova/controller/LoginControllerTest.java index 73824157ea13eef7c597564d366c75a68f8b42cd..f10539f3e7fb1fd8c0a72ede265db8c7e4da7a62 100644 --- a/src/test/java/de/thm/arsnova/controller/LoginControllerTest.java +++ b/src/test/java/de/thm/arsnova/controller/LoginControllerTest.java @@ -46,7 +46,7 @@ import de.thm.arsnova.services.StubUserService; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { - "file:src/main/webapp/WEB-INF/arsnova-servlet.xml", + "file:src/main/webapp/WEB-INF/spring/arsnova-servlet.xml", "file:src/main/webapp/WEB-INF/spring/spring-main.xml", "file:src/test/resources/test-config.xml" }) public class LoginControllerTest { diff --git a/src/test/java/de/thm/arsnova/controller/QuestionByLecturerControllerTest.java b/src/test/java/de/thm/arsnova/controller/QuestionByLecturerControllerTest.java index 2a2ba18c92fe5f420489b24984badcb9a44a7d35..bed22194e6958f79304ade068d9474ea78f270fb 100644 --- a/src/test/java/de/thm/arsnova/controller/QuestionByLecturerControllerTest.java +++ b/src/test/java/de/thm/arsnova/controller/QuestionByLecturerControllerTest.java @@ -27,7 +27,7 @@ import de.thm.arsnova.services.StubUserService; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { - "file:src/main/webapp/WEB-INF/arsnova-servlet.xml", + "file:src/main/webapp/WEB-INF/spring/arsnova-servlet.xml", "file:src/main/webapp/WEB-INF/spring/spring-main.xml", "file:src/test/resources/test-config.xml" }) public class QuestionByLecturerControllerTest { diff --git a/src/test/java/de/thm/arsnova/controller/SessionControllerTest.java b/src/test/java/de/thm/arsnova/controller/SessionControllerTest.java index ee422e59202231a1b8fac08cdfb90433a48de524..75bb88a9b988636416b684adc06960a11d5453f8 100644 --- a/src/test/java/de/thm/arsnova/controller/SessionControllerTest.java +++ b/src/test/java/de/thm/arsnova/controller/SessionControllerTest.java @@ -27,7 +27,7 @@ import de.thm.arsnova.services.StubUserService; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { - "file:src/main/webapp/WEB-INF/arsnova-servlet.xml", + "file:src/main/webapp/WEB-INF/spring/arsnova-servlet.xml", "file:src/main/webapp/WEB-INF/spring/spring-main.xml", "file:src/test/resources/test-config.xml" }) diff --git a/src/test/java/de/thm/arsnova/controller/StatisticsControllerTest.java b/src/test/java/de/thm/arsnova/controller/StatisticsControllerTest.java index 0a342bd9d489c07c41711d688f8773adbdd67585..2882e4b3c1e223a399daf8ca9e57ff9a47180631 100644 --- a/src/test/java/de/thm/arsnova/controller/StatisticsControllerTest.java +++ b/src/test/java/de/thm/arsnova/controller/StatisticsControllerTest.java @@ -18,7 +18,7 @@ import org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAda @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { - "file:src/main/webapp/WEB-INF/arsnova-servlet.xml", + "file:src/main/webapp/WEB-INF/spring/arsnova-servlet.xml", "file:src/main/webapp/WEB-INF/spring/spring-main.xml", "file:src/test/resources/test-config.xml" }) diff --git a/src/test/java/de/thm/arsnova/controller/WelcomeControllerTest.java b/src/test/java/de/thm/arsnova/controller/WelcomeControllerTest.java index 5647c7271421362c8e4f2eb61a55ff2548591a05..35d3287b375e24ca4039d45dfafc72f1d86a594d 100644 --- a/src/test/java/de/thm/arsnova/controller/WelcomeControllerTest.java +++ b/src/test/java/de/thm/arsnova/controller/WelcomeControllerTest.java @@ -21,20 +21,42 @@ package de.thm.arsnova.controller; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import javax.inject.Inject; + import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.web.servlet.HandlerAdapter; import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = { + "file:src/main/webapp/WEB-INF/spring/arsnova-servlet.xml", + "file:src/main/webapp/WEB-INF/spring/spring-main.xml", + "file:src/test/resources/test-config.xml" }) +public class WelcomeControllerTest { -import de.thm.arsnova.AbstractSpringContextTestBase; + @Inject + private ApplicationContext applicationContext; + private MockHttpServletRequest request; + private MockHttpServletResponse response; + private HandlerAdapter handlerAdapter; -public class WelcomeControllerTest extends AbstractSpringContextTestBase { + @Autowired + private WelcomeController welcomeController; @Before - public void setUp() throws Exception { + public final void setUp() { this.request = new MockHttpServletRequest(); this.response = new MockHttpServletResponse(); + handlerAdapter = applicationContext.getBean(AnnotationMethodHandlerAdapter.class); } @Test @@ -42,9 +64,8 @@ public class WelcomeControllerTest extends AbstractSpringContextTestBase { request.setMethod("GET"); request.setRequestURI("/"); - final ModelAndView mav = handle(request, response); + final ModelAndView mav = handlerAdapter.handle(request, response, welcomeController); assertNotNull(mav); assertEquals("redirect:/index.html", mav.getViewName()); } - } diff --git a/src/test/java/de/thm/arsnova/services/FeedbackServiceTest.java b/src/test/java/de/thm/arsnova/services/FeedbackServiceTest.java index 5cb9beec7e11fe32a7adb4af737976b44660d6c3..4f8fc000c8dab4182dda7948186b184973ec932a 100644 --- a/src/test/java/de/thm/arsnova/services/FeedbackServiceTest.java +++ b/src/test/java/de/thm/arsnova/services/FeedbackServiceTest.java @@ -34,7 +34,7 @@ import de.thm.arsnova.exceptions.NotFoundException; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { - "file:src/main/webapp/WEB-INF/arsnova-servlet.xml", + "file:src/main/webapp/WEB-INF/spring/arsnova-servlet.xml", "file:src/main/webapp/WEB-INF/spring/spring-main.xml", "file:src/test/resources/test-config.xml" }) diff --git a/src/test/java/de/thm/arsnova/services/QuestionServiceTest.java b/src/test/java/de/thm/arsnova/services/QuestionServiceTest.java index ce8dddb3517514cd31d6262b9d774016296149f1..731fb23aebdd4dfb19d59b3704a9a7373735afd3 100644 --- a/src/test/java/de/thm/arsnova/services/QuestionServiceTest.java +++ b/src/test/java/de/thm/arsnova/services/QuestionServiceTest.java @@ -34,7 +34,7 @@ import de.thm.arsnova.exceptions.UnauthorizedException; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { - "file:src/main/webapp/WEB-INF/arsnova-servlet.xml", + "file:src/main/webapp/WEB-INF/spring/arsnova-servlet.xml", "file:src/main/webapp/WEB-INF/spring/spring-main.xml", "file:src/test/resources/test-config.xml" }) diff --git a/src/test/java/de/thm/arsnova/services/SessionServiceTest.java b/src/test/java/de/thm/arsnova/services/SessionServiceTest.java index 52026555375defd92a00421d39eaf44cc5997e28..ef51a2c5e0d41298dd422d037ab486554552434b 100644 --- a/src/test/java/de/thm/arsnova/services/SessionServiceTest.java +++ b/src/test/java/de/thm/arsnova/services/SessionServiceTest.java @@ -36,7 +36,7 @@ import de.thm.arsnova.exceptions.UnauthorizedException; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { - "file:src/main/webapp/WEB-INF/arsnova-servlet.xml", + "file:src/main/webapp/WEB-INF/spring/arsnova-servlet.xml", "file:src/main/webapp/WEB-INF/spring/spring-main.xml", "file:src/test/resources/test-config.xml" }) public class SessionServiceTest { diff --git a/src/test/java/de/thm/arsnova/services/StatisticsServiceTest.java b/src/test/java/de/thm/arsnova/services/StatisticsServiceTest.java index 140e6c76966f6477ec0b3636a747d6e3873dc91b..1d76572e844e86559f2c3923100ec98ab8be733d 100644 --- a/src/test/java/de/thm/arsnova/services/StatisticsServiceTest.java +++ b/src/test/java/de/thm/arsnova/services/StatisticsServiceTest.java @@ -16,7 +16,7 @@ import de.thm.arsnova.entities.Statistics; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { - "file:src/main/webapp/WEB-INF/arsnova-servlet.xml", + "file:src/main/webapp/WEB-INF/spring/arsnova-servlet.xml", "file:src/main/webapp/WEB-INF/spring/spring-main.xml", "file:src/test/resources/test-config.xml" })