Am 2013-11-20 21:03, schrieb Robert Scholte:
org.apache.maven.doxia.macro.snippet.SnippetMacroTest

this class contains a simple test.
If you can change the testSnippet.txt to a file with some critical
characters, you should be able verify the result.


Done with r1544338.

Op Tue, 19 Nov 2013 23:03:23 +0100 schreef Michael-O <[email protected]>:

Am 2013-11-19 22:45, schrieb Robert Scholte:
Encoding is always tricky.
Could you think of a JUnit test as well?

I think so. Do you have a special idea in mind?
What I could do is read a snippet, retrieve the bytes for that
specific encoding and compare them.

Guessing an encoding is too tricky and would require ICU4J. Of course,
if a user supplies a wrong encoding, we're lost.

Michael


Op Tue, 19 Nov 2013 22:37:30 +0100 schreef <[email protected]>:

Author: michaelo
Date: Tue Nov 19 21:37:30 2013
New Revision: 1543585

URL: http://svn.apache.org/r1543585
Log:
[DOXIA-386] Snippet Macro: Reference file does not support UTF-8 file
format to generate the page garbage

- Added macro parameter 'encoding' which takes in specific encoding

Modified:

maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java



maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetReader.java



Modified:
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java


URL:
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java?rev=1543585&r1=1543584&r2=1543585&view=diff


==============================================================================


---
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java

(original)
+++
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java

Tue Nov 19 21:37:30 2013
@@ -106,6 +106,8 @@ public class SnippetMacro
             verbatim = Boolean.valueOf( verbatimParam
).booleanValue();
         }
+        String encoding = (String) request.getParameter( "encoding" );
+
         URL url;
        if ( !StringUtils.isEmpty( urlParam ) )
@@ -146,7 +148,7 @@ public class SnippetMacro
        try
         {
-            snippet = getSnippet( url, id );
+            snippet = getSnippet( url, encoding, id );
         }
         catch ( IOException e )
         {
@@ -171,11 +173,12 @@ public class SnippetMacro
      * Return a snippet of the given url.
      *
      * @param url The URL to parse.
+     * @param encoding The encoding of the URL to parse.
      * @param id  The id of the snippet.
      * @return The snippet.
      * @throws IOException if something goes wrong.
      */
-    private StringBuffer getSnippet( URL url, String id )
+    private StringBuffer getSnippet( URL url, String encoding, String
id )
         throws IOException
     {
         StringBuffer result;
@@ -195,7 +198,7 @@ public class SnippetMacro
         {
             try
             {
-                result = new SnippetReader( url ).readSnippet( id );
+                result = new SnippetReader( url, encoding
).readSnippet( id );
                 cacheSnippet( url, id, result.toString() );
                 if ( debug )
                 {

Modified:
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetReader.java


URL:
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetReader.java?rev=1543585&r1=1543584&r2=1543585&view=diff


==============================================================================


---
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetReader.java

(original)
+++
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetReader.java

Tue Nov 19 21:37:30 2013
@@ -42,14 +42,19 @@ public class SnippetReader
     /** The source. */
     private URL source;
+    /** The encoding of the source. */
+    private String encoding;
+
     /**
      * Constructor.
      *
-     * @param src The source.
+     * @param src The source
+     * @param encoding The file encoding
      */
-    public SnippetReader( URL src )
+    public SnippetReader( URL src, String encoding )
     {
         this.source = src;
+        this.encoding = encoding;
     }
    /**
@@ -119,8 +124,12 @@ public class SnippetReader
     private List<String> readLines( String snippetId )
         throws IOException
     {
-        // TODO: DOXIA-386, use InputStreamReader(InputStream in,
Charset cs)
-        BufferedReader reader = new BufferedReader( new
InputStreamReader( source.openStream() ) );
+        BufferedReader reader;
+        if ( encoding == null || "".equals(encoding) )
+            reader = new BufferedReader( new InputStreamReader(
source.openStream() ) );
+        else
+            reader = new BufferedReader( new InputStreamReader(
source.openStream(), encoding ) );
+
         List<String> lines = new ArrayList<String>();
         try
         {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]




---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]




---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to