Author: gvanmatre Date: Sat Mar 4 15:34:50 2006 New Revision: 383226 URL: http://svn.apache.org/viewcvs?rev=383226&view=rev Log: Added a clay test for handling a comment block.
Added: struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/CommentTestCase.java (with props) struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/comment.html (with props) Modified: struts/shale/trunk/clay-plugin/build.xml struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/AnchorBuilderRule.java struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/DefaultBuilderRule.java struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/FormBuilderRule.java struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/InputBuilderRule.java struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/LabelBuilderRule.java struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/OptionBuilderRule.java struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/SelectBuilderRule.java struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/SpanBuilderRule.java struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/TextareaBuilderRule.java struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/AbstractTestCaseConfig.java Modified: struts/shale/trunk/clay-plugin/build.xml URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/build.xml?rev=383226&r1=383225&r2=383226&view=diff ============================================================================== --- struts/shale/trunk/clay-plugin/build.xml (original) +++ struts/shale/trunk/clay-plugin/build.xml Sat Mar 4 15:34:50 2006 @@ -96,6 +96,7 @@ <pathelement location="${servlet-api.jar}"/> <pathelement location="${shale-core.jar}"/> <pathelement location="${shale-test.jar}"/> + <pathelement location="${jsf-impl.jar}"/> <pathelement location="${build.home}/classes"/> <pathelement location="${build.home}/test-classes"/> </path> Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/AnchorBuilderRule.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/AnchorBuilderRule.java?rev=383226&r1=383225&r2=383226&view=diff ============================================================================== --- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/AnchorBuilderRule.java (original) +++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/AnchorBuilderRule.java Sat Mar 4 15:34:50 2006 @@ -62,7 +62,8 @@ BuilderRuleContext builderRuleContext = (BuilderRuleContext) context; Node node = builderRuleContext.getNode(); - if (node.getName() != null && node.getName().equalsIgnoreCase("a")) { + if (!node.isComment() && node.getName() != null + && node.getName().equalsIgnoreCase("a")) { builderRuleContext.setBuilder(builder); isFinal = true; Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/DefaultBuilderRule.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/DefaultBuilderRule.java?rev=383226&r1=383225&r2=383226&view=diff ============================================================================== --- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/DefaultBuilderRule.java (original) +++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/DefaultBuilderRule.java Sat Mar 4 15:34:50 2006 @@ -63,7 +63,7 @@ BuilderRuleContext builderRuleContext = (BuilderRuleContext) context; Node node = builderRuleContext.getNode(); - if (node.getName() != null && node.isComment()) { + if (node.isComment()) { builderRuleContext.setBuilder(builders[0]); } else if (node.getName() != null && node.getAttributes().containsKey("jsfid")) { builderRuleContext.setBuilder(builders[1]); Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/FormBuilderRule.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/FormBuilderRule.java?rev=383226&r1=383225&r2=383226&view=diff ============================================================================== --- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/FormBuilderRule.java (original) +++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/FormBuilderRule.java Sat Mar 4 15:34:50 2006 @@ -52,7 +52,8 @@ BuilderRuleContext builderRuleContext = (BuilderRuleContext) context; Node node = builderRuleContext.getNode(); - if (node.getName() != null && node.getName().equalsIgnoreCase("form")) { + if (!node.isComment() && node.getName() != null + && node.getName().equalsIgnoreCase("form")) { builderRuleContext.setBuilder(builder); isFinal = true; } Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/InputBuilderRule.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/InputBuilderRule.java?rev=383226&r1=383225&r2=383226&view=diff ============================================================================== --- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/InputBuilderRule.java (original) +++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/InputBuilderRule.java Sat Mar 4 15:34:50 2006 @@ -65,7 +65,9 @@ BuilderRuleContext builderRuleContext = (BuilderRuleContext) context; Node node = builderRuleContext.getNode(); - if (node.getName() != null && node.getName().equalsIgnoreCase("input")) { + if (!node.isComment() && node.getName() != null + && node.getName().equalsIgnoreCase("input")) { + String type = (String) node.getAttributes().get("type"); if (type != null && type.equalsIgnoreCase("text")) { builderRuleContext.setBuilder(builders[0]); Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/LabelBuilderRule.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/LabelBuilderRule.java?rev=383226&r1=383225&r2=383226&view=diff ============================================================================== --- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/LabelBuilderRule.java (original) +++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/LabelBuilderRule.java Sat Mar 4 15:34:50 2006 @@ -53,7 +53,9 @@ BuilderRuleContext builderRuleContext = (BuilderRuleContext) context; Node node = builderRuleContext.getNode(); - if (node.getName() != null && node.getName().equalsIgnoreCase("label")) { + if (!node.isComment() && node.getName() != null + && node.getName().equalsIgnoreCase("label")) { + builderRuleContext.setBuilder(builder); isFinal = true; } Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/OptionBuilderRule.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/OptionBuilderRule.java?rev=383226&r1=383225&r2=383226&view=diff ============================================================================== --- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/OptionBuilderRule.java (original) +++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/OptionBuilderRule.java Sat Mar 4 15:34:50 2006 @@ -52,7 +52,9 @@ BuilderRuleContext builderRuleContext = (BuilderRuleContext) context; Node node = builderRuleContext.getNode(); - if (node.getName() != null && node.getName().equalsIgnoreCase("option")) { + if (!node.isComment() && node.getName() != null + && node.getName().equalsIgnoreCase("option")) { + if (node.getChildren().size() > 0) { builderRuleContext.setBuilder(builders[0]); isFinal = true; Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/SelectBuilderRule.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/SelectBuilderRule.java?rev=383226&r1=383225&r2=383226&view=diff ============================================================================== --- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/SelectBuilderRule.java (original) +++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/SelectBuilderRule.java Sat Mar 4 15:34:50 2006 @@ -53,7 +53,9 @@ BuilderRuleContext builderRuleContext = (BuilderRuleContext) context; Node node = builderRuleContext.getNode(); - if (node.getName() != null && node.getName().equalsIgnoreCase("select")) { + if (!node.isComment() && node.getName() != null + && node.getName().equalsIgnoreCase("select")) { + if (!node.getAttributes().containsKey("multiple")) { builderRuleContext.setBuilder(builders[0]); isFinal = true; Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/SpanBuilderRule.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/SpanBuilderRule.java?rev=383226&r1=383225&r2=383226&view=diff ============================================================================== --- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/SpanBuilderRule.java (original) +++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/SpanBuilderRule.java Sat Mar 4 15:34:50 2006 @@ -55,7 +55,8 @@ BuilderRuleContext builderRuleContext = (BuilderRuleContext) context; Node node = builderRuleContext.getNode(); - if (node.getName() != null && node.getName().equals("span") + if (!node.isComment() && node.getName() != null + && node.getName().equals("span") && node.getAttributes().containsKey("jsfid")) { builderRuleContext.setBuilder(builder); Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/TextareaBuilderRule.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/TextareaBuilderRule.java?rev=383226&r1=383225&r2=383226&view=diff ============================================================================== --- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/TextareaBuilderRule.java (original) +++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/TextareaBuilderRule.java Sat Mar 4 15:34:50 2006 @@ -54,8 +54,9 @@ BuilderRuleContext builderRuleContext = (BuilderRuleContext) context; Node node = builderRuleContext.getNode(); - if (node.getName() != null - && node.getName().equalsIgnoreCase("textarea")) { + if (!node.isComment() && node.getName() != null + && node.getName().equalsIgnoreCase("textarea")) { + builderRuleContext.setBuilder(builder); isFinal = true; Modified: struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/AbstractTestCaseConfig.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/AbstractTestCaseConfig.java?rev=383226&r1=383225&r2=383226&view=diff ============================================================================== --- struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/AbstractTestCaseConfig.java (original) +++ struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/AbstractTestCaseConfig.java Sat Mar 4 15:34:50 2006 @@ -52,19 +52,20 @@ new String[] {"outputLabel", "javax.faces.HtmlOutputLabel", "javax.faces.component.html.HtmlOutputLabel"}, new String[] {"inputTextarea", "javax.faces.HtmlInputTextarea","javax.faces.component.html.HtmlInputTextarea"}, new String[] {"inputSecret", "javax.faces.HtmlInputSecret","javax.faces.component.html.HtmlInputSecret"}, - new String[] {"inputHidden", "javax.faces.HtmlInputHidden", "javax.faces.component.html.HtmlInputText"}, + new String[] {"inputText", "javax.faces.HtmlInputText", "javax.faces.component.html.HtmlInputText"}, new String[] {"image", "javax.faces.HtmlGraphicImage", "javax.faces.component.html.HtmlGraphicImage"}, new String[] {"form", "javax.faces.HtmlForm", "javax.faces.component.html.HtmlForm"}, new String[] {"dataTable", "javax.faces.HtmlDataTable", "javax.faces.component.html.HtmlDataTable"}, new String[] {"commandLink", "javax.faces.HtmlCommandLink", "javax.faces.component.html.HtmlCommandLink"}, new String[] {"column", "javax.faces.Column", "javax.faces.component.UIColumn"}, - new String[] {"inputText", "javax.faces.HtmlInputText", "javax.faces.component.html.HtmlInputHidden"}, + new String[] {"inputHidden", "javax.faces.HtmlInputHidden", "javax.faces.component.html.HtmlInputHidden"}, new String[] {"outputFormat", "javax.faces.HtmlOutputFormat", "javax.faces.component.html.HtmlOutputFormat"}, new String[] {"messages", "javax.faces.HtmlMessages", "javax.faces.component.html.HtmlMessages"}, new String[] {"message", "javax.faces.HtmlMessage", "javax.faces.component.html.HtmlMessage"}, new String[] {"commandButton", "javax.faces.HtmlCommandButton", "javax.faces.component.html.HtmlCommandButton"}, new String[] {"panelGrid", "javax.faces.HtmlPanelGrid", "javax.faces.component.html.HtmlPanelGrid"}, - new String[] {"namingContainer", "javax.faces.NamingContainer", "javax.faces.component.UINamingContainer"} + new String[] {"namingContainer", "javax.faces.NamingContainer", "javax.faces.component.UINamingContainer"}, + new String[] {"clay", "org.apache.shale.clay.component.Clay", "org.apache.shale.clay.component.Clay"} }; // load the mock component config data Added: 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=383226&view=auto ============================================================================== --- struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/CommentTestCase.java (added) +++ struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/CommentTestCase.java Sat Mar 4 15:34:50 2006 @@ -0,0 +1,141 @@ +/* + * Copyright 2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.shale.clay.config; + +import java.io.StringWriter; +import java.util.Iterator; +import java.util.List; + +import javax.faces.context.ResponseWriter; +import javax.faces.render.RenderKitFactory; +import javax.faces.render.Renderer; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.apache.shale.clay.component.Clay; +import org.apache.shale.clay.parser.Node; +import org.apache.shale.clay.parser.Parser; +import org.apache.shale.faces.ShaleConstants; +import org.apache.shale.util.Tags; + +// test processing comment blocks +public class CommentTestCase extends AbstractTestCaseConfig { + + // Construct a new instance of this test case. + public CommentTestCase(String name) { + super(name); + } + + // Return the tests included in this test case. + public static Test suite() { + + return (new TestSuite(CommentTestCase.class)); + + } + + protected String[][] RENDERERS = { + {"javax.faces.Output", "javax.faces.Text", + "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"}, + {"javax.faces.Output", "javax.faces.Label", + "org.apache.myfaces.renderkit.html.HtmlLabelRenderer","com.sun.faces.renderkit.html_basic.LabelRenderer"} + + }; + + public void setUp() { + super.setUp(); + + servletContext.setAttribute(ShaleConstants.TAG_UTILITY_BEAN, new Tags()); + facesContext.getViewRoot().setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT); + + for (int i = 0; i < RENDERERS.length; i++) { + + Renderer renderer = null; + renderer: for (int j = 2; j < 4; j++) { + try { + Class clazz = Class.forName(RENDERERS[i][j]); + if (clazz != null) { + renderer = (Renderer) clazz.newInstance(); + if (renderer != null) { + //System.out.println(RENDERERS[i][j]); + break renderer; + } + } + } catch (ClassNotFoundException e) { + } catch (InstantiationException e) { + } catch (IllegalAccessException e) { + } + } + + if (renderer != null) { + facesContext.getRenderKit().addRenderer(RENDERERS[i][0], RENDERERS[i][1], + renderer); + } + } + + } + + public void testComment() 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/comment.html"); + clay.setManagedBeanName("test"); + + //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); + + //end the document + buffResponsewriter.endDocument(); + + 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); + + StringBuffer buff = new StringBuffer(); + buff.append(comment.getToken().getRawText()); + Iterator ci = comment.getChildren().iterator(); + while (ci.hasNext()) { + Node child = (Node) ci.next(); + buff.append(child.getToken().getRawText()); + } + + assertEquals(buff.toString(), "<!-- <span jsfid=\"outputText\"/> -->"); + + writer.close(); + + } + +} Propchange: struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/CommentTestCase.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/CommentTestCase.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Added: 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=383226&view=auto ============================================================================== --- struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/comment.html (added) +++ struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/comment.html Sat Mar 4 15:34:50 2006 @@ -0,0 +1 @@ +<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 Propchange: struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/comment.html ------------------------------------------------------------------------------ svn:eol-style = native Propchange: struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/comment.html ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]