https://issues.apache.org/bugzilla/show_bug.cgi?id=57148
Bug ID: 57148
Summary: EL type conversion of empty string when there is a
PropertyEditor (ELSupport.coerceToType())
Product: Tomcat 8
Version: 8.0.14
Hardware: PC
Status: NEW
Severity: normal
Priority: P2
Component: EL
Assignee: [email protected]
Reporter: [email protected]
(Noted when reviewing org.apache.el.lang.ELSupport.coerceToType())
My expectations are that ELSupport.coerceToType() method follows the type
conversion rules specified in Expression Language specification.
There is the following phrase in specification 3.0 ch.1.23.7 Coerce A to Any
Other Type T:
"If A is a String and T's PropertyEditor throws an exception:"
"If A is "", return null"
"Otherwise, error"
The same phrase in present in EL 2.2 and EL 2.1 specifications (ch.1.18.7) as
well.
Consider the following case:
- A is an empty string ("")
- T has a PropertyEditor
Expected behaviour:
- Call PropertyEditor with value of "".
- If it throws an exception, return null.
- Otherwise use the converted value.
try {
propertyEditor.setAsText("").getValue();
} catch (RuntimeException e) {
return null;
}
Actual implementation:
- It skips calling the PropertyEditor and immediately returns null.
if (obj instanceof String) {
if ("".equals(obj))
return null;
PropertyEditor editor = PropertyEditorManager.findEditor(type);
...
The PropertyEditor.setAsText(String) method is documented to throw
IllegalArgumentException on invalid values. I think that EL API expects an
ELException, so it is to be wrapped somewhere.
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]