James R Doyle created VELOCITY-880:
--------------------------------------
Summary: DataSourceResourceLoader corrupts UTF-8 characters in
template
Key: VELOCITY-880
URL: https://issues.apache.org/jira/browse/VELOCITY-880
Project: Velocity
Issue Type: Bug
Affects Versions: 2.1.x
Environment: Oracle12c and HSQLDB 2.3.4, JDK 1.8
Reporter: James R Doyle
A long-withstanding bug in the DataSourceResourceLoader corrupts UTF-8
templates retrieved from the database. The Unit Test suite for this resource
loader has deficiencies that hide the bug.
The cause of the problem is this:
InputStream rawStream = rs.getAsciiStream(templateColumn);
The resolution of the problem is simply:
Reader r = rs.getCharacterStream(templateColumn);
InputStream rawStream = null;
try {
rawStream = IOUtils.toInputStream(IOUtils.toString(r),
encoding);
} catch (IOException ioe) {}
Once done, the test failure vanishes:
org.junit.ComparisonFailure: Unicode test failed.
Expected :The Euro Currency Symbol € is a two-byte UTF-8 character.
Actual :The Euro Currency Symbol ? is a two-byte UTF-8 character.
The bug was verified and the fix was tested against Oracle12c and HSQLDB 2.3.4
using a CLOB column to store the template data.
The Unit Tests for this resource loader need attention.
Please see VELOCITY-599 ; long standing problem, which has been erroneously
marked as resolved but has been in the codebase for a long time.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]