You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2009/09/29 00:47:08 UTC
svn commit: r819762 - in /myfaces/core/trunk/impl/src:
main/java/org/apache/myfaces/renderkit/html/
test/java/org/apache/myfaces/renderkit/html/
Author: lu4242
Date: Mon Sep 28 22:47:07 2009
New Revision: 819762
URL: http://svn.apache.org/viewvc?rev=819762&view=rev
Log:
MYFACES-2323 Implement <f:ajax> tag handler (Components that renders client behaviors should always render "id" and "name" attribute) (Thanks to Jakob Korherr for provide this patch).
Added:
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRendererTest.java (with props)
Modified:
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlCheckboxRendererTest.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlFormRendererTest.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlGridRendererTest.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlImageRendererTest.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLabelRendererTest.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLinkRendererTest.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlListboxRendererTest.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMenuRendererTest.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlRadioRendererTest.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlSecretRendererTest.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTableRendererTest.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTextRendererTest.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTextareaRendererTest.java
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java?rev=819762&r1=819761&r2=819762&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java Mon Sep 28 22:47:07 2009
@@ -62,17 +62,25 @@
encodeBefore(facesContext, writer, uiComponent);
writer.startElement(HTML.LABEL_ELEM, uiComponent);
- HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
Map<String, List<ClientBehavior>> behaviors = null;
if (uiComponent instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
{
behaviors = ((ClientBehaviorHolder) uiComponent).getClientBehaviors();
+ if (!behaviors.isEmpty())
+ {
+ HtmlRendererUtils.writeIdAndName(writer, uiComponent, facesContext);
+ }
+ else
+ {
+ HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
+ }
HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, uiComponent, behaviors);
HtmlRendererUtils.renderBehaviorizedFieldEventHandlersWithoutOnchangeAndOnselect(facesContext, writer, uiComponent, behaviors);
HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent, HTML.LABEL_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS);
}
else
{
+ HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent, HTML.LABEL_PASSTHROUGH_ATTRIBUTES);
}
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java?rev=819762&r1=819761&r2=819762&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java Mon Sep 28 22:47:07 2009
@@ -20,6 +20,7 @@
import java.io.StringWriter;
+import javax.faces.component.behavior.AjaxBehavior;
import javax.faces.component.html.HtmlCommandButton;
import javax.faces.component.html.HtmlForm;
@@ -161,4 +162,25 @@
}
}
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndName()
+ {
+ commandButton.addClientBehavior("focus", new AjaxBehavior());
+ try
+ {
+ commandButton.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches(".+id=\".+\".+"));
+ assertTrue(output.matches(".+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
+
}
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlCheckboxRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlCheckboxRendererTest.java?rev=819762&r1=819761&r2=819762&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlCheckboxRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlCheckboxRendererTest.java Mon Sep 28 22:47:07 2009
@@ -21,6 +21,7 @@
import java.io.StringWriter;
import javax.faces.component.UISelectItem;
+import javax.faces.component.behavior.AjaxBehavior;
import javax.faces.component.html.HtmlSelectBooleanCheckbox;
import javax.faces.component.html.HtmlSelectManyCheckbox;
@@ -140,4 +141,54 @@
}
}
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndNameSelectBooleanCheckbox()
+ {
+ selectBooleanCheckbox.addClientBehavior("focus", new AjaxBehavior());
+ try
+ {
+ selectBooleanCheckbox.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches(".+id=\".+\".+"));
+ assertTrue(output.matches(".+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndNameSelectManyCheckbox()
+ {
+ UISelectItem item1 = new UISelectItem();
+ item1.setItemLabel("#1");
+ item1.setItemValue("#1");
+
+ UISelectItem item2 = new UISelectItem();
+ item2.setItemLabel("#2");
+ item2.setItemValue("#2");
+
+ selectManyCheckbox.addClientBehavior("focus", new AjaxBehavior());
+ try
+ {
+ selectManyCheckbox.getChildren().add(item1);
+ selectManyCheckbox.getChildren().add(item2);
+ selectManyCheckbox.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches(".+id=\".+\".+"));
+ assertTrue(output.matches(".+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
}
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlFormRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlFormRendererTest.java?rev=819762&r1=819761&r2=819762&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlFormRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlFormRendererTest.java Mon Sep 28 22:47:07 2009
@@ -21,6 +21,7 @@
import java.io.PrintWriter;
import java.io.StringWriter;
+import javax.faces.component.behavior.AjaxBehavior;
import javax.faces.component.html.HtmlForm;
import junit.framework.Test;
@@ -117,4 +118,24 @@
}
return buffer.toString();
}
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndName()
+ {
+ form.addClientBehavior("focus", new AjaxBehavior());
+ try
+ {
+ form.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches(".+id=\".+\".+"));
+ assertTrue(output.matches(".+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
}
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlGridRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlGridRendererTest.java?rev=819762&r1=819761&r2=819762&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlGridRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlGridRendererTest.java Mon Sep 28 22:47:07 2009
@@ -21,6 +21,7 @@
import java.io.StringWriter;
import javax.faces.component.UIColumn;
+import javax.faces.component.behavior.AjaxBehavior;
import javax.faces.component.html.HtmlOutputText;
import javax.faces.component.html.HtmlPanelGrid;
@@ -132,4 +133,24 @@
fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
}
}
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndName()
+ {
+ panelGrid.addClientBehavior("click", new AjaxBehavior());
+ try
+ {
+ panelGrid.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches(".+id=\".+\".+"));
+ assertTrue(output.matches(".+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
}
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlImageRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlImageRendererTest.java?rev=819762&r1=819761&r2=819762&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlImageRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlImageRendererTest.java Mon Sep 28 22:47:07 2009
@@ -20,6 +20,7 @@
import java.io.StringWriter;
+import javax.faces.component.behavior.AjaxBehavior;
import javax.faces.component.html.HtmlGraphicImage;
import junit.framework.Test;
@@ -116,4 +117,24 @@
fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
}
}
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndName()
+ {
+ graphicImage.addClientBehavior("keypress", new AjaxBehavior());
+ try
+ {
+ graphicImage.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches(".+id=\".+\".+"));
+ assertTrue(output.matches(".+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
}
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLabelRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLabelRendererTest.java?rev=819762&r1=819761&r2=819762&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLabelRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLabelRendererTest.java Mon Sep 28 22:47:07 2009
@@ -20,6 +20,7 @@
import java.io.StringWriter;
+import javax.faces.component.behavior.AjaxBehavior;
import javax.faces.component.html.HtmlOutputLabel;
import junit.framework.Test;
@@ -101,4 +102,24 @@
fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
}
}
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndName()
+ {
+ label.addClientBehavior("keypress", new AjaxBehavior());
+ try
+ {
+ label.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches(".+id=\".+\".+"));
+ assertTrue(output.matches(".+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
}
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLinkRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLinkRendererTest.java?rev=819762&r1=819761&r2=819762&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLinkRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLinkRendererTest.java Mon Sep 28 22:47:07 2009
@@ -21,12 +21,15 @@
import java.io.StringWriter;
import javax.faces.component.UIForm;
+import javax.faces.component.behavior.AjaxBehavior;
import javax.faces.component.html.HtmlCommandLink;
+import javax.faces.component.html.HtmlOutcomeTargetLink;
import javax.faces.component.html.HtmlOutputLink;
import junit.framework.Test;
import junit.framework.TestSuite;
+import org.apache.myfaces.application.NavigationHandlerImpl;
import org.apache.myfaces.shared_impl.config.MyfacesConfig;
import org.apache.myfaces.test.utils.HtmlCheckAttributesUtil;
import org.apache.myfaces.test.utils.HtmlRenderedAttr;
@@ -48,6 +51,7 @@
private MockResponseWriter writer;
private HtmlCommandLink commandLink;
private HtmlOutputLink outputLink;
+ private HtmlOutcomeTargetLink outcomeTargetLink;
public HtmlLinkRendererTest(String name)
{
@@ -67,11 +71,13 @@
commandLink = new HtmlCommandLink();
outputLink = new HtmlOutputLink();
outputLink.setValue("http://someurl");
+ outcomeTargetLink = new HtmlOutcomeTargetLink();
form.getChildren().add(commandLink);
writer = new MockResponseWriter(new StringWriter(), null, null);
facesContext.setResponseWriter(writer);
+ facesContext.getApplication().setNavigationHandler(new NavigationHandlerImpl());
facesContext.getViewRoot().setRenderKitId(MockRenderKitFactory.HTML_BASIC_RENDER_KIT);
facesContext.getRenderKit().addRenderer(
@@ -86,6 +92,10 @@
outputLink.getFamily(),
outputLink.getRendererType(),
new HtmlLinkRenderer());
+ facesContext.getRenderKit().addRenderer(
+ outcomeTargetLink.getFamily(),
+ outcomeTargetLink.getRendererType(),
+ new HtmlLinkRenderer());
}
public void tearDown() throws Exception
@@ -218,4 +228,64 @@
fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
}
}
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndNameOutputLink()
+ {
+ outputLink.addClientBehavior("keypress", new AjaxBehavior());
+ try
+ {
+ outputLink.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches(".+id=\".+\".+"));
+ assertTrue(output.matches(".+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndNameCommandLink()
+ {
+ commandLink.addClientBehavior("keypress", new AjaxBehavior());
+ try
+ {
+ commandLink.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches("(?s).+id=\".+\".+"));
+ assertTrue(output.matches("(?s).+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndNameOutcomeTargetLink()
+ {
+ outcomeTargetLink.addClientBehavior("keypress", new AjaxBehavior());
+ try
+ {
+ outcomeTargetLink.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches(".+id=\".+\".+"));
+ assertTrue(output.matches(".+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
}
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlListboxRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlListboxRendererTest.java?rev=819762&r1=819761&r2=819762&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlListboxRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlListboxRendererTest.java Mon Sep 28 22:47:07 2009
@@ -22,7 +22,9 @@
import java.util.ArrayList;
import java.util.List;
+import javax.faces.component.UISelectItem;
import javax.faces.component.UISelectItems;
+import javax.faces.component.behavior.AjaxBehavior;
import javax.faces.component.html.HtmlSelectManyListbox;
import javax.faces.component.html.HtmlSelectOneListbox;
import javax.faces.model.SelectItem;
@@ -120,4 +122,64 @@
fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
}
}
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndNameSelectOneListbox()
+ {
+ UISelectItem item1 = new UISelectItem();
+ item1.setItemLabel("#1");
+ item1.setItemValue("#1");
+
+ UISelectItem item2 = new UISelectItem();
+ item2.setItemLabel("#2");
+ item2.setItemValue("#2");
+
+ selectOneListbox.addClientBehavior("keypress", new AjaxBehavior());
+ try
+ {
+ selectOneListbox.getChildren().add(item1);
+ selectOneListbox.getChildren().add(item2);
+ selectOneListbox.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches(".+id=\".+\".+"));
+ assertTrue(output.matches(".+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndNameSelectManyListbox()
+ {
+ UISelectItem item1 = new UISelectItem();
+ item1.setItemLabel("#1");
+ item1.setItemValue("#1");
+
+ UISelectItem item2 = new UISelectItem();
+ item2.setItemLabel("#2");
+ item2.setItemValue("#2");
+
+ selectManyListbox.addClientBehavior("keypress", new AjaxBehavior());
+ try
+ {
+ selectManyListbox.getChildren().add(item1);
+ selectManyListbox.getChildren().add(item2);
+ selectManyListbox.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches(".+id=\".+\".+"));
+ assertTrue(output.matches(".+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
}
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMenuRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMenuRendererTest.java?rev=819762&r1=819761&r2=819762&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMenuRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMenuRendererTest.java Mon Sep 28 22:47:07 2009
@@ -22,7 +22,9 @@
import java.util.ArrayList;
import java.util.List;
+import javax.faces.component.UISelectItem;
import javax.faces.component.UISelectItems;
+import javax.faces.component.behavior.AjaxBehavior;
import javax.faces.component.html.HtmlSelectManyMenu;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.model.SelectItem;
@@ -122,4 +124,64 @@
fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
}
}
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndNameSelectOneMenu()
+ {
+ UISelectItem item1 = new UISelectItem();
+ item1.setItemLabel("#1");
+ item1.setItemValue("#1");
+
+ UISelectItem item2 = new UISelectItem();
+ item2.setItemLabel("#2");
+ item2.setItemValue("#2");
+
+ selectOneMenu.addClientBehavior("keypress", new AjaxBehavior());
+ try
+ {
+ selectOneMenu.getChildren().add(item1);
+ selectOneMenu.getChildren().add(item2);
+ selectOneMenu.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches(".+id=\".+\".+"));
+ assertTrue(output.matches(".+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndNameSelectManyMenu()
+ {
+ UISelectItem item1 = new UISelectItem();
+ item1.setItemLabel("#1");
+ item1.setItemValue("#1");
+
+ UISelectItem item2 = new UISelectItem();
+ item2.setItemLabel("#2");
+ item2.setItemValue("#2");
+
+ selectManyMenu.addClientBehavior("keypress", new AjaxBehavior());
+ try
+ {
+ selectManyMenu.getChildren().add(item1);
+ selectManyMenu.getChildren().add(item2);
+ selectManyMenu.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches(".+id=\".+\".+"));
+ assertTrue(output.matches(".+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
}
Added: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRendererTest.java?rev=819762&view=auto
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRendererTest.java (added)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRendererTest.java Mon Sep 28 22:47:07 2009
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.myfaces.renderkit.html;
+
+import java.io.StringWriter;
+
+import javax.faces.component.behavior.AjaxBehavior;
+import javax.faces.component.html.HtmlForm;
+import javax.faces.component.html.HtmlOutcomeTargetButton;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.myfaces.application.NavigationHandlerImpl;
+import org.apache.shale.test.base.AbstractJsfTestCase;
+import org.apache.shale.test.mock.MockRenderKitFactory;
+import org.apache.shale.test.mock.MockResponseWriter;
+
+public class HtmlOutcomeTargetButtonRendererTest extends AbstractJsfTestCase {
+
+ private MockResponseWriter writer;
+ private HtmlOutcomeTargetButton outcomeTargetButton;
+ private HtmlForm form;
+
+ public HtmlOutcomeTargetButtonRendererTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return new TestSuite(HtmlOutcomeTargetButtonRendererTest.class);
+ }
+
+ public void setUp() throws Exception {
+ super.setUp();
+ writer = new MockResponseWriter(new StringWriter(), null, null);
+ facesContext.setResponseWriter(writer);
+ facesContext.getApplication().setNavigationHandler(new NavigationHandlerImpl());
+ outcomeTargetButton = new HtmlOutcomeTargetButton();
+ form = new HtmlForm();
+ outcomeTargetButton.setParent(form);
+
+ facesContext.getViewRoot().setRenderKitId(MockRenderKitFactory.HTML_BASIC_RENDER_KIT);
+ facesContext.getRenderKit().addRenderer(
+ outcomeTargetButton.getFamily(),
+ outcomeTargetButton.getRendererType(),
+ new HtmlOutcomeTargetButtonRenderer());
+ facesContext.getRenderKit().addRenderer(
+ form.getFamily(),
+ form.getRendererType(),
+ new HtmlFormRenderer());
+ }
+
+ public void tearDown() throws Exception {
+ super.tearDown();
+ writer = null;
+ }
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndName()
+ {
+ outcomeTargetButton.addClientBehavior("keypress", new AjaxBehavior());
+ try
+ {
+ outcomeTargetButton.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches(".+id=\".+\".+"));
+ assertTrue(output.matches(".+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
+
+}
Propchange: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRendererTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRendererTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlRadioRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlRadioRendererTest.java?rev=819762&r1=819761&r2=819762&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlRadioRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlRadioRendererTest.java Mon Sep 28 22:47:07 2009
@@ -22,7 +22,9 @@
import java.util.ArrayList;
import java.util.List;
+import javax.faces.component.UISelectItem;
import javax.faces.component.UISelectItems;
+import javax.faces.component.behavior.AjaxBehavior;
import javax.faces.component.html.HtmlSelectOneRadio;
import javax.faces.model.SelectItem;
@@ -125,4 +127,34 @@
fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
}
}
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndName()
+ {
+ UISelectItem item1 = new UISelectItem();
+ item1.setItemLabel("#1");
+ item1.setItemValue("#1");
+
+ UISelectItem item2 = new UISelectItem();
+ item2.setItemLabel("#2");
+ item2.setItemValue("#2");
+
+ selectOneRadio.addClientBehavior("keypress", new AjaxBehavior());
+ try
+ {
+ selectOneRadio.getChildren().add(item1);
+ selectOneRadio.getChildren().add(item2);
+ selectOneRadio.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches(".+id=\".+\".+"));
+ assertTrue(output.matches(".+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
}
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlSecretRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlSecretRendererTest.java?rev=819762&r1=819761&r2=819762&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlSecretRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlSecretRendererTest.java Mon Sep 28 22:47:07 2009
@@ -20,6 +20,7 @@
import java.io.StringWriter;
+import javax.faces.component.behavior.AjaxBehavior;
import javax.faces.component.html.HtmlInputSecret;
import junit.framework.Test;
@@ -92,4 +93,24 @@
fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
}
}
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndName()
+ {
+ inputText.addClientBehavior("keypress", new AjaxBehavior());
+ try
+ {
+ inputText.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches(".+id=\".+\".+"));
+ assertTrue(output.matches(".+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
}
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTableRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTableRendererTest.java?rev=819762&r1=819761&r2=819762&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTableRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTableRendererTest.java Mon Sep 28 22:47:07 2009
@@ -20,6 +20,7 @@
import java.io.StringWriter;
+import javax.faces.component.behavior.AjaxBehavior;
import javax.faces.component.html.HtmlDataTable;
import junit.framework.Test;
@@ -94,4 +95,24 @@
fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
}
}
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndName()
+ {
+ dataTable.addClientBehavior("keypress", new AjaxBehavior());
+ try
+ {
+ dataTable.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches("(?s).+id=\".+\".+"));
+ assertTrue(output.matches("(?s).+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
}
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTextRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTextRendererTest.java?rev=819762&r1=819761&r2=819762&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTextRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTextRendererTest.java Mon Sep 28 22:47:07 2009
@@ -25,6 +25,7 @@
import javax.faces.component.UIComponent;
import javax.faces.component.UIForm;
import javax.faces.component.UIViewRoot;
+import javax.faces.component.behavior.AjaxBehavior;
import javax.faces.component.html.HtmlInputText;
import javax.faces.component.html.HtmlOutputText;
import javax.faces.context.FacesContext;
@@ -176,5 +177,25 @@
assertNotSame(expression.getValue(facesContext.getELContext()), inputText.getValue());
assertNull(inputText.getValue());
}
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndName()
+ {
+ inputText.addClientBehavior("keypress", new AjaxBehavior());
+ try
+ {
+ inputText.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches("(?s).+id=\".+\".+"));
+ assertTrue(output.matches("(?s).+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
}
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTextareaRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTextareaRendererTest.java?rev=819762&r1=819761&r2=819762&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTextareaRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTextareaRendererTest.java Mon Sep 28 22:47:07 2009
@@ -20,6 +20,7 @@
import java.io.StringWriter;
+import javax.faces.component.behavior.AjaxBehavior;
import javax.faces.component.html.HtmlInputTextarea;
import junit.framework.Test;
@@ -103,4 +104,24 @@
fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
}
}
+
+ /**
+ * Components that render client behaviors should always render "id" and "name" attribute
+ */
+ public void testClientBehaviorHolderRendersIdAndName()
+ {
+ inputTextarea.addClientBehavior("keypress", new AjaxBehavior());
+ try
+ {
+ inputTextarea.encodeAll(facesContext);
+ String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+ assertTrue(output.matches("(?s).+id=\".+\".+"));
+ assertTrue(output.matches("(?s).+name=\".+\".+"));
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+
+ }
}