allow moving across filesystems

Use FileUtils instead of renameTo. Also calculate size before moving.


git-svn-id: https://svn.apache.org/repos/asf/archiva/sandbox/trunk@1615835 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/archive-releases-consumer/src/main/java/org/apache/archiva/plugins/archivereleases/ArchiveReleasesConsumer.java b/archive-releases-consumer/src/main/java/org/apache/archiva/plugins/archivereleases/ArchiveReleasesConsumer.java
index 6c52511..464f9b2 100644
--- a/archive-releases-consumer/src/main/java/org/apache/archiva/plugins/archivereleases/ArchiveReleasesConsumer.java
+++ b/archive-releases-consumer/src/main/java/org/apache/archiva/plugins/archivereleases/ArchiveReleasesConsumer.java
@@ -27,6 +27,7 @@
 import org.apache.archiva.consumers.KnownRepositoryContentConsumer;
 import org.apache.archiva.redback.components.registry.Registry;
 import org.apache.archiva.redback.components.registry.RegistryListener;
+import org.apache.commons.io.FileUtils;
 import org.codehaus.plexus.util.SelectorUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -37,6 +38,7 @@
 import javax.annotation.PostConstruct;
 import javax.inject.Inject;
 import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Calendar;
@@ -232,6 +234,8 @@
             }
         }
 
+        totalSize += artifactFile.length();
+
         File targetFile = new File( repositoryArchive, path );
         if ( dryRun )
         {
@@ -241,14 +245,16 @@
         {
             log.info( "archiving file [" + artifactFile.getAbsolutePath() + "] to [" + targetFile + "]" );
 
-            if ( !artifactFile.renameTo( targetFile ) )
+            try
+            {
+                FileUtils.moveFileToDirectory( artifactFile, targetFile.getParentFile(), true );
+            }
+            catch ( IOException e )
             {
                 log.error(
-                    "Unknown error moving file [" + artifactFile.getAbsolutePath() + "] to [" + targetFile + "]" );
+                    "Error moving file [" + artifactFile.getAbsolutePath() + "] to [" + targetFile + "]: " + e.getLocalizedMessage(), e );
             }
         }
-
-        totalSize += artifactFile.length();
     }
 
     private boolean fileNewerThanTarget( File artifactFile )