You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@velocity.apache.org by wg...@apache.org on 2008/07/13 19:52:27 UTC
svn commit: r676377 - in /velocity/engine/trunk/src:
java/org/apache/velocity/runtime/resource/loader/DataSourceResourceLoader.java
test/org/apache/velocity/test/sql/BaseSQLTest.java
test/org/apache/velocity/test/sql/DataSourceResourceLoaderTestCase.java
Author: wglass
Date: Sun Jul 13 10:52:27 2008
New Revision: 676377
URL: http://svn.apache.org/viewvc?rev=676377&view=rev
Log:
change getAsciiStream get to getBinaryStream for better unicode compatibility
Modified:
velocity/engine/trunk/src/java/org/apache/velocity/runtime/resource/loader/DataSourceResourceLoader.java
velocity/engine/trunk/src/test/org/apache/velocity/test/sql/BaseSQLTest.java
velocity/engine/trunk/src/test/org/apache/velocity/test/sql/DataSourceResourceLoaderTestCase.java
Modified: velocity/engine/trunk/src/java/org/apache/velocity/runtime/resource/loader/DataSourceResourceLoader.java
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/src/java/org/apache/velocity/runtime/resource/loader/DataSourceResourceLoader.java?rev=676377&r1=676376&r2=676377&view=diff
==============================================================================
--- velocity/engine/trunk/src/java/org/apache/velocity/runtime/resource/loader/DataSourceResourceLoader.java (original)
+++ velocity/engine/trunk/src/java/org/apache/velocity/runtime/resource/loader/DataSourceResourceLoader.java Sun Jul 13 10:52:27 2008
@@ -228,15 +228,15 @@
if (rs.next())
{
- InputStream ascStream = rs.getAsciiStream(templateColumn);
- if (ascStream == null)
+ InputStream stream = rs.getBinaryStream(templateColumn);
+ if (stream == null)
{
throw new ResourceNotFoundException("DataSourceResourceLoader: "
+ "template column for '"
+ name + "' is null");
}
- return new BufferedInputStream(ascStream);
+ return new BufferedInputStream(stream);
}
else
{
Modified: velocity/engine/trunk/src/test/org/apache/velocity/test/sql/BaseSQLTest.java
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/src/test/org/apache/velocity/test/sql/BaseSQLTest.java?rev=676377&r1=676376&r2=676377&view=diff
==============================================================================
--- velocity/engine/trunk/src/test/org/apache/velocity/test/sql/BaseSQLTest.java (original)
+++ velocity/engine/trunk/src/test/org/apache/velocity/test/sql/BaseSQLTest.java Sun Jul 13 10:52:27 2008
@@ -19,6 +19,12 @@
* under the License.
*/
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import javax.sql.DataSource;
+
import org.apache.velocity.test.BaseTestCase;
/**
@@ -45,4 +51,12 @@
hsqlDB = new HsqlDB("jdbc:hsqldb:.", path + "/create-db.sql");
}
}
+
+ public void executeSQL(String sql)
+ throws SQLException
+ {
+ Connection connection = hsqlDB.getConnection();
+ Statement statement = connection.createStatement();
+ statement.executeUpdate(sql);
+ }
}
Modified: velocity/engine/trunk/src/test/org/apache/velocity/test/sql/DataSourceResourceLoaderTestCase.java
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/src/test/org/apache/velocity/test/sql/DataSourceResourceLoaderTestCase.java?rev=676377&r1=676376&r2=676377&view=diff
==============================================================================
--- velocity/engine/trunk/src/test/org/apache/velocity/test/sql/DataSourceResourceLoaderTestCase.java (original)
+++ velocity/engine/trunk/src/test/org/apache/velocity/test/sql/DataSourceResourceLoaderTestCase.java Sun Jul 13 10:52:27 2008
@@ -22,6 +22,7 @@
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
+import java.io.StringWriter;
import java.io.Writer;
import javax.sql.DataSource;
@@ -66,11 +67,21 @@
*/
private static final String COMPARE_DIR = TEST_COMPARE_DIR + "/ds/templates";
+ /**
+ * String (not containing any VTL) used to test unicode
+ */
+ private String UNICODE_TEMPLATE = "\\u00a9 test \\u0410 \\u0411";
+
+ /**
+ * Name of template for testing unicode.
+ */
+ private String UNICODE_TEMPLATE_NAME = "testUnicode";
public DataSourceResourceLoaderTestCase(final String name)
throws Exception
{
super(name, DATA_PATH);
+ setUpUnicode();
}
public static Test suite()
@@ -84,7 +95,7 @@
assureResultsDirectoryExists(RESULTS_DIR);
- DataSource ds = new HsqlDataSource("jdbc:hsqldb:.");
+ DataSource ds = new HsqlDataSource("jdbc:hsqldb:.");
DataSourceResourceLoader rl = new DataSourceResourceLoader();
rl.setDataSource(ds);
@@ -103,6 +114,14 @@
Velocity.init();
}
+
+ public void setUpUnicode()
+ throws Exception
+ {
+ String insertString = "insert into velocity_template (id, timestamp, def) VALUES " +
+ "( '" + UNICODE_TEMPLATE_NAME + "', NOW(), '" + UNICODE_TEMPLATE + "');";
+ executeSQL(insertString);
+ }
/**
* Tests loading and rendering of a simple template. If that works, we are able to get data
@@ -115,6 +134,26 @@
assertFalse("Timestamp is 0", 0 == t.getLastModified());
}
+ public void testUnicode()
+ throws Exception
+ {
+ Template template = RuntimeSingleton.getTemplate(UNICODE_TEMPLATE_NAME);
+
+ Writer writer = new StringWriter();
+ VelocityContext context = new VelocityContext();
+ template.merge(context, writer);
+ writer.flush();
+ writer.close();
+
+ String outputText = writer.toString();
+
+ if (!normalizeNewlines(UNICODE_TEMPLATE).equals(
+ normalizeNewlines( outputText ) ))
+ {
+ fail("Output incorrect for Template: " + UNICODE_TEMPLATE_NAME);
+ }
+ }
+
/**
* Now we have a more complex example. Run a very simple tool.
* from the database.