You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by gv...@apache.org on 2006/03/06 22:29:19 UTC
svn commit: r383678 - in
/struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config:
CommentTestCase.java comment.html layout.html
Author: gvanmatre
Date: Mon Mar 6 13:29:16 2006
New Revision: 383678
URL: http://svn.apache.org/viewcvs?rev=383678&view=rev
Log:
Added a test for a comment nested in a HTML template.
Added:
struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/layout.html (with props)
Modified:
struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/CommentTestCase.java
struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/comment.html
Modified: struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/CommentTestCase.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/CommentTestCase.java?rev=383678&r1=383677&r2=383678&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/CommentTestCase.java (original)
+++ struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/CommentTestCase.java Mon Mar 6 13:29:16 2006
@@ -47,22 +47,30 @@
}
+ //family, renderer type, Myfaces Impl, Sun RI Impl
protected String[][] RENDERERS = {
{"javax.faces.Output", "javax.faces.Text",
- "org.apache.myfaces.renderkit.html.HtmlTextRenderer", "com.sun.faces.renderkit.html_basic.TextRenderer",},
+ "org.apache.myfaces.renderkit.html.HtmlTextRenderer",
+ "com.sun.faces.renderkit.html_basic.TextRenderer",},
{"javax.faces.Input", "javax.faces.Text",
- "org.apache.myfaces.renderkit.html.HtmlTextRenderer", "com.sun.faces.renderkit.html_basic.TextRenderer"},
+ "org.apache.myfaces.renderkit.html.HtmlTextRenderer",
+ "com.sun.faces.renderkit.html_basic.TextRenderer"},
{"javax.faces.Output", "javax.faces.Label",
- "org.apache.myfaces.renderkit.html.HtmlLabelRenderer","com.sun.faces.renderkit.html_basic.LabelRenderer"}
+ "org.apache.myfaces.renderkit.html.HtmlLabelRenderer",
+ "com.sun.faces.renderkit.html_basic.LabelRenderer"}
};
public void setUp() {
super.setUp();
+ //Utility class is loaded as a managed bean in shale_core/META-INF/faces-config.xml
servletContext.setAttribute(ShaleConstants.TAG_UTILITY_BEAN, new Tags());
+
+ //It's necessary to explicitly set the kit id because it's lost when using the Sun RI.
facesContext.getViewRoot().setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
+ //loads the RI or myfaces renderers from the RENDERERS static array.
for (int i = 0; i < RENDERERS.length; i++) {
Renderer renderer = null;
@@ -90,11 +98,13 @@
}
+ //Tests the processing of a comment in a HTML template
public void testComment() throws Exception{
-
+ //done by the startup context listener
loadConfigFiles(null, null);
+
Clay clay = (Clay) application.createComponent("org.apache.shale.clay.component.Clay");
clay.setId("test");
clay.setJsfid("/org/apache/shale/clay/config/comment.html");
@@ -110,6 +120,51 @@
//start a document
buffResponsewriter.startDocument();
+ //render HTML
+ clay.encodeBegin(facesContext);
+ clay.encodeChildren(facesContext);
+ clay.encodeEnd(facesContext);
+
+ //end the document
+ buffResponsewriter.endDocument();
+
+ Parser p = new Parser();
+ List nodes = p.parse(writer.getBuffer());
+ assertEquals("1 root node", nodes.size(), 1);
+
+ Node comment = findComment((Node) nodes.get(0));
+ assertNotNull("comment found", comment);
+ assertTrue("is a comment", comment.isComment());
+
+ StringBuffer buff = concatCommentText(comment);
+ assertEquals(buff.toString(), "<!-- <span jsfid=\"outputText\"/> -->");
+
+ writer.close();
+
+ }
+
+ //Tests the handling of a comment in a nested template.
+ public void testNested() throws Exception {
+ loadConfigFiles(null, null);
+
+ Clay clay = (Clay) application.createComponent("org.apache.shale.clay.component.Clay");
+ clay.setId("test");
+ clay.setJsfid("/org/apache/shale/clay/config/layout.html");
+ clay.setManagedBeanName("test");
+
+ //the clayJsfid in the layout.html is a early EL "#{viewId}"
+ request.setAttribute("viewId", "/org/apache/shale/clay/config/comment.html");
+
+ //builds a buffer to write the page to
+ StringWriter writer = new StringWriter();
+ //create a buffered response writer
+ ResponseWriter buffResponsewriter = facesContext.getRenderKit()
+ .createResponseWriter(writer, null, response.getCharacterEncoding());
+ //push buffered writer to the faces context
+ facesContext.setResponseWriter(buffResponsewriter);
+ //start a document
+ buffResponsewriter.startDocument();
+
clay.encodeBegin(facesContext);
clay.encodeChildren(facesContext);
clay.encodeEnd(facesContext);
@@ -120,9 +175,39 @@
Parser p = new Parser();
List nodes = p.parse(writer.getBuffer());
assertEquals("1 root node", nodes.size(), 1);
- Node table = (Node) nodes.get(0);
- assertEquals("2 root node", table.getChildren().size(), 2);
- Node comment = (Node) table.getChildren().get(1);
+
+ Node comment = findComment((Node) nodes.get(0));
+ assertNotNull("comment found", comment);
+ assertTrue("is a comment", comment.isComment());
+
+ StringBuffer buff = concatCommentText(comment);
+ assertEquals(buff.toString(), "<!-- <span jsfid=\"outputText\"/> -->");
+
+ writer.close();
+ }
+
+ //Recursively traverse the parsed HTML document tree returning
+ //the first comment node.
+ private Node findComment(Node node) {
+ if (node.isComment())
+ return node;
+
+ Iterator ci = node.getChildren().iterator();
+ while (ci.hasNext()) {
+ Node child = (Node) ci.next();
+ Node comment = findComment(child);
+ if (comment != null)
+ return comment;
+ }
+
+ return null;
+
+ }
+
+ //Concatenate all of the parsed tokens in the comment
+ //into a single StringBuffer
+ private StringBuffer concatCommentText(Node comment) {
+ assertTrue("is comment node", comment.isComment());
StringBuffer buff = new StringBuffer();
buff.append(comment.getToken().getRawText());
@@ -130,12 +215,9 @@
while (ci.hasNext()) {
Node child = (Node) ci.next();
buff.append(child.getToken().getRawText());
- }
-
- assertEquals(buff.toString(), "<!-- <span jsfid=\"outputText\"/> -->");
-
- writer.close();
+ }
+ return buff;
}
}
Modified: struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/comment.html
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/comment.html?rev=383678&r1=383677&r2=383678&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/comment.html (original)
+++ struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/comment.html Mon Mar 6 13:29:16 2006
@@ -1 +1,9 @@
-<table><tr><td><label for=input id=label>Mock Address 1:</label></td><td><input id=input type=text size=45 value="test"></td></tr><!-- <span jsfid="outputText"/> --></table>
\ No newline at end of file
+<table>
+ <tr>
+ <td><label for=input id=label>Mock Address 1:</label></td>
+ <td><input id=input type=text size=45 value="test"></td>
+ </tr>
+ <tr>
+ <td><!-- <span jsfid="outputText"/> --></td>
+ </tr>
+</table>
\ No newline at end of file
Added: struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/layout.html
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/layout.html?rev=383678&view=auto
==============================================================================
--- struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/layout.html (added)
+++ struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/layout.html Mon Mar 6 13:29:16 2006
@@ -0,0 +1,8 @@
+<html>
+ <head><title>Test</title></head>
+ <body>
+ <span jsfid="clay" clayJsfid="#{viewId}" allowBody="false">
+ Mock Body
+ </span>
+ </body>
+</html>
\ No newline at end of file
Propchange: struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/layout.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/layout.html
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org