Merge pull request #6 from roxspring/feature/MRESOURCES-258-reuse-shared-file-copy-logic

[MRESOURCES-258] Copying and filtering logic is delegated to FileUtils
diff --git a/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java b/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
index 86b90ed..beb2049 100644
--- a/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
+++ b/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
@@ -19,30 +19,14 @@
  * under the License.
  */
 
-import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.FileWriter;
 import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.io.Reader;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
 import java.util.List;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.shared.utils.StringUtils;
 import org.apache.maven.shared.utils.io.FileUtils;
 import org.apache.maven.shared.utils.io.FileUtils.FilterWrapper;
-import org.apache.maven.shared.utils.io.IOUtil;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.sonatype.plexus.build.incremental.BuildContext;
@@ -110,7 +94,8 @@
                 {
                     getLogger().debug( "filtering " + from.getPath() + " to " + to.getPath() );
                 }
-                filterFile( from, to, encoding, filterWrappers );
+                FilterWrapper[] array = filterWrappers.toArray( new FilterWrapper[0] );
+                FileUtils.copyFile( from, to, encoding, array, false );
             }
             else
             {
@@ -127,62 +112,5 @@
         {
             throw new MavenFilteringException( e.getMessage(), e );
         }
-
     }
-
-    private void filterFile( @Nonnull File from, @Nonnull File to, @Nullable String encoding,
-                             @Nullable List<FilterWrapper> wrappers )
-                                 throws IOException, MavenFilteringException
-    {
-        if ( wrappers != null && wrappers.size() > 0 )
-        {
-            
-            
-            try ( Reader fileReader = getFileReader( encoding, from );
-                  Writer fileWriter = getFileWriter( encoding, to ) )
-            {
-                Reader src = readerFilter.filter( fileReader, true, wrappers );
-
-                IOUtil.copy( src, fileWriter );
-            }
-        }
-        else
-        {
-            if ( to.lastModified() < from.lastModified() )
-            {
-                FileUtils.copyFile( from, to );
-            }
-        }
-    }
-
-    private Writer getFileWriter( String encoding, File to )
-        throws IOException
-    {
-        if ( StringUtils.isEmpty( encoding ) )
-        {
-            return new FileWriter( to );
-        }
-        else
-        {
-            FileOutputStream outstream = new FileOutputStream( to );
-
-            return new OutputStreamWriter( outstream, encoding );
-        }
-    }
-
-    private Reader getFileReader( String encoding, File from )
-        throws FileNotFoundException, UnsupportedEncodingException
-    {
-        // buffer so it isn't reading a byte at a time!
-        if ( StringUtils.isEmpty( encoding ) )
-        {
-            return new BufferedReader( new FileReader( from ) );
-        }
-        else
-        {
-            FileInputStream instream = new FileInputStream( from );
-            return new BufferedReader( new InputStreamReader( instream, encoding ) );
-        }
-    }
-
 }