Author: andrei_exadel
Date: 2009-01-06 11:29:13 -0500 (Tue, 06 Jan 2009)
New Revision: 12135
Added:
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/converter/
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/converter/ActionParamConverter.java
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/model/ActionParamObject.java
trunk/test-applications/seleniumTest/richfaces/src/main/webapp/pages/actionParam/testConverterAttribute.xhtml
Modified:
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/bean/A4JActionParam.java
trunk/test-applications/seleniumTest/richfaces/src/main/webapp/WEB-INF/faces-config.xml
trunk/test-applications/seleniumTest/richfaces/src/test/java/org/richfaces/testng/AjaxActionParameterTest.java
Log:
RF-5535
Modified:
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/bean/A4JActionParam.java
===================================================================
---
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/bean/A4JActionParam.java 2009-01-06
15:58:26 UTC (rev 12134)
+++
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/bean/A4JActionParam.java 2009-01-06
16:29:13 UTC (rev 12135)
@@ -25,6 +25,8 @@
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
+import org.ajax4jsf.model.ActionParamObject;
+
import com.sun.faces.context.FacesContextImpl;
public class A4JActionParam {
@@ -47,6 +49,8 @@
private String errorMessage = null;
+ private ActionParamObject object = new ActionParamObject("actionParamName");
+
public void listener(ActionEvent event) {
FacesContext context = FacesContextImpl.getCurrentInstance();
Map<String, String> p = context.getExternalContext().getRequestParameterMap();
@@ -89,6 +93,14 @@
public void setParameterValue(String parameterValue) {
this.parameterValue = parameterValue;
}
+
+ public ActionParamObject getObject() {
+ return object;
+ }
+
+ public void setObject(ActionParamObject object) {
+ this.object = object;
+ }
Added:
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/converter/ActionParamConverter.java
===================================================================
---
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/converter/ActionParamConverter.java
(rev 0)
+++
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/converter/ActionParamConverter.java 2009-01-06
16:29:13 UTC (rev 12135)
@@ -0,0 +1,44 @@
+/**
+ *
+ */
+package org.ajax4jsf.converter;
+
+import java.util.Date;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+
+import org.ajax4jsf.model.ActionParamObject;
+
+/**
+ * @author Andrey Markavtsov
+ *
+ */
+public class ActionParamConverter implements Converter {
+
+ /* (non-Javadoc)
+ * @see javax.faces.convert.Converter#getAsObject(javax.faces.context.FacesContext,
javax.faces.component.UIComponent, java.lang.String)
+ */
+ public Object getAsObject(FacesContext context, UIComponent component,
+ String value) {
+ String [] s = value.split(",");
+ ActionParamObject object = null;
+ if (s != null && s.length == 2) {
+ object = new ActionParamObject(s[0]);
+ object.setDate(String.valueOf(new Date().getTime()));
+ }
+
+ return object;
+ }
+
+ /* (non-Javadoc)
+ * @see javax.faces.convert.Converter#getAsString(javax.faces.context.FacesContext,
javax.faces.component.UIComponent, java.lang.Object)
+ */
+ public String getAsString(FacesContext context, UIComponent component,
+ Object value) {
+ ActionParamObject o = (ActionParamObject)value;
+ return o.getName() + "," + o.getDate();
+ }
+
+}
Added:
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/model/ActionParamObject.java
===================================================================
---
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/model/ActionParamObject.java
(rev 0)
+++
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/model/ActionParamObject.java 2009-01-06
16:29:13 UTC (rev 12135)
@@ -0,0 +1,46 @@
+/**
+ *
+ */
+package org.ajax4jsf.model;
+
+/**
+ * @author Andrey Markavtsov
+ *
+ */
+public class ActionParamObject {
+ String name;
+ String date;
+
+ public ActionParamObject(String name) {
+ super();
+ this.name = name;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!(obj instanceof ActionParamObject)) {
+ return false;
+ }
+
+ ActionParamObject o = (ActionParamObject)obj;
+ return o.name.equals(this.name) && o.date.equals(this.date);
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDate() {
+ return date;
+ }
+
+ public void setDate(String date) {
+ this.date = date;
+ }
+
+
+}
Modified:
trunk/test-applications/seleniumTest/richfaces/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
---
trunk/test-applications/seleniumTest/richfaces/src/main/webapp/WEB-INF/faces-config.xml 2009-01-06
15:58:26 UTC (rev 12134)
+++
trunk/test-applications/seleniumTest/richfaces/src/main/webapp/WEB-INF/faces-config.xml 2009-01-06
16:29:13 UTC (rev 12135)
@@ -20,6 +20,11 @@
<converter-class>org.ajax4jsf.model.ListShuttleConverter</converter-class>
</converter>
+ <converter>
+ <converter-id>actionParamConverter</converter-id>
+
<converter-class>org.ajax4jsf.converter.ActionParamConverter</converter-class>
+ </converter>
+
<validator>
<validator-id>validatorWithAttribute</validator-id>
<validator-class>org.ajax4jsf.validators.ValidatorWithAttribute</validator-class>
Added:
trunk/test-applications/seleniumTest/richfaces/src/main/webapp/pages/actionParam/testConverterAttribute.xhtml
===================================================================
---
trunk/test-applications/seleniumTest/richfaces/src/main/webapp/pages/actionParam/testConverterAttribute.xhtml
(rev 0)
+++
trunk/test-applications/seleniumTest/richfaces/src/main/webapp/pages/actionParam/testConverterAttribute.xhtml 2009-01-06
16:29:13 UTC (rev 12135)
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html
xmlns="http://www.w3.org/1999/xhtml"
+
xmlns:a4j="http://richfaces.org/a4j"
+
xmlns:rich="http://richfaces.org/rich"
+
xmlns:h="http://java.sun.com/jsf/html"
+
xmlns:f="http://java.sun.com/jsf/core"
+
xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<ui:composition template="#{templateBean.template}">
+ <ui:define name="style">
+
+ </ui:define>
+ <ui:define name="component">
+
+
+ <h:form id="form1">
+ <a4j:commandLink value="Ajax Submit" id="ajaxSubmit"
reRender="out, ajaxSubmit">
+ <a4j:actionparam name="param" assignTo="#{actionParam.object}"
converter="actionParamConverter"
value="#{actionParam.object}"></a4j:actionparam>
+ </a4j:commandLink>
+ </h:form>
+
+ <h:panelGrid columns="2" id="out">
+ <h:outputText value="Name:"></h:outputText>
+ <h:outputText id="name"
value="#{actionParam.object.name}"></h:outputText>
+ <h:outputText value="Value"></h:outputText>
+ <h:outputText id="value"
value="#{actionParam.object.date}"></h:outputText>
+ </h:panelGrid>
+ </ui:define>
+</ui:composition>
+</html>
\ No newline at end of file
Modified:
trunk/test-applications/seleniumTest/richfaces/src/test/java/org/richfaces/testng/AjaxActionParameterTest.java
===================================================================
---
trunk/test-applications/seleniumTest/richfaces/src/test/java/org/richfaces/testng/AjaxActionParameterTest.java 2009-01-06
15:58:26 UTC (rev 12134)
+++
trunk/test-applications/seleniumTest/richfaces/src/test/java/org/richfaces/testng/AjaxActionParameterTest.java 2009-01-06
16:29:13 UTC (rev 12135)
@@ -27,13 +27,50 @@
import org.testng.annotations.Test;
public class AjaxActionParameterTest extends SeleniumTestBase {
+
+ static final String TEST_CONVERTER_ATTRIBUTE =
"/pages/actionParam/testConverterAttribute.xhtml";
+
+ @Test
+ public void testConverterAttribute(Template template) {
+ renderPage(TEST_CONVERTER_ATTRIBUTE, template, null);
+ String ajaxLinkId = getParentId() + "form1:ajaxSubmit";
+ String paramNameId = getParentId() + "name";
+ String paramValueId = getParentId() + "value";
+
+ String onclick =
selenium.getAttribute("//*[@id='"+ajaxLinkId+"']/@onclick");
+ if (!onclick.contains("actionParamName,")) {
+ Assert.fail("Object has not been converted to string properly But was: " +
onclick);
+ }
+
+ AssertTextEquals(paramNameId, "actionParamName");
+ AssertTextEquals(paramValueId, "", "Value should be empty. It should be
filled while parameter converting");
+
+ clickAjaxCommandAndWait(ajaxLinkId);
+
+
+ String text = getTextById(paramValueId);
+ if (text == null || text.length() == 0) {
+ Assert.fail("Converter has not been performed. Value should not be
empty.");
+ }
+
+ onclick =
selenium.getAttribute("//*[@id='"+ajaxLinkId+"']/@onclick");
+ if (!onclick.contains("actionParamName," + text)) {
+ Assert.fail("Object has not been converted to string properly. It should consist
from 'actionParamName,' + current date time. But was: " + onclick);
+ }
+
+ clickAjaxCommandAndWait(ajaxLinkId);
+
+ AssertTextNotEquals(paramValueId, text, "Value should be changed after each
submit");
+
+ }
+
/**
* Tests ajax action parameter component
*
* @param template
*/
- @Test
+ // @Test
public void testAjaxActionParameterComponent(Template template) {
renderPage(template);
String parentId = getParentId();