[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

git-svn-id: https://svn.apache.org/repos/asf/maven/doxia/doxia/trunk@1543585 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java b/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java
index 7ef25a7..2a743fe 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java
@@ -106,6 +106,8 @@
             verbatim = Boolean.valueOf( verbatimParam ).booleanValue();
         }
 
+        String encoding = (String) request.getParameter( "encoding" );
+
         URL url;
 
         if ( !StringUtils.isEmpty( urlParam ) )
@@ -146,7 +148,7 @@
 
         try
         {
-            snippet = getSnippet( url, id );
+            snippet = getSnippet( url, encoding, id );
         }
         catch ( IOException e )
         {
@@ -171,11 +173,12 @@
      * 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 @@
         {
             try
             {
-                result = new SnippetReader( url ).readSnippet( id );
+                result = new SnippetReader( url, encoding ).readSnippet( id );
                 cacheSnippet( url, id, result.toString() );
                 if ( debug )
                 {
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetReader.java b/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetReader.java
index c208f1e..224d841 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetReader.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetReader.java
@@ -42,14 +42,19 @@
     /** 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 @@
     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
         {