craigmcc 01/04/28 20:59:05 Modified: src/share/org/apache/struts/taglib/template GetTag.java InsertTag.java Log: If <template:get> or <template:insert> throw an exception, do not override a nested exception already created by an included JSP page if it already exists at the standard Action.EXCEPTION_KEY request attribute key. PR: Bugzilla #1324 Submitted by: Dmitri Plotnikov <[EMAIL PROTECTED]> Revision Changes Path 1.8 +24 -8 jakarta-struts/src/share/org/apache/struts/taglib/template/GetTag.java Index: GetTag.java =================================================================== RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/template/GetTag.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- GetTag.java 2001/02/26 16:44:16 1.7 +++ GetTag.java 2001/04/29 03:59:04 1.8 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/template/GetTag.java,v 1.7 2001/02/26 16:44:16 dgeary Exp $ - * $Revision: 1.7 $ - * $Date: 2001/02/26 16:44:16 $ + * $Header: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/template/GetTag.java,v 1.8 2001/04/29 03:59:04 craigmcc Exp $ + * $Revision: 1.8 $ + * $Date: 2001/04/29 03:59:04 $ * * ==================================================================== * @@ -75,7 +75,7 @@ * it, depending upon the value of the content's direct attribute. * * @author David Geary - * @version $Revision: 1.7 $ $Date: 2001/02/26 16:44:16 $ + * @version $Revision: 1.8 $ $Date: 2001/04/29 03:59:04 $ */ public class GetTag extends TagSupport { @@ -152,8 +152,7 @@ pageContext.getOut().print(content.toString()); } catch(java.io.IOException ex) { - pageContext.setAttribute(Action.EXCEPTION_KEY, ex, - PageContext.REQUEST_SCOPE); + saveException(ex); throw new JspException(ex.getMessage()); } } @@ -162,8 +161,7 @@ pageContext.include(content.toString()); } catch(Exception ex) { - pageContext.setAttribute(Action.EXCEPTION_KEY, ex, - PageContext.REQUEST_SCOPE); + saveException(ex); throw new JspException(ex.getMessage()); } } @@ -183,5 +181,23 @@ name = role = null; } + + + /** + * Save the specified exception in request scope if there is not already + * one present. + * + * @param exception Exception to be conditionally saved + */ + private void saveException(Throwable exception) { + + if (pageContext.getAttribute(Action.EXCEPTION_KEY, + PageContext.REQUEST_SCOPE) != null) + return; + pageContext.setAttribute(Action.EXCEPTION_KEY, exception, + PageContext.REQUEST_SCOPE); + + } + } 1.7 +23 -6 jakarta-struts/src/share/org/apache/struts/taglib/template/InsertTag.java Index: InsertTag.java =================================================================== RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/template/InsertTag.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- InsertTag.java 2001/02/26 16:44:16 1.6 +++ InsertTag.java 2001/04/29 03:59:05 1.7 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/template/InsertTag.java,v 1.6 2001/02/26 16:44:16 dgeary Exp $ - * $Revision: 1.6 $ - * $Date: 2001/02/26 16:44:16 $ + * $Header: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/template/InsertTag.java,v 1.7 2001/04/29 03:59:05 craigmcc Exp $ + * $Revision: 1.7 $ + * $Date: 2001/04/29 03:59:05 $ * * ==================================================================== * @@ -74,7 +74,7 @@ * tags, which are accessed by <template:get> in the template. * * @author David Geary - * @version $Revision: 1.6 $ $Date: 2001/02/26 16:44:16 $ + * @version $Revision: 1.7 $ $Date: 2001/04/29 03:59:05 $ */ public class InsertTag extends TagSupport { @@ -145,8 +145,7 @@ pageContext.include(template); } catch(Exception ex) { // IOException or ServletException - pageContext.setAttribute(Action.EXCEPTION_KEY, ex, - PageContext.REQUEST_SCOPE); + saveException(ex); throw new JspException(ex.getMessage()); } ContentMapStack.pop(pageContext); @@ -177,5 +176,23 @@ map = null; } + + + /** + * Save the specified exception in request scope if there is not already + * one present. + * + * @param exception Exception to be conditionally saved + */ + private void saveException(Throwable exception) { + + if (pageContext.getAttribute(Action.EXCEPTION_KEY, + PageContext.REQUEST_SCOPE) != null) + return; + pageContext.setAttribute(Action.EXCEPTION_KEY, exception, + PageContext.REQUEST_SCOPE); + + } + }