KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > icesoft > faces > renderkit > IncludeRenderer


1 /*
2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3  *
4  * "The contents of this file are subject to the Mozilla Public License
5  * Version 1.1 (the "License"); you may not use this file except in
6  * compliance with the License. You may obtain a copy of the License at
7  * http://www.mozilla.org/MPL/
8  *
9  * Software distributed under the License is distributed on an "AS IS"
10  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
11  * License for the specific language governing rights and limitations under
12  * the License.
13  *
14  * The Original Code is ICEfaces 1.5 open source software code, released
15  * November 5, 2006. The Initial Developer of the Original Code is ICEsoft
16  * Technologies Canada, Corp. Portions created by ICEsoft are Copyright (C)
17  * 2004-2006 ICEsoft Technologies Canada, Corp. All Rights Reserved.
18  *
19  * Contributor(s): _____________________.
20  *
21  * Alternatively, the contents of this file may be used under the terms of
22  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"
23  * License), in which case the provisions of the LGPL License are
24  * applicable instead of those above. If you wish to allow use of your
25  * version of this file only under the terms of the LGPL License and not to
26  * allow others to use your version of this file under the MPL, indicate
27  * your decision by deleting the provisions above and replace them with
28  * the notice and other provisions required by the LGPL License. If you do
29  * not delete the provisions above, a recipient may use your version of
30  * this file under either the MPL or the LGPL License."
31  *
32  */

33
34 package com.icesoft.faces.renderkit;
35
36 import com.icesoft.faces.renderkit.dom_html_basic.TextRenderer;
37 import org.apache.commons.logging.Log;
38 import org.apache.commons.logging.LogFactory;
39
40 import javax.faces.component.UIComponent;
41 import javax.faces.component.UIOutput;
42 import javax.faces.context.FacesContext;
43 import javax.servlet.http.HttpServletRequest JavaDoc;
44 import javax.servlet.http.HttpSession JavaDoc;
45 import java.io.IOException JavaDoc;
46 import java.io.InputStreamReader JavaDoc;
47 import java.io.Reader JavaDoc;
48 import java.io.StringWriter JavaDoc;
49 import java.net.URI JavaDoc;
50 import java.net.URL JavaDoc;
51 import java.net.URLConnection JavaDoc;
52
53 public class IncludeRenderer extends TextRenderer {
54
55     private static final Log log = LogFactory.getLog(IncludeRenderer.class);
56
57     public void encodeBegin(FacesContext context, UIComponent component)
58             throws IOException JavaDoc {
59         if (context == null || component == null) {
60             throw new NullPointerException JavaDoc(
61                     "Null Faces context or component parameter");
62         }
63         // suppress rendering if "rendered" property on the component is
64
// false.
65
if (!component.isRendered()) {
66             return;
67         }
68
69         String JavaDoc page = (String JavaDoc) component.getAttributes().get("page");
70
71         HttpServletRequest JavaDoc request = (HttpServletRequest JavaDoc)
72                 context.getExternalContext().getRequest();
73         URI JavaDoc absoluteURI = null;
74         try {
75             absoluteURI = new URI JavaDoc(
76                     request.getScheme() + "://" +
77                     request.getServerName() + ":" +
78                     request.getServerPort() +
79                     request.getRequestURI());
80             URL JavaDoc includedURL = absoluteURI.resolve(page).toURL();
81             URLConnection JavaDoc includedConnection = includedURL.openConnection();
82             includedConnection
83                     .setRequestProperty( "Cookie",
84                     "JSESSIONID=" + ((HttpSession JavaDoc) context.getExternalContext()
85                             .getSession( false)).getId() );
86             Reader JavaDoc contentsReader = new InputStreamReader JavaDoc(
87                     includedConnection.getInputStream());
88
89             StringWriter JavaDoc includedContents = new StringWriter JavaDoc();
90             char[] buf = new char[2000];
91             int len = 0;
92             while ((len = contentsReader.read(buf)) > -1) {
93                 includedContents.write(buf, 0, len);
94             }
95
96             ((UIOutput) component).setValue(includedContents.toString());
97
98         } catch (Exception JavaDoc e) {
99             if (log.isDebugEnabled()) {
100                 log.debug(e.getMessage());
101             }
102         }
103
104         super.encodeBegin(context, component);
105     }
106
107
108 }
109
Popular Tags