Author: evenisse
Date: Fri Mar  3 03:45:14 2006
New Revision: 382770

URL: http://svn.apache.org/viewcvs?rev=382770&view=rev
Log:
Fix put method when we have some sub-directories

Modified:
    
maven/sandbox/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java
    
maven/sandbox/wagon-scm/src/test/java/org/apache/maven/wagon/providers/scm/ScmCvsWagonTest.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=382770&r1=382769&r2=382770&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
 Fri Mar  3 03:45:14 2006
@@ -133,16 +133,13 @@
     }
 
     private void putInternal( File source, String resourceName )
-        throws TransferFailedException, ResourceDoesNotExistException, 
AuthorizationException
+        throws TransferFailedException
     {
         Resource resource = new Resource( resourceName );
 
         firePutInitiated( resource, source );
 
-        String url = getRepository().getUrl() + "/" + resourceName;
-
-        // remove the file
-        url = url.substring( 0, url.lastIndexOf( '/' ) );
+        String url = getRepository().getUrl();
 
         ScmRepository scmRepository = getScmRepository( url );
 
@@ -151,13 +148,14 @@
         try
         {
             File scmFile = new File( checkoutDirectory, resourceName );
+
             File basedir = scmFile.getParentFile();
 
             String msg = "Adding " + resourceName + " to repository";
 
             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() )
             {
@@ -171,9 +169,8 @@
                 if ( lastOne != null )
                 {
                     checkScmResult( result );
-                    result = scmProvider.checkIn( scmRepository,
-                                                           new ScmFileSet( 
lastOne.getParentFile(), lastOne ), null,
-                                                           msg );
+                    result = scmProvider.checkIn( scmRepository, new 
ScmFileSet( lastOne.getParentFile(), lastOne ),
+                                                  null, msg );
                 }
             }
             checkScmResult( result );
@@ -184,7 +181,7 @@
             {
                 if ( source.isDirectory() )
                 {
-                    FileUtils.copyDirectory( source, scmFile );
+                    FileUtils.copyDirectoryStructure( source, scmFile );
                 }
                 else
                 {
@@ -194,9 +191,9 @@
 
             if ( !fileAlreadyInScm )
             {
-                result = scmProvider.add( scmRepository, new ScmFileSet( 
basedir, scmFile ) );
-                checkScmResult( result );
+                addFiles( scmProvider, scmRepository, basedir, scmFile );
             }
+
             result = scmProvider.checkIn( scmRepository, new ScmFileSet( 
basedir, scmFile ), null, msg );
             checkScmResult( result );
 
@@ -218,6 +215,27 @@
         firePutCompleted( resource, source );
     }
 
+    private void addFiles( ScmProvider scmProvider, ScmRepository 
scmRepository, File basedir, File scmFile )
+        throws TransferFailedException, ScmException
+    {
+        ScmResult result = scmProvider.add( scmRepository, new ScmFileSet( 
basedir, scmFile ) );
+
+        checkScmResult( result );
+
+        if ( scmFile.isDirectory() )
+        {
+            File[] files = scmFile.listFiles();
+
+            for ( int i = 0; i < files.length; i++ )
+            {
+                if ( !"CVS".equals( files[i].getName() ) && !".svn".equals( 
files[i].getName() ) )
+                {
+                    addFiles( scmProvider, scmRepository, basedir, files[i] );
+                }
+            }
+        }
+    }
+
     public boolean supportsDirectoryCopy()
     {
         return true;
@@ -233,12 +251,13 @@
         putInternal( sourceDirectory, destinationDirectory );
     }
 
-    private void checkScmResult( ScmResult result ) throws 
TransferFailedException
+    private void checkScmResult( ScmResult result )
+        throws TransferFailedException
     {
         if ( !result.isSuccess() )
         {
-            throw new TransferFailedException( "Unable to commit file. " + 
result.getProviderMessage() + " "
-                + result.getCommandOutput() );
+            throw new TransferFailedException(
+                "Unable to commit file. " + result.getProviderMessage() + " " 
+ result.getCommandOutput() );
         }
     }
 

Modified: 
maven/sandbox/wagon-scm/src/test/java/org/apache/maven/wagon/providers/scm/ScmCvsWagonTest.java
URL: 
http://svn.apache.org/viewcvs/maven/sandbox/wagon-scm/src/test/java/org/apache/maven/wagon/providers/scm/ScmCvsWagonTest.java?rev=382770&r1=382769&r2=382770&view=diff
==============================================================================
--- 
maven/sandbox/wagon-scm/src/test/java/org/apache/maven/wagon/providers/scm/ScmCvsWagonTest.java
 (original)
+++ 
maven/sandbox/wagon-scm/src/test/java/org/apache/maven/wagon/providers/scm/ScmCvsWagonTest.java
 Fri Mar  3 03:45:14 2006
@@ -52,7 +52,7 @@
 
     private File getCheckoutDirectory()
     {
-        return new File( FileTestUtils.getTestOutputDir(), "/checkout-cvs");
+        return new File( FileTestUtils.getTestOutputDir(), "/checkout-cvs" );
     }
 
     protected String getProtocol()
@@ -65,13 +65,6 @@
     {
         String repository = getTestFile( "target/test-classes/test-repo-cvs" 
).getAbsolutePath();
 
-        // TODO: this is a hack for windows
-        if ( repository.indexOf( ":" ) >= 0 )
-        {
-            repository = repository.substring( repository.indexOf( ":" ) + 1 );
-        }
-        repository = repository.replace( '\\', '/' );
-
-        return "scm:cvs:local:" + repository + ":repository";
+        return "scm:cvs|local|" + repository + "|repository";
     }
 }


Reply via email to