1 16 17 package org.jmanage.webui; 18 19 import org.apache.struts.action.*; 20 import org.apache.struts.config.ExceptionConfig; 21 import org.apache.struts.Globals; 22 import org.jmanage.core.services.ServiceException; 23 import org.jmanage.core.util.ErrorCodes; 24 import org.jmanage.core.util.Loggers; 25 import org.jmanage.core.util.ErrorCatalog; 26 import org.jmanage.core.management.ConnectionFailedException; 27 import org.jmanage.core.config.ApplicationConfigManager; 28 import org.jmanage.webui.util.Forwards; 29 import org.jmanage.webui.util.WebErrorCodes; 30 31 import javax.servlet.http.HttpServletRequest ; 32 import javax.servlet.http.HttpServletResponse ; 33 import javax.servlet.ServletException ; 34 import java.util.logging.Logger ; 35 import java.util.logging.Level ; 36 37 41 public class JManageExceptionHandler extends ExceptionHandler{ 42 43 private static final Logger logger = 44 Loggers.getLogger(JManageExceptionHandler.class); 45 46 58 public ActionForward execute(Exception exception, ExceptionConfig exConfig, 59 ActionMapping mapping, ActionForm form, 60 HttpServletRequest request, 61 HttpServletResponse response) 62 throws ServletException { 63 64 ActionErrors errors = new ActionErrors(); 65 ActionForward forward; 66 67 if(exception instanceof ServiceException){ 68 errors.add(ActionErrors.GLOBAL_ERROR, 69 new ActionError(WebErrorCodes.WEB_UI_ERROR_KEY, 70 exception.getMessage())); 71 }else if(exception instanceof ConnectionFailedException){ 72 logger.log(Level.FINE, "Failed to connect", exception); 74 return mapping.findForward(Forwards.CONNECTION_FAILED); 75 }else if(exception instanceof ApplicationConfigManager.DuplicateApplicationNameException){ 76 ApplicationConfigManager.DuplicateApplicationNameException ex = 79 (ApplicationConfigManager.DuplicateApplicationNameException)exception; 80 errors.add(ActionErrors.GLOBAL_ERROR, 81 new ActionError(WebErrorCodes.WEB_UI_ERROR_KEY, 82 ErrorCatalog.getMessage(ErrorCodes.APPLICATION_NAME_ALREADY_EXISTS, 83 ex.getAppName()))); 84 }else{ 85 logger.log(Level.SEVERE, "unknown exception", exception); 86 errors.add(ActionErrors.GLOBAL_ERROR, 87 new ActionError(ErrorCodes.UNKNOWN_ERROR)); 88 } 89 request.setAttribute(Globals.ERROR_KEY, errors); 90 forward = mapping.getInputForward(); 91 forward = forward != null && forward.getPath() != null ? 92 forward : mapping.findForward(Forwards.FAILURE); 93 forward = forward != null ? forward : new ActionForward(Forwards.FAILURE); 94 return forward; 95 } 96 } 97 | Popular Tags |