add exception handler
This commit is contained in:
		
							parent
							
								
									99170431c0
								
							
						
					
					
						commit
						03e182d6c7
					
				| @ -19,6 +19,7 @@ import org.slf4j.LoggerFactory; | |||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.context.ApplicationEventPublisher; | import org.springframework.context.ApplicationEventPublisher; | ||||||
| import org.springframework.context.MessageSource; | import org.springframework.context.MessageSource; | ||||||
|  | import org.springframework.http.MediaType; | ||||||
| import org.springframework.mail.MailAuthenticationException; | import org.springframework.mail.MailAuthenticationException; | ||||||
| import org.springframework.mail.SimpleMailMessage; | import org.springframework.mail.SimpleMailMessage; | ||||||
| import org.springframework.mail.javamail.JavaMailSender; | import org.springframework.mail.javamail.JavaMailSender; | ||||||
| @ -35,6 +36,7 @@ import org.springframework.web.bind.annotation.ModelAttribute; | |||||||
| import org.springframework.web.bind.annotation.RequestMapping; | import org.springframework.web.bind.annotation.RequestMapping; | ||||||
| import org.springframework.web.bind.annotation.RequestMethod; | import org.springframework.web.bind.annotation.RequestMethod; | ||||||
| import org.springframework.web.bind.annotation.RequestParam; | import org.springframework.web.bind.annotation.RequestParam; | ||||||
|  | import org.springframework.web.bind.annotation.ResponseBody; | ||||||
| import org.springframework.web.servlet.ModelAndView; | import org.springframework.web.servlet.ModelAndView; | ||||||
| 
 | 
 | ||||||
