| 
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.opensymphony.xwork2.interceptor.AbstractInterceptor
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor
public class ExceptionMappingInterceptor
 This interceptor forms the core functionality of the exception handling feature. Exception handling allows you to map
 an exception to a result code, just as if the action returned a result code instead of throwing an unexpected
 exception. When an exception is encountered, it is wrapped with an ExceptionHolder and pushed on the stack,
 providing easy access to the exception from within your result.
 Note: While you can configure exception mapping in your configuration file at any point, the configuration
 will not have any effect if this interceptor is not in the interceptor stack for your actions. It is recommended that
 you make this interceptor the first interceptor on the stack, ensuring that it has full access to catch any
 exception, even those caused by other interceptors.
 
 
trace, debug, info, warn, error, fatal)? - defaut is debugcom.mycompany.app).
 Default is to use com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.publishException(com.opensymphony.xwork2.ActionInvocation, ExceptionHolder). The default implementation
 pushes the given ExceptionHolder on value stack. A custom implementation could add additional logging etc.
 
  Example code:
 
 
 <xwork>
     <package name="default" extends="xwork-default">
         <global-results>
             <result name="error" type="freemarker">error.ftl</result>
         </global-results>
         <global-exception-mappings>
             <exception-mapping exception="java.lang.Exception" result="error"/>
         </global-exception-mappings>
         <action name="test">
             <interceptor-ref name="exception"/>
             <interceptor-ref name="basicStack"/>
             <exception-mapping exception="com.acme.CustomException" result="custom_error"/>
             <result name="custom_error">custom_error.ftl</result>
             <result name="success" type="freemarker">test.ftl</result>
         </action>
     </package>
 </xwork>
 
 
 
 
 This second example will also log the exceptions using our own category
 com.mycompany.app.unhandled at WARN level. 
 
 
 
 <xwork>
   <package name="something" extends="xwork-default">
      <interceptors>
          <interceptor-stack name="exceptionmappingStack">
              <interceptor-ref name="exception">
                  <param name="logEnabled">true</param>
                  <param name="logCategory">com.mycompany.app.unhandled</param>
                  <param name="logLevel">WARN</param>                               
              </interceptor-ref>  
              <interceptor-ref name="i18n"/>
              <interceptor-ref name="staticParams"/>
              <interceptor-ref name="params"/>
              <interceptor-ref name="validation">
                  <param name="excludeMethods">input,back,cancel,browse</param>
              </interceptor-ref>
          </interceptor-stack>
      </interceptors>
      <default-interceptor-ref name="exceptionmappingStack"/>
    
      <global-results>
           <result name="unhandledException">/unhandled-exception.jsp</result>
      </global-results>
      <global-exception-mappings>
           <exception-mapping exception="java.lang.Exception" result="unhandledException"/>
      </global-exception-mappings>
        
      <action name="exceptionDemo" class="org.apache.struts2.showcase.exceptionmapping.ExceptionMappingAction">
          <exception-mapping exception="org.apache.struts2.showcase.exceptionmapping.ExceptionMappingException"
                             result="damm"/>
          <result name="input">index.jsp</result>
          <result name="success">success.jsp</result>            
          <result name="damm">damm.jsp</result>
      </action>
   </package>
 </xwork>
 
 
- Author:
 
  - Matthew E. Porter (matthew dot porter at metissian dot com), Claus Ibsen
 
- See Also:
 - Serialized Form
 
Field Summary 
 
protected  Logger 
categoryLogger
            
 
protected static Logger 
LOG
            
 
protected  String 
logCategory
            
 
protected  boolean 
logEnabled
            
 
protected  String 
logLevel
            
 
 
Constructor Summary 
 
ExceptionMappingInterceptor()
            
 
 
Method Summary 
 
protected  void 
doLog(Logger logger,
      Exception e)
          Performs the actual logging. 
 
private  String 
findResultFromExceptions(List exceptionMappings,
                         Throwable t)
            
 
