Author: carlos
Date: Thu Mar  2 23:23:00 2006
New Revision: 382702

URL: http://svn.apache.org/viewcvs?rev=382702&view=rev
Log:
Added initial support for copying directories

Modified:
    
maven/sandbox/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java

Modified: 
maven/sandbox/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java
URL: 
http://svn.apache.org/viewcvs/maven/sandbox/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java?rev=382702&r1=382701&r2=382702&view=diff
==============================================================================
--- 
maven/sandbox/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java
 (original)
+++ 
maven/sandbox/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java
 Thu Mar  2 23:23:00 2006
@@ -122,10 +122,19 @@
         return scmRepository;
     }
 
-    // put
     public void put( File source, String resourceName )
         throws TransferFailedException, ResourceDoesNotExistException, 
AuthorizationException
     {
+        if ( source.isDirectory() )
+        {
+            throw new IllegalArgumentException( "Source is a directory: " + 
source );
+        }
+        putInternal( source, resourceName );
+    }
+
+    private void putInternal( File source, String resourceName )
+        throws TransferFailedException, ResourceDoesNotExistException, 
AuthorizationException
+    {
         Resource resource = new Resource( resourceName );
 
         firePutInitiated( resource, source );
@@ -146,9 +155,10 @@
 
             String msg = "Adding " + resourceName + " to repository";
 
-            // TODO: ewwww
             ScmProvider scmProvider = scmManager.getProviderByRepository( 
scmRepository );
             ScmResult result;
+            
+            //TODO check in other way non svn, cvs specific
             if ( new File( basedir, ".svn" ).exists() || new File( basedir, 
"CVS" ).exists() )
             {
                 result = scmProvider.update( scmRepository, new ScmFileSet( 
basedir ), null );
@@ -172,7 +182,14 @@
 
             if ( !scmFile.equals( source ) )
             {
-                FileUtils.copyFile( source, scmFile );
+                if ( source.isDirectory() )
+                {
+                    FileUtils.copyDirectory( source, scmFile );
+                }
+                else
+                {
+                    FileUtils.copyFile( source, scmFile );
+                }
             }
 
             if ( !fileAlreadyInScm )
@@ -193,11 +210,29 @@
             throw new TransferFailedException( "Error interacting with SCM", e 
);
         }
 
-        postProcessListeners( resource, source, TransferEvent.REQUEST_PUT );
+        if ( source.isFile() )
+        {
+            postProcessListeners( resource, source, TransferEvent.REQUEST_PUT 
);
+        }
 
         firePutCompleted( resource, source );
     }
 
+    public boolean supportsDirectoryCopy()
+    {
+        return true;
+    }
+
+    public void putDirectory( File sourceDirectory, String 
destinationDirectory )
+        throws TransferFailedException, ResourceDoesNotExistException, 
AuthorizationException
+    {
+        if ( !sourceDirectory.isDirectory() )
+        {
+            throw new IllegalArgumentException( "Source is not a directory: " 
+ sourceDirectory );
+        }
+        putInternal( sourceDirectory, destinationDirectory );
+    }
+
     private void checkScmResult( ScmResult result ) throws 
TransferFailedException
     {
         if ( !result.isSuccess() )
@@ -308,4 +343,5 @@
 
         fireGetCompleted( resource, destination );
     }
+
 }


Reply via email to