001    package railo.runtime.ext.tag;
002    
003    import javax.servlet.jsp.tagext.TryCatchFinally;
004    
005    import railo.loader.engine.CFMLEngineFactory;
006    import railo.runtime.exp.PageServletException;
007    import railo.runtime.util.Excepton;
008    
009    
010    /**
011     * extends Body Support Tag eith TryCatchFinally Functionality
012     */
013    public abstract class BodyTagTryCatchFinallySupport extends BodyTagSupport implements TryCatchFinally {
014    
015        /**
016         * @see javax.servlet.jsp.tagext.TryCatchFinally#doCatch(java.lang.Throwable)
017         */
018        public void doCatch(Throwable t) throws Throwable {
019            if(t instanceof PageServletException) {
020                PageServletException pse=(PageServletException)t;
021                t=pse.getPageException();
022            }
023            if(bodyContent!=null) {
024                Excepton util = CFMLEngineFactory.getInstance().getExceptionUtil();
025                if(util.isOfType(Excepton.TYPE_ABORT,t)) {
026                    bodyContent.writeOut(bodyContent.getEnclosingWriter());
027                }
028                bodyContent.clearBuffer();
029            }
030            throw t;
031        }
032    
033        /**
034         * @see javax.servlet.jsp.tagext.TryCatchFinally#doFinally()
035         */
036        public void doFinally() {
037            
038        }
039        
040    }