private  int 
getDepth(String exceptionMapping,
         Class exceptionClass,
         int depth)
            
 
 int 
getDepth(String exceptionMapping,
         Throwable t)
          Return the depth to the superclass matching. 
 
 String 
getLogCategory()
            
 
 String 
getLogLevel()
            
 
protected  void 
handleLogging(Exception e)
          Handles the logging of the exception. 
 
 String 
intercept(ActionInvocation invocation)
          Override to handle interception 
 
 boolean 
isLogEnabled()
            
 
protected  void 
publishException(ActionInvocation invocation,
                 ExceptionHolder exceptionHolder)
          Default implementation to handle ExceptionHolder publishing. 
 
 void 
setLogCategory(String logCatgory)
            
 
 void 
setLogEnabled(boolean logEnabled)
            
 
 void 
setLogLevel(String logLevel)
            
 
 
Methods inherited from class com.opensymphony.xwork2.interceptor.AbstractInterceptor 
 
destroy, init 
 
 
Methods inherited from class java.lang.Object 
 
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 
 
 
Field Detail 
 
LOG
protected static final Logger LOG
categoryLogger
protected Logger categoryLogger
logEnabled
protected boolean logEnabled
logCategory
protected String logCategory
logLevel
protected String logLevel
Constructor Detail 
 
ExceptionMappingInterceptor
public ExceptionMappingInterceptor()
Method Detail 
 
isLogEnabled
public boolean isLogEnabled()
 
setLogEnabled
public void setLogEnabled(boolean logEnabled)
 
getLogCategory
public String getLogCategory()
 
setLogCategory
public void setLogCategory(String logCatgory)
 
getLogLevel
public String getLogLevel()
 
setLogLevel
public void setLogLevel(String logLevel)
 
intercept
public String intercept(ActionInvocation invocation)
                 throws Exception
- Description copied from class: 
AbstractInterceptor 
- Override to handle interception
- Specified by:
 intercept in interface Interceptor- Specified by:
 intercept in class AbstractInterceptor
 
- Parameters:
 invocation - the action invocation
- Returns:
 - the return code, either returned from 
ActionInvocation.invoke(), or from the interceptor itself.
 - Throws:
 Exception - any system-level error, as defined in Action.execute().
 
 
handleLogging
protected void handleLogging(Exception e)
- Handles the logging of the exception.
- Parameters:
 e - the exception to log.
 
 
doLog
protected void doLog(Logger logger,
                     Exception e)
- Performs the actual logging.
- Parameters:
 logger - the provided logger to use.e - the exception to log.
 
 
findResultFromExceptions
private String findResultFromExceptions(List exceptionMappings,
                                        Throwable t)
 
getDepth
public int getDepth(String exceptionMapping,
                    Throwable t)
- Return the depth to the superclass matching. 0 means ex matches exactly. Returns -1 if there's no match.
 Otherwise, returns depth. Lowest depth wins.
- Parameters:
 exceptionMapping - the mapping classnamet - the cause
- Returns:
 - the depth, if not found -1 is returned.
 
 
 
getDepth
private int getDepth(String exceptionMapping,
                     Class exceptionClass,
                     int depth)
 
publishException
protected void publishException(ActionInvocation invocation,
                                ExceptionHolder exceptionHolder)
- Default implementation to handle ExceptionHolder publishing. Pushes given ExceptionHolder on the stack.
 Subclasses may override this to customize publishing.
- Parameters:
 invocation - The invocation to publish Exception for.exceptionHolder - The exceptionHolder wrapping the Exception to publish.
 
 
  
      Overview  
      Package  
    Class  
      Use  
      Tree  
      Deprecated  
      Index  
      Help  
   
 
 
 
 PREV CLASS 
 NEXT CLASS 
  FRAMES   
 NO FRAMES   
 
 
 
  SUMMARY: NESTED | FIELD | CONSTR | METHOD 
DETAIL: FIELD | CONSTR | METHOD 
 
Copyright © 2000-2008 Apache Software Foundation. All Rights Reserved.