/*
* Copyright (C) 2013-2017 NTT DATA Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
package org.terasoluna.gfw.functionaltest.app.exceptionhandling;
import javax.inject.Inject;
import org.springframework.dao.OptimisticLockingFailureException;
import org.springframework.dao.PessimisticLockingFailureException;
import org.springframework.dao.QueryTimeoutException;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ExtendedModelMap;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.servlet.ModelAndView;
import org.terasoluna.gfw.common.exception.BusinessException;
import org.terasoluna.gfw.common.exception.ResourceNotFoundException;
import org.terasoluna.gfw.common.exception.SystemException;
import org.terasoluna.gfw.common.message.ResultMessages;
import org.terasoluna.gfw.functionaltest.domain.exception.BusinessMessageException;
import org.terasoluna.gfw.functionaltest.domain.exception.BusinessTestException;
import org.terasoluna.gfw.functionaltest.domain.exception.ContinueException;
import org.terasoluna.gfw.functionaltest.domain.exception.ExceptionLoggerDefaultException;
import org.terasoluna.gfw.functionaltest.domain.exception.MultipleChoicesException;
import org.terasoluna.gfw.functionaltest.domain.exception.NormalException;
import org.terasoluna.gfw.functionaltest.domain.service.exceptionhandling.ExceptionHandlingService;
import org.terasoluna.gfw.functionaltest.domain.service.exceptionhandling.InfoLoggingExceptionHandlingService;
import org.terasoluna.gfw.web.token.transaction.TransactionTokenCheck;
import org.terasoluna.gfw.web.token.transaction.TransactionTokenType;
@Controller
@TransactionTokenCheck("exceptionhandling")
@RequestMapping(value = "exceptionhandling")
public class ExceptionHandlingController {
@Inject
protected ExceptionHandlingService exceptionHandlingService;
@Inject
protected InfoLoggingExceptionHandlingService infoLoggingExceptionHandlingService;
@RequestMapping(method = RequestMethod.GET)
public String index() {
return "exceptionhandling/index";
}
@RequestMapping(value = "1_1", method = RequestMethod.GET)
public String requestControllerHandling_01_01(Model model) {
try {
exceptionHandlingService
.throwException(new BusinessException("Error"));
} catch (BusinessException be) {
model.addAttribute(be.getResultMessages());
return "exceptionhandling/errorOutput";
} catch (Exception e) {
}
return "exceptionhandling/index";
}
@RequestMapping(value = "1_2", method = RequestMethod.GET)
public String requestControllerHandling_01_02(Model model) {
try {
infoLoggingExceptionHandlingService
.throwException(new BusinessException(ResultMessages.info()
.add("i.gt.me.0004")));
} catch (BusinessException be) {
model.addAttribute(be.getResultMessages());
return "exceptionhandling/errorOutput";
} catch (Exception e) {
}
return "exceptionhandling/index";
}
@RequestMapping(value = "2_1", method = RequestMethod.GET)
public String useCaseControllerHandling_02_01() {
exceptionHandlingService
.throwException(new ContinueException("2_1 Continue"));
return "exceptionhandling/index";
}
@RequestMapping(value = "2_2", method = RequestMethod.GET)
public String useCaseControllerHandling_02_02() {
exceptionHandlingService.throwException(new NormalException("2_2 Ok"));
return "exceptionhandling/index";
}
@RequestMapping(value = "2_3", method = RequestMethod.GET)
public String useCaseControllerHandling_02_03() {
exceptionHandlingService
.throwException(new MultipleChoicesException("2_3 Multiple Choices"));
return "exceptionhandling/index";
}
@RequestMapping(value = "2_4", method = RequestMethod.GET)
public String useCaseControllerHandling_02_04() {
exceptionHandlingService
.throwException(new OptimisticLockingFailureException("2_4 Conflict"));
return "exceptionhandling/index";
}
@RequestMapping(value = "2_5", method = RequestMethod.GET)
public String useCaseControllerHandling_02_05() {
exceptionHandlingService
.throwException(new PessimisticLockingFailureException("2_5 ignore logging"));
return "exceptionhandling/index";
}
@RequestMapping(value = "3_1", method = RequestMethod.GET)
public String servletFrameworkHandling_03_01() {
exceptionHandlingService
.throwException(new SystemException("i.xx.xxx", "3_1 SystemException"));
return "exceptionhandling/index";
}
@RequestMapping(value = "3_2", method = RequestMethod.GET)
public String servletFrameworkHandling_03_02() {
exceptionHandlingService
.throwException(new SystemException("w.xx.xxx", "3_2 SystemException"));
return "exceptionhandling/index";
}
@RequestMapping(value = "3_3", method = RequestMethod.GET)
public String servletFrameworkHandling_03_03() {
exceptionHandlingService
.throwException(new SystemException("e.xx.xxx", "3_3 SystemException"));
return "exceptionhandling/index";
}
@RequestMapping(value = "3_4", method = RequestMethod.GET)
public String servletFrameworkHandling_03_04() {
exceptionHandlingService
.throwException(new SystemException("e.xx.xxx", "3_4 SystemException", new Throwable("create throwable")));
return "exceptionhandling/index";
}
@RequestMapping(value = "exceptionHandlingRedirect/3_4_1", method = RequestMethod.GET)
public String servletFrameworkHandling_03_04_01() {
return "common/error/systemError";
}
@RequestMapping(value = "3_5", method = RequestMethod.GET)
public String servletFrameworkHandling_03_05() {
exceptionHandlingService
.throwException(new BusinessTestException("w.yy.yyy"));
return "exceptionhandling/index";
}
@RequestMapping(value = "3_6", method = RequestMethod.GET)
public String servletFrameworkHandling_03_06() {
exceptionHandlingService
.throwException(new BusinessTestException("w.yy.yyy"));
return "exceptionhandling/index";
}
@RequestMapping(value = "3_7", method = RequestMethod.GET)
public String servletFrameworkHandling_03_07() {
exceptionHandlingService
.throwException(new ResourceNotFoundException("i.xx.xxx"));
return "exceptionhandling/index";
}
@RequestMapping(value = "3_8", method = RequestMethod.GET)
public String servletFrameworkHandling_03_08() {
exceptionHandlingService
.throwException(new QueryTimeoutException("e.cc.ccc"));
return "exceptionhandling/index";
}
@RequestMapping(value = "3_9", method = RequestMethod.GET)
public String servletFrameworkHandling_03_09() {
exceptionHandlingService
.throwException(new SystemException("e.xx.xxx", "3_8 Error"));
return "exceptionhandling/index";
}
@RequestMapping(value = "3_10", method = RequestMethod.GET)
@TransactionTokenCheck(type = TransactionTokenType.IN)
public String servletFrameworkHandling_03_10() {
return "exceptionhandling/index";
}
@RequestMapping(value = "4_1", method = RequestMethod.GET)
public String webApplicationHandling_04_01() {
return "exceptionhandling/viewIOException";
}
@RequestMapping(value = "4_2", method = RequestMethod.GET)
public String servletFrameworkHandling_04_2() {
exceptionHandlingService.throwAssertionError();
return "exceptionhandling/index";
}
@RequestMapping(value = "4_3", method = RequestMethod.GET)
public String webApplicationHandling_04_03() {
return "exceptionhandling/index";
}
@RequestMapping(value = "4_4", method = RequestMethod.GET)
public String webApplicationHandling_04_04() {
return "exceptionhandling/index";
}
@RequestMapping(value = "5_1", method = RequestMethod.GET)
public String exceptionLoggerVariation_05_01() {
return "exceptionhandling/index";
}
@RequestMapping(value = "5_2", method = RequestMethod.GET)
public String exceptionLoggerVariation_05_02() {
return "exceptionhandling/index";
}
@RequestMapping(value = "5_3", method = RequestMethod.GET)
public String exceptionLoggerVariation_05_03() {
return "exceptionhandling/index";
}
@RequestMapping(value = "5_4", method = RequestMethod.GET)
public String exceptionLoggerVariation_05_04() {
exceptionHandlingService
.throwException(new ExceptionLoggerDefaultException());
return "exceptionhandling/index";
}
@RequestMapping(value = "5_5", method = RequestMethod.GET)
public String exceptionLoggerVariation_05_05() {
exceptionHandlingService
.throwException(new MultipleChoicesException("5_5 Error "));
return "exceptionhandling/index";
}
@RequestMapping(value = "5_6", method = RequestMethod.GET)
public String exceptionLoggerVariation_05_06() {
exceptionHandlingService
.throwException(new BusinessMessageException("5_6 Error"));
return "exceptionhandling/index";
}
@RequestMapping(value = "6_1", method = RequestMethod.GET)
public String exceptionOccuresInSharedService_06_01(Model model) {
try {
exceptionHandlingService
.throwExceptionInSharedServiceNotCatchThis(new BusinessException("Error"));
} catch (BusinessException be) {
model.addAttribute(be.getResultMessages());
return "exceptionhandling/errorOutput";
} catch (Exception e) {
}
return "exceptionhandling/index";
}
@RequestMapping(value = "6_2", method = RequestMethod.GET)
public String exceptionOccuresInSharedService_06_02() {
exceptionHandlingService
.throwExceptionInSharedServiceCatchThis(new BusinessException("Error"));
return "exceptionhandling/index";
}
@ExceptionHandler(ContinueException.class)
@ResponseStatus(HttpStatus.CONTINUE)
public ModelAndView handleException(ContinueException e) {
ExtendedModelMap modelMap = new ExtendedModelMap();
modelMap.addAttribute("exceptionMessage", e.getMessage());
return new ModelAndView("exceptionhandling/exceptionHandler", modelMap);
}
@ExceptionHandler(NormalException.class)
@ResponseStatus(HttpStatus.OK)
public ModelAndView handleException(NormalException e) {
ExtendedModelMap modelMap = new ExtendedModelMap();
modelMap.addAttribute("exceptionMessage", e.getMessage());
return new ModelAndView("exceptionhandling/exceptionHandler", modelMap);
}
@ExceptionHandler(MultipleChoicesException.class)
@ResponseStatus(HttpStatus.MULTIPLE_CHOICES)
public ModelAndView handleException(MultipleChoicesException e) {
ExtendedModelMap modelMap = new ExtendedModelMap();
modelMap.addAttribute("exceptionMessage", e.getMessage());
return new ModelAndView("exceptionhandling/exceptionHandler", modelMap);
}
@ExceptionHandler(OptimisticLockingFailureException.class)
@ResponseStatus(HttpStatus.CONFLICT)
public ModelAndView handleException(OptimisticLockingFailureException e) {
ExtendedModelMap modelMap = new ExtendedModelMap();
modelMap.addAttribute("exceptionMessage", e.getMessage());
return new ModelAndView("exceptionhandling/exceptionHandler", modelMap);
}
@ExceptionHandler(PessimisticLockingFailureException.class)
@ResponseStatus(HttpStatus.CONFLICT)
public ModelAndView handleException(PessimisticLockingFailureException e) {
ExtendedModelMap modelMap = new ExtendedModelMap();
modelMap.addAttribute("exceptionMessage", e.getMessage());
return new ModelAndView("exceptionhandling/exceptionHandler", modelMap);
}
}