Auke te Winkel created CSV-269:
----------------------------------
Summary: CSVRecord.get(Enum) should use Enum.name() instead of
Enum.toString()
Key: CSV-269
URL: https://issues.apache.org/jira/browse/CSV-269
Project: Commons CSV
Issue Type: Bug
Components: Parser
Affects Versions: 1.8
Reporter: Auke te Winkel
I updated from 1.7 to 1.8 which breaks retrieving a value from CSVRecord using
an Enum.
It is caused by this piece of code:
{code:java}
public String get(final Enum<?> e) {
return get(Objects.toString(e, null));
}
{code}
This now uses Enum.toString() instead of Enum.name(). This works so long as the
toString() method of the enum class has not been overridden. However, whereas
Enum.name() is final and returns the correct value for this use case,
toString() may be overridden to provide a human friendly desciption of the enum
value.
If the toString() method of the enum class is non-default, this results in
{code:java}
java.lang.IllegalArgumentException: Mapping for [toString value] not found,
expected one of [enum names]
{code}
Please change this method to use the enum name instead of toString.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)