Author: pyaschenko
Date: 2010-10-27 12:03:48 -0400 (Wed, 27 Oct 2010)
New Revision: 19702
Modified:
branches/RF-8742/core/api/src/main/java/org/richfaces/application/MessageFactory.java
branches/RF-8742/core/impl/src/main/java/org/richfaces/application/MessageFactoryImpl.java
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/LibraryScriptFunction.java
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/NullConverterScript.java
branches/RF-8742/ui/validator/ui/src/main/resources/META-INF/resources/org.richfaces/converter-number.js
branches/RF-8742/ui/validator/ui/src/main/resources/META-INF/resources/org.richfaces/richfaces-csv.js
branches/RF-8742/ui/validator/ui/src/test/java/org/richfaces/convert/BaseConverterTest.java
branches/RF-8742/ui/validator/ui/src/test/java/org/richfaces/convert/NumberConverterTest.java
branches/RF-8742/ui/validator/ui/src/test/resources/org/richfaces/convert/test.xhtml
Log:
https://jira.jboss.org/browse/RF-9215
https://jira.jboss.org/browse/RF-9521
Modified:
branches/RF-8742/core/api/src/main/java/org/richfaces/application/MessageFactory.java
===================================================================
---
branches/RF-8742/core/api/src/main/java/org/richfaces/application/MessageFactory.java 2010-10-27
16:01:55 UTC (rev 19701)
+++
branches/RF-8742/core/api/src/main/java/org/richfaces/application/MessageFactory.java 2010-10-27
16:03:48 UTC (rev 19702)
@@ -37,4 +37,6 @@
public String getMessageText(FacesContext facesContext, Enum<?> messageKey,
Object... args);
+ public String getMessageFormat(FacesContext facesContext, Enum<?> messageKey);
+
}
Modified:
branches/RF-8742/core/impl/src/main/java/org/richfaces/application/MessageFactoryImpl.java
===================================================================
---
branches/RF-8742/core/impl/src/main/java/org/richfaces/application/MessageFactoryImpl.java 2010-10-27
16:01:55 UTC (rev 19701)
+++
branches/RF-8742/core/impl/src/main/java/org/richfaces/application/MessageFactoryImpl.java 2010-10-27
16:03:48 UTC (rev 19702)
@@ -34,6 +34,8 @@
import org.richfaces.l10n.BundleLoader;
import org.richfaces.l10n.MessageBundle;
+import com.google.common.base.Strings;
+
/**
* @author Nick Belaevski
*
@@ -87,6 +89,15 @@
};
+
+ private static final Factory<String> FORMAT_FACTORY = new
Factory<String>() {
+ public String create(ResourceBundle bundle, Enum<?> messageKey, Object...
args)
+ throws MissingResourceException {
+ String format = bundle.getString(messageKey.toString());
+ return format;
+ }
+ };
+
private BundleLoader bundleLoader;
public MessageFactoryImpl(BundleLoader bundleLoader) {
@@ -138,6 +149,15 @@
return text;
}
+ public String getMessageFormat(FacesContext facesContext, Enum<?> messageKey)
{
+ String text = detectLocalesAndCreate(facesContext, FORMAT_FACTORY, messageKey);
+ if (Strings.isNullOrEmpty(text)) {
+ throw new IllegalStateException("Format not found");
+ }
+
+ return text;
+ }
+
protected <T> T detectLocalesAndCreate(FacesContext context, Factory<T>
factory, Enum<?> messageKey, Object... args) {
T result = null;
Modified:
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/LibraryScriptFunction.java
===================================================================
---
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/LibraryScriptFunction.java 2010-10-27
16:01:55 UTC (rev 19701)
+++
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/LibraryScriptFunction.java 2010-10-27
16:03:48 UTC (rev 19702)
@@ -42,6 +42,10 @@
this.resource = libraryScript.getResource();
name = libraryScript.getName();
}
+
+ public String getName() {
+ return name;
+ }
/* (non-Javadoc)
* @see org.richfaces.renderkit.html.LibraryScriptString#getResource()
Modified:
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/NullConverterScript.java
===================================================================
---
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/NullConverterScript.java 2010-10-27
16:01:55 UTC (rev 19701)
+++
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/NullConverterScript.java 2010-10-27
16:03:48 UTC (rev 19702)
@@ -13,9 +13,16 @@
*/
public class NullConverterScript extends JSLiteral implements LibraryScriptString {
+ private String name;
+
public NullConverterScript() {
super(ClientValidatorRenderer.VALUE_VAR);
}
+
+ public String getName() {
+ return name;
+ }
+
/* (non-Javadoc)
* @see org.richfaces.renderkit.html.LibraryScriptString#getResource()
*/
Modified:
branches/RF-8742/ui/validator/ui/src/main/resources/META-INF/resources/org.richfaces/converter-number.js
===================================================================
---
branches/RF-8742/ui/validator/ui/src/main/resources/META-INF/resources/org.richfaces/converter-number.js 2010-10-27
16:01:55 UTC (rev 19701)
+++
branches/RF-8742/ui/validator/ui/src/main/resources/META-INF/resources/org.richfaces/converter-number.js 2010-10-27
16:03:48 UTC (rev 19702)
@@ -3,7 +3,7 @@
return function (value, params) {
var result;
if (isNaN(value)) {
- throw rf.csv.getMessage(params.customMessages, 'NumberConverter.isNaN',
[value]);
+ throw rf.csv.getMessage(params.customMessage, 'NUMBER_CONVERTER_NUMBER',
[value, 0, params.componentId]);
} else {
result = parseInt(value);
}
Modified:
branches/RF-8742/ui/validator/ui/src/main/resources/META-INF/resources/org.richfaces/richfaces-csv.js
===================================================================
---
branches/RF-8742/ui/validator/ui/src/main/resources/META-INF/resources/org.richfaces/richfaces-csv.js 2010-10-27
16:01:55 UTC (rev 19701)
+++
branches/RF-8742/ui/validator/ui/src/main/resources/META-INF/resources/org.richfaces/richfaces-csv.js 2010-10-27
16:03:48 UTC (rev 19702)
@@ -9,12 +9,13 @@
var RE_MESSAGE_PATTERN = /\{(\d+)\}/g;
$.extend(rf.csv, {
+ MESSAGE_EVENT_NAME: "onmessage."+rf.Event.RICH_NAMESPACE,
// Messages API
addMessage: function (messagesObject) {
$.extend(_messages, messagesObject);
},
- getMessage: function(customMessages, id, values) {
- var message = (customMessages && customMessages[id]) || _messages[id] ||
"";
+ getMessage: function(customMessage, messageId, values) {
+ var message = customMessage || _messages[messageId] || "";
if (message) {
var msgObject =
message.replace(RE_MESSAGE_PATTERN,"\n$1\n").split("\n");
var value;
@@ -27,8 +28,8 @@
return message;
},
sendMessage: function (componentId, message) {
- //rf.messageManager.send(componentId, message);
- //rf.Event.fire("onMessage.RichFaces.componentId");
+ rf.Event.fireById(document, MESSAGE_EVENT_NAME, message);
+ rf.Event.fireById(componentId, MESSAGE_EVENT_NAME, message);
},
// Converters API
addConverter: function (converterFunctions) {
@@ -53,9 +54,10 @@
}
if (converter) {
try {
+ converter.options.componentId = id;
value = getConverter([converter.name])(value, converter.options);
} catch (e){
- sendMessage(id, id+":"+e);
+ sendMessage(id, e);
return false;
}
}
@@ -135,8 +137,8 @@
/*
* message.constructor () {
- * rf.Event.bindById(this.id, "onMessage:RichFaces.global", onMessage );
- * rf.Event.bindById(this.id, "onMessage.RichFaces.componentId", onMessage
);
+ * rf.Event.bindById(componentId, "onMessage.RichFaces", onMessage );
+ * rf.Event.bindById(document, "onMessage.RichFaces", onMessage );
* }
*
*/
Modified:
branches/RF-8742/ui/validator/ui/src/test/java/org/richfaces/convert/BaseConverterTest.java
===================================================================
---
branches/RF-8742/ui/validator/ui/src/test/java/org/richfaces/convert/BaseConverterTest.java 2010-10-27
16:01:55 UTC (rev 19701)
+++
branches/RF-8742/ui/validator/ui/src/test/java/org/richfaces/convert/BaseConverterTest.java 2010-10-27
16:03:48 UTC (rev 19702)
@@ -50,12 +50,16 @@
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.javascript.ScriptUtils;
import org.jboss.test.faces.htmlunit.HtmlUnitEnvironment;
+import org.jboss.test.faces.jetty.JettyServer;
import org.junit.After;
import org.junit.Before;
import org.junit.runner.RunWith;
+import org.richfaces.application.MessageFactory;
+import org.richfaces.application.ServiceTracker;
import com.gargoylesoftware.htmlunit.ScriptResult;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.google.common.base.Strings;
/**
* @author Nick Belaevski
@@ -64,249 +68,267 @@
@RunWith(BaseConverterTestRunner.class)
public abstract class BaseConverterTest {
- public static final String TEST_COMPONENT_LABEL = "input";
-
- public class TestBean {
-
- private static final String CONVERTER_VAR = "__converter";
+ public static final String TEST_COMPONENT_LABEL = "input";
- private String converterId;
-
- private String clientConverterClassName;
-
- private String convertedValueAsScript;
-
- private String conversionErrorMessage;
-
- private ConverterException converterException;
-
- private Map<String, Object> attributes = new HashMap<String,
Object>();
-
- private String converterParametersString;
-
- public void setClientConverterClassName(String clientConverterClassName) {
- this.clientConverterClassName = clientConverterClassName;
- }
-
- public String getClientConverterClassName() {
- return clientConverterClassName;
- }
-
- public void setConverterId(String converterId) {
- this.converterId = converterId;
- }
-
- public String getSubmittedValue() {
- return submittedValue;
- }
-
- public String getSubmittedValueAsScript() {
- return ScriptUtils.toScript(submittedValue);
- }
-
- public String getConversionErrorMessage() {
- return conversionErrorMessage;
- }
-
- public void setConversionErrorMessage(String conversionErrorMessage) {
- this.conversionErrorMessage = conversionErrorMessage;
- }
-
- public void setAttribute(String name, Object value) {
- attributes.put(name, value);
- }
+ public class TestBean {
- public String getConverterParametersString() {
- return converterParametersString;
- }
-
- public ConverterException getConverterException() {
- return converterException;
- }
-
- private void configure(FacesContext facesContext, Converter converter) {
- ExpressionFactory expressionFactory =
facesContext.getApplication().getExpressionFactory();
-
- VariableMapper varMapper = facesContext.getELContext().getVariableMapper();
- ValueExpression originalExpr = varMapper.resolveVariable(CONVERTER_VAR);
- try {
- varMapper.setVariable(CONVERTER_VAR,
expressionFactory.createValueExpression(converter, Converter.class));
-
- for (Entry<String, Object> mapEntry: attributes.entrySet()) {
-
- String exprString =
MessageFormat.format("#'{'{0}.{1}'}'", CONVERTER_VAR,
mapEntry.getKey());
- ValueExpression ve =
expressionFactory.createValueExpression(facesContext.getELContext(), exprString,
Object.class);
-
- ve.setValue(facesContext.getELContext(), mapEntry.getValue());
- }
- } finally {
- varMapper.setVariable(CONVERTER_VAR, originalExpr);
- }
- }
-
- private Converter createConverter(FacesContext facesContext) {
- Converter converter =
facesContext.getApplication().createConverter(converterId);
- configure(facesContext, converter);
- return converter;
- }
-
- private UIComponent createTestComponent() {
- HtmlInputText testComponent = new HtmlInputText();
- testComponent.setLabel(TEST_COMPONENT_LABEL);
- return testComponent;
- }
-
- public String getConvertedValueAsScript() {
- return convertedValueAsScript != null ? convertedValueAsScript :
"null";
- }
-
- public void init() {
- if (converterId == null || clientConverterClassName == null) {
- throw new NullPointerException();
- }
-
- FacesContext facesContext = FacesContext.getCurrentInstance();
- Converter converter = createConverter(facesContext);
- try {
- Object convertedObject = converter.getAsObject(facesContext,
createTestComponent(), submittedValue);
- convertedValueAsScript = serializeObjectToScript(convertedObject);
- } catch (ConverterException e) {
- this.converterException = e;
- }
-
- Map<String,Object> map = new HashMap<String,
Object>(attributes);
- map.put("componentId", TEST_COMPONENT_LABEL);
-
- converterParametersString = ScriptUtils.toScript(map);
- }
- }
+ private static final String CONVERTER_VAR = "__converter";
- private TestBean testBean;
-
- private HtmlUnitEnvironment environment;
-
- private String converterScriptName;
-
- private String submittedValue;
-
- private String failureMessage;
-
- public BaseConverterTest(String converterScriptName) {
- this.converterScriptName = converterScriptName;
- }
-
- @Before
- public void setUp() throws Exception {
- testBean = new TestBean();
-
- environment = new HtmlUnitEnvironment();
- environment.getServer().addResource("/test.xhtml",
BaseConverterTest.class.getResource("test.xhtml"));
- environment.getServer().addResource("/resources/converter.js",
converterScriptName);
- environment.getServer().addWebListener(new ServletRequestListener() {
-
- public void requestInitialized(ServletRequestEvent sre) {
- sre.getServletRequest().setAttribute("testBean", testBean);
- }
-
- public void requestDestroyed(ServletRequestEvent sre) {
- }
- });
-
- environment.start();
- }
-
- @After
- public void tearDown() throws Exception {
- submittedValue = null;
- failureMessage = null;
-
- testBean = null;
-
- environment.release();
- environment = null;
- }
-
- protected String serializeObjectToScript(Object object) {
- if (object instanceof Date) {
- Calendar calendar = Calendar.getInstance();
- calendar.setTime((Date) object);
- calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
-
- return new JSFunction("new Date", calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
- calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.HOUR),
calendar.get(Calendar.MINUTE),
- calendar.get(Calendar.SECOND),
calendar.get(Calendar.MILLISECOND)).toScript();
- }
-
- return ScriptUtils.toScript(object);
- }
-
- public void setConversionErrorMessage(String conversionErrorMessage) {
- testBean.setConversionErrorMessage(conversionErrorMessage);
- }
-
- public void setConverterId(String converterId) {
- testBean.setConverterId(converterId);
- }
+ private String converterId;
- public void setClientConverterClassName(String clientConverterClassName) {
- testBean.setClientConverterClassName(clientConverterClassName);
- }
-
- public void setAttribute(String name, Object value) {
- testBean.setAttribute(name, value);
- }
+ private String clientConverterClassName;
- public void setSubmittedValue(String submittedValue) {
- this.submittedValue = submittedValue;
- }
-
- public void setFailureMessage(String failureMessage) {
- this.failureMessage = failureMessage;
- }
-
- public void assertConversionOk() throws Exception {
- HtmlPage page = environment.getPage("/test.jsf");
-
- assertTrue(page.getWebClient().isJavaScriptEnabled());
- ScriptResult conversionMessageResult =
page.executeJavaScript("verifyConversion()");
- if (!ScriptResult.isUndefined(conversionMessageResult)) {
- fail(conversionMessageResult.getJavaScriptResult().toString());
- }
- }
-
- public void assertConversionFailure() throws Exception {
- HtmlPage page = environment.getPage("/test.jsf");
+ private String convertedValueAsScript;
- assertNotNull(testBean.getConverterException());
-
- assertTrue(page.getWebClient().isJavaScriptEnabled());
- ScriptResult conversionErrorResult =
page.executeJavaScript("window.conversionError");
-
- if (ScriptResult.isUndefined(conversionErrorResult)) {
- fail("converter has not thrown an error");
- return;
- }
-
- Object conversionErrorMessage;
+ private String conversionErrorMessage;
- Object scriptResult = conversionErrorResult.getJavaScriptResult();
- if (scriptResult instanceof Scriptable) {
- Scriptable scriptable = (Scriptable) scriptResult;
- conversionErrorMessage = scriptable.get("message", scriptable);
- } else {
- conversionErrorMessage = scriptResult;
- }
-
- if (failureMessage != null) {
- assertEquals(failureMessage, conversionErrorMessage);
- } else {
- assertEquals(testBean.getConverterException().getMessage(),
conversionErrorMessage);
- }
- }
+ private Enum<?> conversionErrorMessageEnum;
- public void setup(TestData testData) {
- setSubmittedValue(testData.submittedValue());
- setFailureMessage(testData.failureMessage());
- }
-
+ private ConverterException converterException;
+
+ private Map<String, Object> attributes = new HashMap<String, Object>();
+
+ private String converterParametersString;
+
+ public void setClientConverterClassName(String clientConverterClassName) {
+ this.clientConverterClassName = clientConverterClassName;
+ }
+
+ public String getClientConverterClassName() {
+ return clientConverterClassName;
+ }
+
+ public void setConverterId(String converterId) {
+ this.converterId = converterId;
+ }
+
+ public String getSubmittedValue() {
+ return submittedValue;
+ }
+
+ public String getSubmittedValueAsScript() {
+ return ScriptUtils.toScript(submittedValue);
+ }
+
+ public String getConversionErrorMessage() {
+ return conversionErrorMessage;
+ }
+
+ public void setConversionErrorMessage(String conversionErrorMessage) {
+ this.conversionErrorMessage = conversionErrorMessage;
+ }
+
+ public void setAttribute(String name, Object value) {
+ attributes.put(name, value);
+ }
+
+ public String getConverterParametersString() {
+ return converterParametersString;
+ }
+
+ public ConverterException getConverterException() {
+ return converterException;
+ }
+
+ public void setConversionErrorMessageEnum(
+ Enum<?> conversionErrorMessageEnum) {
+ this.conversionErrorMessageEnum = conversionErrorMessageEnum;
+ }
+
+ private void configure(FacesContext facesContext, Converter converter) {
+ ExpressionFactory expressionFactory =
facesContext.getApplication().getExpressionFactory();
+
+ VariableMapper varMapper = facesContext.getELContext().getVariableMapper();
+ ValueExpression originalExpr = varMapper.resolveVariable(CONVERTER_VAR);
+ try {
+ varMapper.setVariable(CONVERTER_VAR,
expressionFactory.createValueExpression(converter, Converter.class));
+
+ for (Entry<String, Object> mapEntry: attributes.entrySet()) {
+
+ String exprString = MessageFormat.format("#'{'{0}.{1}'}'",
CONVERTER_VAR, mapEntry.getKey());
+ ValueExpression ve =
expressionFactory.createValueExpression(facesContext.getELContext(), exprString,
Object.class);
+
+ ve.setValue(facesContext.getELContext(), mapEntry.getValue());
+ }
+ } finally {
+ varMapper.setVariable(CONVERTER_VAR, originalExpr);
+ }
+ }
+
+ private Converter createConverter(FacesContext facesContext) {
+ Converter converter = facesContext.getApplication().createConverter(converterId);
+ configure(facesContext, converter);
+ return converter;
+ }
+
+ private UIComponent createTestComponent() {
+ HtmlInputText testComponent = new HtmlInputText();
+ testComponent.setLabel(TEST_COMPONENT_LABEL);
+ return testComponent;
+ }
+
+ public String getConvertedValueAsScript() {
+ return convertedValueAsScript != null ? convertedValueAsScript : "null";
+ }
+
+ public void init() {
+ if (converterId == null || clientConverterClassName == null) {
+ throw new NullPointerException();
+ }
+
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ Converter converter = createConverter(facesContext);
+ try {
+ Object convertedObject = converter.getAsObject(facesContext, createTestComponent(),
submittedValue);
+ convertedValueAsScript = serializeObjectToScript(convertedObject);
+ } catch (ConverterException e) {
+ this.converterException = e;
+ }
+
+ if (Strings.isNullOrEmpty(conversionErrorMessage) &&
conversionErrorMessageEnum != null) {
+ MessageFactory messageFactory = ServiceTracker.getService(MessageFactory.class);
+ conversionErrorMessage = messageFactory.getMessageFormat(facesContext,
conversionErrorMessageEnum);
+ }
+
+ Map<String,Object> map = new HashMap<String, Object>(attributes);
+ map.put("componentId", TEST_COMPONENT_LABEL);
+ map.put("customMessage", MessageFormat.format(conversionErrorMessage ,
"{0}"));
+
+ converterParametersString = ScriptUtils.toScript(map);
+ }
+ }
+
+ private TestBean testBean;
+
+ private HtmlUnitEnvironment environment;
+
+ private String converterScriptName;
+
+ private String submittedValue;
+
+ private String failureMessage;
+
+ public BaseConverterTest(String converterScriptName) {
+ this.converterScriptName = converterScriptName;
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ testBean = new TestBean();
+
+ environment = new HtmlUnitEnvironment(new JettyServer());
+ environment.getServer().addResource("/test.xhtml",
BaseConverterTest.class.getResource("test.xhtml"));
+ environment.getServer().addResource("/resources/converter.js",
converterScriptName);
+ environment.getServer().addWebListener(new ServletRequestListener() {
+
+ public void requestInitialized(ServletRequestEvent sre) {
+ sre.getServletRequest().setAttribute("testBean", testBean);
+ }
+
+ public void requestDestroyed(ServletRequestEvent sre) {
+ }
+ });
+
+ environment.start();
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ submittedValue = null;
+ failureMessage = null;
+
+ testBean = null;
+
+ environment.release();
+ environment = null;
+ }
+
+ protected String serializeObjectToScript(Object object) {
+ if (object instanceof Date) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime((Date) object);
+ calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
+
+ return new JSFunction("new Date", calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
+ calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.HOUR),
calendar.get(Calendar.MINUTE),
+ calendar.get(Calendar.SECOND), calendar.get(Calendar.MILLISECOND)).toScript();
+ }
+
+ return ScriptUtils.toScript(object);
+ }
+
+ public void setConversionErrorMessage(String conversionErrorMessage) {
+ testBean.setConversionErrorMessage(conversionErrorMessage);
+ }
+
+ public void setConverterId(String converterId) {
+ testBean.setConverterId(converterId);
+ }
+
+ public void setClientConverterClassName(String clientConverterClassName) {
+ testBean.setClientConverterClassName(clientConverterClassName);
+ }
+
+ public void setAttribute(String name, Object value) {
+ testBean.setAttribute(name, value);
+ }
+
+ public void setSubmittedValue(String submittedValue) {
+ this.submittedValue = submittedValue;
+ }
+
+ public void setFailureMessage(String failureMessage) {
+ this.failureMessage = failureMessage;
+ }
+
+ public void setConversionErrorMessageEnum(
+ Enum<?> conversionErrorMessageEnum) {
+ testBean.setConversionErrorMessageEnum(conversionErrorMessageEnum);
+ }
+
+ public void assertConversionOk() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+ System.out.println(page.asXml());
+ assertTrue(page.getWebClient().isJavaScriptEnabled());
+ ScriptResult conversionMessageResult =
page.executeJavaScript("verifyConversion()");
+ if (!ScriptResult.isUndefined(conversionMessageResult)) {
+ fail(conversionMessageResult.getJavaScriptResult().toString());
+ }
+ }
+
+ public void assertConversionFailure() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+
+ assertNotNull(testBean.getConverterException());
+
+ assertTrue(page.getWebClient().isJavaScriptEnabled());
+ ScriptResult conversionErrorResult =
page.executeJavaScript("window.conversionError");
+
+ if (ScriptResult.isUndefined(conversionErrorResult)) {
+ fail("converter has not thrown an error");
+ return;
+ }
+
+ Object conversionErrorMessage;
+
+ Object scriptResult = conversionErrorResult.getJavaScriptResult();
+ if (scriptResult instanceof Scriptable) {
+ Scriptable scriptable = (Scriptable) scriptResult;
+ conversionErrorMessage = scriptable.get("message", scriptable);
+ } else {
+ conversionErrorMessage = scriptResult;
+ }
+
+ if (failureMessage != null) {
+ assertEquals(failureMessage, conversionErrorMessage);
+ } else {
+ assertEquals(testBean.getConverterException().getMessage(), conversionErrorMessage);
+ }
+ }
+
+ public void setup(TestData testData) {
+ setSubmittedValue(testData.submittedValue());
+ setFailureMessage(testData.failureMessage());
+ }
+
}
Modified:
branches/RF-8742/ui/validator/ui/src/test/java/org/richfaces/convert/NumberConverterTest.java
===================================================================
---
branches/RF-8742/ui/validator/ui/src/test/java/org/richfaces/convert/NumberConverterTest.java 2010-10-27
16:01:55 UTC (rev 19701)
+++
branches/RF-8742/ui/validator/ui/src/test/java/org/richfaces/convert/NumberConverterTest.java 2010-10-27
16:03:48 UTC (rev 19702)
@@ -21,9 +21,14 @@
*/
package org.richfaces.convert;
+import static org.junit.Assert.*;
+
import javax.faces.convert.NumberConverter;
import org.junit.Test;
+import org.richfaces.application.MessageFactory;
+import org.richfaces.application.ServiceTracker;
+import org.richfaces.appplication.FacesMessages;
/**
* @author Pavel Yaschenko
@@ -47,6 +52,7 @@
public void testSuccess() throws Exception {
setClientConverterClassName("RichFaces.csv.getConverter('number')");
setConverterId(NumberConverter.CONVERTER_ID);
- //setAttribute("pattern", "dd-MM-yyyy");
+ setConversionErrorMessageEnum(FacesMessages.NUMBER_CONVERTER_NUMBER);
}
+
}
Modified:
branches/RF-8742/ui/validator/ui/src/test/resources/org/richfaces/convert/test.xhtml
===================================================================
---
branches/RF-8742/ui/validator/ui/src/test/resources/org/richfaces/convert/test.xhtml 2010-10-27
16:01:55 UTC (rev 19701)
+++
branches/RF-8742/ui/validator/ui/src/test/resources/org/richfaces/convert/test.xhtml 2010-10-27
16:03:48 UTC (rev 19702)
@@ -10,6 +10,8 @@
</f:metadata>
<h:head>
<h:outputScript name="jquery.js" />
+ <h:outputScript name="richfaces.js" />
+ <h:outputScript name="richfaces-event.js" />
<h:outputScript name="richfaces-csv.js"
library="org.richfaces"/>
<h:outputScript name="converter.js" />
</h:head>
@@ -19,7 +21,7 @@
try {
window.actual =
#{testBean.clientConverterClassName}(#{testBean.submittedValueAsScript},
- "#{testBean.conversionErrorMessage}",
#{testBean.converterParametersString});
+ #{testBean.converterParametersString});
} catch (e) {
window.conversionError = e;
}