KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > caucho > jsp > JspFragmentSupport


1 /*
2  * Copyright (c) 1998-2006 Caucho Technology -- all rights reserved
3  *
4  * This file is part of Resin(R) Open Source
5  *
6  * Each copy or derived work must preserve the copyright notice and this
7  * notice unmodified.
8  *
9  * Resin Open Source is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * Resin Open Source is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
17  * of NON-INFRINGEMENT. See the GNU General Public License for more
18  * details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with Resin Open Source; if not, write to the
22  * Free SoftwareFoundation, Inc.
23  * 59 Temple Place, Suite 330
24  * Boston, MA 02111-1307 USA
25  *
26  * @author Scott Ferguson
27  */

28
29 package com.caucho.jsp;
30
31 import com.caucho.log.Log;
32
33 import javax.el.ELContext;
34 import javax.servlet.jsp.JspContext JavaDoc;
35 import javax.servlet.jsp.JspException JavaDoc;
36 import javax.servlet.jsp.JspWriter JavaDoc;
37 import javax.servlet.jsp.tagext.JspFragment JavaDoc;
38 import javax.servlet.jsp.tagext.JspTag JavaDoc;
39 import java.io.Writer JavaDoc;
40 import java.util.logging.Logger JavaDoc;
41
42 /**
43  * Abstract implementation for the fragment support.
44  */

45 abstract public class JspFragmentSupport extends JspFragment JavaDoc {
46   private static final Logger JavaDoc log = Log.open(JspFragmentSupport.class);
47
48   // the page context
49
protected PageContextImpl pageContext;
50
51   // the EL context
52
protected ELContext _jsp_env;
53   
54   // the parent tag
55
protected JspTag JavaDoc _jsp_parent_tag;
56   
57   // the tag body
58
protected JspFragment JavaDoc _jspBody;
59
60   /**
61    * Returns the context.
62    */

63   public JspContext JavaDoc getJspContext()
64   {
65     return this.pageContext;
66   }
67
68   /**
69    * The public JspFragment interface.
70    *
71    * @param out optional location for the output
72    * @param vars optional map to replace the page context
73    */

74   public void invoke(Writer JavaDoc out)
75     throws JspException JavaDoc
76   {
77     JspWriter JavaDoc oldOut = null;
78
79     if (out != null)
80       oldOut = pageContext.pushBody(out);
81
82     try {
83       _jsp_invoke(pageContext.getOut());
84     } catch (RuntimeException JavaDoc e) {
85       throw e;
86     } catch (Error JavaDoc e) {
87       throw e;
88     } catch (JspException JavaDoc e) {
89       throw e;
90     } catch (Throwable JavaDoc e) {
91       throw new JspException JavaDoc(e);
92     } finally {
93       if (oldOut != null)
94         pageContext.setWriter(oldOut);
95     }
96   }
97   
98   /**
99    * Implementations will generate code for this.
100    */

101   abstract protected void _jsp_invoke(JspWriter JavaDoc out)
102     throws Throwable JavaDoc;
103 }
104
Popular Tags