Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: Release 1.5.1, Release 1.6
-
Fix Version/s: Release 1.5.2, Release 1.6
-
Component/s: None
-
Labels:None
Description
When binding an invalid Date (e.g. 'notadate') as a key to a Map<Date,Date> property of an action bean, the TypeConverter fails to convert, but errors are 'ignored', and a String object is added as akey of the map. This violates the map's invariant, and generates a ClassCastException.
checked in unit test that reproduces in r.1053 :
net.sourceforge.stripes.controller.InvalidDateKeyBreaksInvariant_STS_651#bindInvalidDateKeysInMapBreaksMapInvariant
The @Test annotation is currently commented out, in order to avoide breaking the build.
Looks pretty tricky.
Check :
MapPropertyAccessor.getKey(NodeEvaluation) : at line 90, it attempts to use a Type Converter in order to convert the map's key.
The DateTypeConverter is used, and of course, it returns a validation error, but this one is ignored.
The converted value is used only if conversion succeeded without validation errors. Otherwise, it defaults to the node's "typed value", which in this case is a String.
This is because at parsing time, Stripes finds default basic datatypes using regexps.
See PropertyExpression, line 214.