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
  
  
  

Reply via email to