Author: andrei_exadel
Date: 2009-01-06 12:22:12 -0500 (Tue, 06 Jan 2009)
New Revision: 12140
Added:
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/converter/ActionParamConverter2.java
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/model/ActionParamObject2.java
trunk/test-applications/seleniumTest/richfaces/src/main/webapp/pages/actionParam/testConverterForProperJavaType.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-5536
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
16:57:39 UTC (rev 12139)
+++
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/bean/A4JActionParam.java 2009-01-06
17:22:12 UTC (rev 12140)
@@ -26,6 +26,7 @@
import javax.faces.event.ActionEvent;
import org.ajax4jsf.model.ActionParamObject;
+import org.ajax4jsf.model.ActionParamObject2;
import com.sun.faces.context.FacesContextImpl;
@@ -51,6 +52,8 @@
private ActionParamObject object = new ActionParamObject("actionParamName");
+ private ActionParamObject2 object2 = new
ActionParamObject2("actionParamName");
+
public void listener(ActionEvent event) {
FacesContext context = FacesContextImpl.getCurrentInstance();
Map<String, String> p = context.getExternalContext().getRequestParameterMap();
@@ -101,6 +104,20 @@
public void setObject(ActionParamObject object) {
this.object = object;
}
+
+ /**
+ * @return the object2
+ */
+ public ActionParamObject2 getObject2() {
+ return object2;
+ }
+
+ /**
+ * @param object2 the object2 to set
+ */
+ public void setObject2(ActionParamObject2 object2) {
+ this.object2 = object2;
+ }
Added:
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/converter/ActionParamConverter2.java
===================================================================
---
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/converter/ActionParamConverter2.java
(rev 0)
+++
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/converter/ActionParamConverter2.java 2009-01-06
17:22:12 UTC (rev 12140)
@@ -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.ActionParamObject2;
+
+/**
+ * @author Andrey
+ *
+ */
+public class ActionParamConverter2 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(",");
+ ActionParamObject2 object = null;
+ if (s != null && s.length == 2) {
+ object = new ActionParamObject2(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) {
+ ActionParamObject2 o = (ActionParamObject2)value;
+ return o.getName() + "," + o.getDate();
+ }
+
+}
Added:
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/model/ActionParamObject2.java
===================================================================
---
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/model/ActionParamObject2.java
(rev 0)
+++
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/model/ActionParamObject2.java 2009-01-06
17:22:12 UTC (rev 12140)
@@ -0,0 +1,45 @@
+/**
+ *
+ */
+package org.ajax4jsf.model;
+
+/**
+ * Action parameter object for proper JAVA type converter
+ * @author Andrey Markavtsov
+ *
+ */
+public class ActionParamObject2 {
+ String name;
+ String date;
+
+ public ActionParamObject2(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
16:57:39 UTC (rev 12139)
+++
trunk/test-applications/seleniumTest/richfaces/src/main/webapp/WEB-INF/faces-config.xml 2009-01-06
17:22:12 UTC (rev 12140)
@@ -24,6 +24,12 @@
<converter-id>actionParamConverter</converter-id>
<converter-class>org.ajax4jsf.converter.ActionParamConverter</converter-class>
</converter>
+
+ <converter>
+
<converter-for-class>org.ajax4jsf.model.ActionParamObject2</converter-for-class>
+
<converter-class>org.ajax4jsf.converter.ActionParamConverter2</converter-class>
+ </converter>
+
<validator>
<validator-id>validatorWithAttribute</validator-id>
Added:
trunk/test-applications/seleniumTest/richfaces/src/main/webapp/pages/actionParam/testConverterForProperJavaType.xhtml
===================================================================
---
trunk/test-applications/seleniumTest/richfaces/src/main/webapp/pages/actionParam/testConverterForProperJavaType.xhtml
(rev 0)
+++
trunk/test-applications/seleniumTest/richfaces/src/main/webapp/pages/actionParam/testConverterForProperJavaType.xhtml 2009-01-06
17:22:12 UTC (rev 12140)
@@ -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="param2"
assignTo="#{actionParam.object2}"
value="#{actionParam.object2}"></a4j:actionparam>
+ </a4j:commandLink>
+ </h:form>
+
+ <h:panelGrid columns="2" id="out">
+ <h:outputText value="Name:"></h:outputText>
+ <h:outputText id="name"
value="#{actionParam.object2.name}"></h:outputText>
+ <h:outputText value="Value"></h:outputText>
+ <h:outputText id="value"
value="#{actionParam.object2.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
16:57:39 UTC (rev 12139)
+++
trunk/test-applications/seleniumTest/richfaces/src/test/java/org/richfaces/testng/AjaxActionParameterTest.java 2009-01-06
17:22:12 UTC (rev 12140)
@@ -30,47 +30,26 @@
static final String TEST_CONVERTER_ATTRIBUTE =
"/pages/actionParam/testConverterAttribute.xhtml";
+ static final String TEST_CONVERTER_FOR_PROPER_JAVA_TYPE =
"/pages/actionParam/testConverterForProperJavaType.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");
-
+ testConverter(getParentId());
}
+
+ @Test
+ public void testConverterForProperJavaType(Template template) {
+ renderPage(TEST_CONVERTER_FOR_PROPER_JAVA_TYPE, template, null);
+ testConverter(getParentId());
+ }
/**
* Tests ajax action parameter component
*
* @param template
*/
- // @Test
+ @Test
public void testAjaxActionParameterComponent(Template template) {
renderPage(template);
String parentId = getParentId();
@@ -115,7 +94,39 @@
writeStatus("<a4j:actionParameter> passed successfully");
}
}
+
+ private void testConverter(String parentId) {
+ String ajaxLinkId = parentId + "form1:ajaxSubmit";
+ String paramNameId = parentId + "name";
+ String paramValueId = parentId + "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");
+ }
+
@Override
public String getTestUrl() {
return "pages/actionParam/actionParam.xhtml";