geirm 01/04/22 11:22:11
Modified: src/java/org/apache/velocity Template.java
Log:
Support for per-template encoding;
1) attach the Template to the internal ica so encoding info can be delivered
to #include() <gag>
2) process() deals with encoding, getting the stream and doing the
encoding xform before parsing
Revision Changes Path
1.33 +17 -3 jakarta-velocity/src/java/org/apache/velocity/Template.java
Index: Template.java
===================================================================
RCS file: /home/cvs/jakarta-velocity/src/java/org/apache/velocity/Template.java,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- Template.java 2001/03/20 17:14:00 1.32
+++ Template.java 2001/04/22 18:22:11 1.33
@@ -57,6 +57,9 @@
import java.io.InputStream;
import java.io.IOException;
import java.io.Writer;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
import org.apache.velocity.runtime.Runtime;
import org.apache.velocity.runtime.resource.Resource;
@@ -90,7 +93,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Geir Magnusson Jr.</a>
- * @version $Id: Template.java,v 1.32 2001/03/20 17:14:00 geirm Exp $
+ * @version $Id: Template.java,v 1.33 2001/04/22 18:22:11 geirm Exp $
*/
public class Template extends Resource
{
@@ -156,10 +159,20 @@
try
{
- data = Runtime.parse(is, name);
+ BufferedReader br = new BufferedReader( new InputStreamReader( is,
encoding ) );
+
+ data = Runtime.parse( br, name);
initDocument();
return true;
}
+ catch( UnsupportedEncodingException uce )
+ {
+ String msg = "Template.process : Unsupported input encoding : " +
encoding
+ + " for template " + name;
+
+ errorCondition = new ParseErrorException( msg );
+ throw errorCondition;
+ }
catch ( ParseException pex )
{
/*
@@ -279,6 +292,7 @@
try
{
ica.pushCurrentTemplateName( name );
+ ica.setCurrentResource( this );
( (SimpleNode) data ).render( ica, writer);
}
@@ -287,8 +301,8 @@
/*
* lets make sure that we always clean up the context
*/
-
ica.popCurrentTemplateName();
+ ica.setCurrentResource( null );
}
}
else