| @Controller | @Controller | ||||||
| @ -121,7 +123,6 @@ public class RegistrationController { | |||||||
|     public String resendRegistrationToken(final HttpServletRequest request, final Model model, @RequestParam("token") final String existingToken) { |     public String resendRegistrationToken(final HttpServletRequest request, final Model model, @RequestParam("token") final String existingToken) { | ||||||
|         final Locale locale = request.getLocale(); |         final Locale locale = request.getLocale(); | ||||||
|         final VerificationToken newToken = userService.generateNewVerificationToken(existingToken); |         final VerificationToken newToken = userService.generateNewVerificationToken(existingToken); | ||||||
| 
 |  | ||||||
|         final User user = userService.getUser(newToken.getToken()); |         final User user = userService.getUser(newToken.getToken()); | ||||||
|         try { |         try { | ||||||
|             final String appUrl = request.getServerName() + ":" + request.getServerPort() + request.getContextPath(); |             final String appUrl = request.getServerName() + ":" + request.getServerPort() + request.getContextPath(); | ||||||
| @ -135,32 +136,19 @@ public class RegistrationController { | |||||||
|             model.addAttribute("message", e.getLocalizedMessage()); |             model.addAttribute("message", e.getLocalizedMessage()); | ||||||
|             return "redirect:/login.html?lang=" + locale.getLanguage(); |             return "redirect:/login.html?lang=" + locale.getLanguage(); | ||||||
|         } |         } | ||||||
| 
 |  | ||||||
|         model.addAttribute("message", messages.getMessage("message.resendToken", null, locale)); |         model.addAttribute("message", messages.getMessage("message.resendToken", null, locale)); | ||||||
|         return "redirect:/login.html?lang=" + locale.getLanguage(); |         return "redirect:/login.html?lang=" + locale.getLanguage(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @RequestMapping(value = "/user/resendRegistrationToken2", method = RequestMethod.GET) |     @RequestMapping(value = "/user/resendRegistrationToken2", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) | ||||||
|     public String resendRegistrationToken2(final HttpServletRequest request, final Model model, @RequestParam("token") final String existingToken) { |     public @ResponseBody String resendRegistrationToken2(final HttpServletRequest request, final Model model, @RequestParam("token") final String existingToken) { | ||||||
|         final Locale locale = request.getLocale(); |  | ||||||
|         final VerificationToken newToken = userService.generateNewVerificationToken(existingToken); |         final VerificationToken newToken = userService.generateNewVerificationToken(existingToken); | ||||||
| 
 |  | ||||||
|         final User user = userService.getUser(newToken.getToken()); |         final User user = userService.getUser(newToken.getToken()); | ||||||
|         try { |  | ||||||
|         final String appUrl = request.getServerName() + ":" + request.getServerPort() + request.getContextPath(); |         final String appUrl = request.getServerName() + ":" + request.getServerPort() + request.getContextPath(); | ||||||
|         final SimpleMailMessage email = constructResetVerificationTokenEmail(appUrl, request.getLocale(), newToken, user); |         final SimpleMailMessage email = constructResetVerificationTokenEmail(appUrl, request.getLocale(), newToken, user); | ||||||
|  |         System.out.println(email.getText()); | ||||||
|         mailSender.send(email); |         mailSender.send(email); | ||||||
|         } catch (final MailAuthenticationException e) { |         return messages.getMessage("message.resendToken", null, request.getLocale()); | ||||||
|             LOGGER.debug("MailAuthenticationException", e); |  | ||||||
|             return "redirect:/emailError.html?lang=" + locale.getLanguage(); |  | ||||||
|         } catch (final Exception e) { |  | ||||||
|             LOGGER.debug(e.getLocalizedMessage(), e); |  | ||||||
|             model.addAttribute("message", e.getLocalizedMessage()); |  | ||||||
|             return "redirect:/login.html?lang=" + locale.getLanguage(); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         model.addAttribute("message", messages.getMessage("message.resendToken", null, locale)); |  | ||||||
|         return "redirect:/login.html?lang=" + locale.getLanguage(); |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @RequestMapping(value = "/user/resetPassword", method = RequestMethod.POST) |     @RequestMapping(value = "/user/resetPassword", method = RequestMethod.POST) | ||||||
|  | |||||||
| @ -0,0 +1,35 @@ | |||||||
|  | package org.baeldung.web.error; | ||||||
|  | 
 | ||||||
|  | import org.springframework.mail.MailAuthenticationException; | ||||||
|  | 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.context.request.WebRequest; | ||||||
|  | import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; | ||||||
|  | 
 | ||||||
|  | import com.fasterxml.jackson.core.JsonProcessingException; | ||||||
|  | import com.fasterxml.jackson.databind.ObjectMapper; | ||||||
|  | 
 | ||||||
|  | @ControllerAdvice | ||||||
|  | public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler { | ||||||
|  | 
 | ||||||
|  |     public RestResponseEntityExceptionHandler() { | ||||||
|  |         super(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // API | ||||||
|  | 
 | ||||||
|  |     // 500 | ||||||
|  |     @ExceptionHandler({ MailAuthenticationException.class }) | ||||||
|  |     public @ResponseBody String handleMail(final RuntimeException ex, final WebRequest request) throws JsonProcessingException { | ||||||
|  |         logger.error("500 Status Code", ex); | ||||||
|  |         return new ObjectMapper().writeValueAsString(ex.getClass().toString()); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @ExceptionHandler({ NullPointerException.class, IllegalArgumentException.class, IllegalStateException.class }) | ||||||
|  |     public @ResponseBody String handleInternal(final RuntimeException ex, final WebRequest request) throws JsonProcessingException { | ||||||
|  |         logger.error("500 Status Code", ex); | ||||||
|  |         return new ObjectMapper().writeValueAsString(ex.getClass().toString()); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
| @ -23,12 +23,28 @@ code="label.form.loginSignUp"></spring:message></a> | |||||||
| <c:if test="${param.expired}"> | <c:if test="${param.expired}"> | ||||||
| <br> | <br> | ||||||
| <h1>${label.form.resendRegistrationToken}</h1> | <h1>${label.form.resendRegistrationToken}</h1> | ||||||
| <a href="<c:url value="/user/resendRegistrationToken"> | <button onclick="resendToken()"> | ||||||
| 			<c:param name="token" value="${param.token}"/> |  | ||||||
| 		 </c:url>"> |  | ||||||
| 	<spring:message code="label.form.resendRegistrationToken"></spring:message> | 	<spring:message code="label.form.resendRegistrationToken"></spring:message> | ||||||
| </a> | </button> | ||||||
| </c:if> |  | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> | ||||||
|  | <script type="text/javascript"> | ||||||
|  | function resendToken(){ | ||||||
|  | 	$.get("<c:url value="/user/resendRegistrationToken2"><c:param name="token" value="${param.token}"/></c:url>", function(data){ | ||||||
|  |         if(data.indexOf("MailAuthenticationException") > -1) | ||||||
|  |         { | ||||||
|  |         	window.location.href = "<c:url value="/emailError.html"></c:url>"; | ||||||
|  |         } | ||||||
|  |         else if(data.indexOf("Exception") > -1){ | ||||||
|  |         	window.location.href = "<c:url value="/login"><c:param name="message" value="Error"/></c:url>"; | ||||||
|  |         } | ||||||
|  |         else{ | ||||||
|  |         	window.location.href = "<c:url value="/login"></c:url>" + "message=" + data; | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | </script> | ||||||
|  | </c:if> | ||||||
| </body> | </body> | ||||||
| </html> | </html> | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user