You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by lu...@apache.org on 2011/06/26 15:22:41 UTC

svn commit: r1139785 - /turbine/core/trunk/src/java/org/apache/turbine/services/velocity/TurbineVelocityService.java

Author: ludwig
Date: Sun Jun 26 13:22:40 2011
New Revision: 1139785

URL: http://svn.apache.org/viewvc?rev=1139785&view=rev
Log:
Fixed encoding bug in TurbineVelocityService. Input and output encoding are now configurable.

Modified:
    turbine/core/trunk/src/java/org/apache/turbine/services/velocity/TurbineVelocityService.java

Modified: turbine/core/trunk/src/java/org/apache/turbine/services/velocity/TurbineVelocityService.java
URL: http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/services/velocity/TurbineVelocityService.java?rev=1139785&r1=1139784&r2=1139785&view=diff
==============================================================================
--- turbine/core/trunk/src/java/org/apache/turbine/services/velocity/TurbineVelocityService.java (original)
+++ turbine/core/trunk/src/java/org/apache/turbine/services/velocity/TurbineVelocityService.java Sun Jun 26 13:22:40 2011
@@ -88,6 +88,12 @@ public class TurbineVelocityService
     /** Default character set to use if not specified in the RunData object. */
     private static final String DEFAULT_CHAR_SET = "ISO-8859-1";
 
+    /** Encoding used when reading the templates. */
+    private static String defaultInputEncoding;
+    
+    /** Encoding used by the outputstream when handling the requests. */
+    private static String defaultOutputEncoding;
+    
     /** The prefix used for URIs which are of type <code>jar</code>. */
     private static final String JAR_PREFIX = "jar:";
 
@@ -137,6 +143,9 @@ public class TurbineVelocityService
 
             // Register with the template service.
             registerConfiguration(VelocityService.VELOCITY_EXTENSION);
+            
+            defaultInputEncoding = getConfiguration().getString("input.encoding", DEFAULT_CHAR_SET);
+            defaultOutputEncoding = getConfiguration().getString("output.encoding", defaultInputEncoding);
 
             setInit(true);
         }
@@ -295,7 +304,7 @@ public class TurbineVelocityService
         String results = null;
         ByteArrayOutputStream bytes = null;
         OutputStreamWriter writer = null;
-        String charset = getCharSet(context);
+        String charset = getOutputCharSet(context);
 
         try
         {
@@ -344,7 +353,7 @@ public class TurbineVelocityService
                               OutputStream output)
             throws TurbineException
     {
-        String charset  = getCharSet(context);
+        String charset  = getOutputCharSet(context);
         OutputStreamWriter writer = null;
 
         try
@@ -429,11 +438,11 @@ public class TurbineVelocityService
                                 Writer writer)
             throws Exception
     {
-        String encoding = getEncoding(context);
+        String encoding = getTemplateEncoding(context);
 
         if (encoding == null)
         {
-          encoding = DEFAULT_CHAR_SET;
+          encoding = defaultOutputEncoding;
         }
 		Velocity.mergeTemplate(filename, encoding, context, writer);
     }
@@ -444,7 +453,7 @@ public class TurbineVelocityService
      * @param context A Context.
      * @return The character set applied to the resulting String.
      */
-    private String getCharSet(Context context)
+    private String getOutputCharSet(Context context)
     {
         String charset = null;
 
@@ -454,7 +463,7 @@ public class TurbineVelocityService
             charset = ((RunData) data).getCharSet();
         }
 
-        return (StringUtils.isEmpty(charset)) ? DEFAULT_CHAR_SET : charset;
+        return (StringUtils.isEmpty(charset)) ? defaultOutputEncoding : charset;
     }
 
     /**
@@ -463,7 +472,7 @@ public class TurbineVelocityService
      * @param context A Context.
      * @return The encoding applied to the resulting String.
      */
-    private String getEncoding(Context context)
+    private String getTemplateEncoding(Context context)
     {
         String encoding = null;
 
@@ -473,7 +482,7 @@ public class TurbineVelocityService
             encoding = ((RunData) data).getTemplateEncoding();
         }
 
-        return encoding;
+        return encoding != null ? encoding : defaultInputEncoding;
     }
 
     /**