Author: vsiveton
Date: Mon Sep  1 08:08:23 2008
New Revision: 690992

URL: http://svn.apache.org/viewvc?rev=690992&view=rev
Log:
SCM-346: Recursive flag is not implemented in the check out command
Submitted by: David Cuesta
Reviewed by: Vincent Siveton

o patch partially applied
o take care of backward compatibility
o update other providers
o added test case

Modified:
    
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/checkout/AbstractCheckOutCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/commands/checkout/AccuRevCheckOutUsingPopCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/commands/checkout/AccuRevCheckOutWorkspaceCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/checkout/BazaarCheckOutCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-clearcase/src/main/java/org/apache/maven/scm/provider/clearcase/command/checkout/ClearCaseCheckOutCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/checkout/HgCheckOutCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-local/src/main/java/org/apache/maven/scm/provider/local/command/checkout/LocalCheckOutCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/checkout/StarteamCheckOutCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-synergy/src/main/java/org/apache/maven/scm/provider/synergy/command/checkout/SynergyCheckOutCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/checkout/VssCheckOutCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/checkout/AbstractCvsCheckOutCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommandTest.java

Modified: 
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/checkout/AbstractCheckOutCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/checkout/AbstractCheckOutCommand.java?rev=690992&r1=690991&r2=690992&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/checkout/AbstractCheckOutCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/checkout/AbstractCheckOutCommand.java
 Mon Sep  1 08:08:23 2008
@@ -36,8 +36,36 @@
 public abstract class AbstractCheckOutCommand
     extends AbstractCommand
 {
-    protected abstract CheckOutScmResult executeCheckOutCommand( 
ScmProviderRepository repository, ScmFileSet fileSet,
+    /**
+     * Execute Check out command line in a recursive check out way.
+     *
+     * @param repository not null
+     * @param fileSet not null
+     * @param scmVersion not null
+     * @return the checkout result
+     * @throws ScmException if any
+     * @see #executeCheckOutCommand(ScmProviderRepository, ScmFileSet, 
ScmVersion, boolean)
+     */
+    protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository 
repository, ScmFileSet fileSet,
                                                                  ScmVersion 
scmVersion )
+        throws ScmException
+    {
+        return executeCheckOutCommand( repository, fileSet, scmVersion, true );
+    }
+
+    /**
+     * Execute Check out command line.
+     *
+     * @param repository not null
+     * @param fileSet not null
+     * @param scmVersion not null
+     * @param recursive <code>true</code> if recursive check out is wanted, 
<code>false</code> otherwise.
+     * @return the checkout result
+     * @throws ScmException if any
+     * @since 1.1.1
+     */
+    protected abstract CheckOutScmResult executeCheckOutCommand( 
ScmProviderRepository repository, ScmFileSet fileSet,
+                                                                 ScmVersion 
scmVersion, boolean recursive )
         throws ScmException;
 
     /** [EMAIL PROTECTED] */
@@ -46,6 +74,12 @@
         throws ScmException
     {
         ScmVersion scmVersion = parameters.getScmVersion( 
CommandParameter.SCM_VERSION, null );
+        String recursiveParam = parameters.getString( 
CommandParameter.RECURSIVE, null );
+        if ( recursiveParam != null )
+        {
+            boolean recursive = parameters.getBoolean( 
CommandParameter.RECURSIVE );
+            return executeCheckOutCommand( repository, fileSet, scmVersion, 
recursive );
+        }
 
         return executeCheckOutCommand( repository, fileSet, scmVersion );
     }

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/commands/checkout/AccuRevCheckOutUsingPopCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/commands/checkout/AccuRevCheckOutUsingPopCommand.java?rev=690992&r1=690991&r2=690992&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/commands/checkout/AccuRevCheckOutUsingPopCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/commands/checkout/AccuRevCheckOutUsingPopCommand.java
 Mon Sep  1 08:08:23 2008
@@ -61,7 +61,7 @@
 
     /** [EMAIL PROTECTED] */
     protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository 
repository, ScmFileSet fileSet,
-                                                        ScmVersion version )
+                                                        ScmVersion version, 
boolean recursive )
         throws ScmException
     {
         try

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/commands/checkout/AccuRevCheckOutWorkspaceCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/commands/checkout/AccuRevCheckOutWorkspaceCommand.java?rev=690992&r1=690991&r2=690992&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/commands/checkout/AccuRevCheckOutWorkspaceCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/commands/checkout/AccuRevCheckOutWorkspaceCommand.java
 Mon Sep  1 08:08:23 2008
@@ -59,7 +59,7 @@
 
     /** [EMAIL PROTECTED] */
     protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository 
repository, ScmFileSet fileSet,
-                                                        ScmVersion version )
+                                                        ScmVersion version, 
boolean recursive )
         throws ScmException
     {
         try

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/checkout/BazaarCheckOutCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/checkout/BazaarCheckOutCommand.java?rev=690992&r1=690991&r2=690992&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/checkout/BazaarCheckOutCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/checkout/BazaarCheckOutCommand.java
 Mon Sep  1 08:08:23 2008
@@ -47,7 +47,7 @@
 {
     /** [EMAIL PROTECTED] */
     protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository 
repo, ScmFileSet fileSet,
-                                                        ScmVersion version )
+                                                        ScmVersion version, 
boolean recursive )
         throws ScmException
     {
 

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-clearcase/src/main/java/org/apache/maven/scm/provider/clearcase/command/checkout/ClearCaseCheckOutCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-clearcase/src/main/java/org/apache/maven/scm/provider/clearcase/command/checkout/ClearCaseCheckOutCommand.java?rev=690992&r1=690991&r2=690992&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-clearcase/src/main/java/org/apache/maven/scm/provider/clearcase/command/checkout/ClearCaseCheckOutCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-clearcase/src/main/java/org/apache/maven/scm/provider/clearcase/command/checkout/ClearCaseCheckOutCommand.java
 Mon Sep  1 08:08:23 2008
@@ -57,7 +57,7 @@
 
     /** [EMAIL PROTECTED] */
     protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository 
repository, ScmFileSet fileSet,
-                                                        ScmVersion version )
+                                                        ScmVersion version, 
boolean recursive )
         throws ScmException
     {
         getLogger().debug( "executing checkout command..." );

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/checkout/HgCheckOutCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/checkout/HgCheckOutCommand.java?rev=690992&r1=690991&r2=690992&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/checkout/HgCheckOutCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/checkout/HgCheckOutCommand.java
 Mon Sep  1 08:08:23 2008
@@ -47,7 +47,7 @@
 {
     /** [EMAIL PROTECTED] */
     protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository 
repo, ScmFileSet fileSet,
-                                                        ScmVersion scmVersion )
+                                                        ScmVersion scmVersion, 
boolean recursive )
         throws ScmException
     {
         HgScmProviderRepository repository = (HgScmProviderRepository) repo;

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-local/src/main/java/org/apache/maven/scm/provider/local/command/checkout/LocalCheckOutCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-local/src/main/java/org/apache/maven/scm/provider/local/command/checkout/LocalCheckOutCommand.java?rev=690992&r1=690991&r2=690992&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-local/src/main/java/org/apache/maven/scm/provider/local/command/checkout/LocalCheckOutCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-local/src/main/java/org/apache/maven/scm/provider/local/command/checkout/LocalCheckOutCommand.java
 Mon Sep  1 08:08:23 2008
@@ -49,7 +49,7 @@
 {
     /** [EMAIL PROTECTED] */
     protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository 
repo, ScmFileSet fileSet,
-                                                        ScmVersion version )
+                                                        ScmVersion version, 
boolean recursive )
         throws ScmException
     {
         LocalScmProviderRepository repository = (LocalScmProviderRepository) 
repo;

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommand.java?rev=690992&r1=690991&r2=690992&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommand.java
 Mon Sep  1 08:08:23 2008
@@ -63,7 +63,7 @@
      * [EMAIL PROTECTED]
      */
     protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository 
repo, ScmFileSet files,
-                                                        ScmVersion version )
+                                                        ScmVersion version, 
boolean recursive )
         throws ScmException
     {
         PerforceScmProviderRepository prepo = (PerforceScmProviderRepository) 
repo;

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/checkout/StarteamCheckOutCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/checkout/StarteamCheckOutCommand.java?rev=690992&r1=690991&r2=690992&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/checkout/StarteamCheckOutCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/checkout/StarteamCheckOutCommand.java
 Mon Sep  1 08:08:23 2008
@@ -50,7 +50,7 @@
 
     /** [EMAIL PROTECTED] */
     protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository 
repo, ScmFileSet fileSet,
-                                                        ScmVersion version )
+                                                        ScmVersion version, 
boolean recursive )
         throws ScmException
     {
         if ( fileSet.getFileList().size() != 0 )

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-synergy/src/main/java/org/apache/maven/scm/provider/synergy/command/checkout/SynergyCheckOutCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-synergy/src/main/java/org/apache/maven/scm/provider/synergy/command/checkout/SynergyCheckOutCommand.java?rev=690992&r1=690991&r2=690992&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-synergy/src/main/java/org/apache/maven/scm/provider/synergy/command/checkout/SynergyCheckOutCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-synergy/src/main/java/org/apache/maven/scm/provider/synergy/command/checkout/SynergyCheckOutCommand.java
 Mon Sep  1 08:08:23 2008
@@ -46,7 +46,7 @@
 
     /** [EMAIL PROTECTED] */
     protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository 
repository, ScmFileSet fileSet,
-                                                        ScmVersion version )
+                                                        ScmVersion version, 
boolean recursive )
         throws ScmException
     {
         if ( fileSet.getFileList().size() != 0 )

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/checkout/VssCheckOutCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/checkout/VssCheckOutCommand.java?rev=690992&r1=690991&r2=690992&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/checkout/VssCheckOutCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/checkout/VssCheckOutCommand.java
 Mon Sep  1 08:08:23 2008
@@ -41,7 +41,7 @@
 
     /** [EMAIL PROTECTED] */
     protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository 
repository, ScmFileSet fileSet,
-                                                        ScmVersion version )
+                                                        ScmVersion version, 
boolean recursive )
         throws ScmException
     {
         getLogger().debug( "executing checkout command..." );

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/checkout/AbstractCvsCheckOutCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/checkout/AbstractCvsCheckOutCommand.java?rev=690992&r1=690991&r2=690992&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/checkout/AbstractCvsCheckOutCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/checkout/AbstractCvsCheckOutCommand.java
 Mon Sep  1 08:08:23 2008
@@ -45,7 +45,7 @@
 {
     /** [EMAIL PROTECTED] */
     protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository 
repo, ScmFileSet fileSet,
-                                                        ScmVersion version )
+                                                        ScmVersion version, 
boolean recursive )
         throws ScmException
     {
         if ( fileSet.getBasedir().exists() )

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java?rev=690992&r1=690991&r2=690992&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java
 Mon Sep  1 08:08:23 2008
@@ -55,7 +55,7 @@
      * [EMAIL PROTECTED]
      */
     protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository 
repo, ScmFileSet fileSet,
-                                                        ScmVersion version )
+                                                        ScmVersion version, 
boolean recursive )
         throws ScmException
     {
         GitScmProviderRepository repository = (GitScmProviderRepository) repo;

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommand.java?rev=690992&r1=690991&r2=690992&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommand.java
 Mon Sep  1 08:08:23 2008
@@ -50,7 +50,7 @@
 {
     /** [EMAIL PROTECTED] */
     protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository 
repo, ScmFileSet fileSet,
-                                                        ScmVersion version )
+                                                        ScmVersion version, 
boolean recursive )
         throws ScmException
     {
         SvnScmProviderRepository repository = (SvnScmProviderRepository) repo;
@@ -71,7 +71,7 @@
 
         url = SvnCommandUtils.fixUrl( url, repository.getUser() );
 
-        Commandline cl = createCommandLine( repository, fileSet.getBasedir(), 
version, url );
+        Commandline cl = createCommandLine( repository, fileSet.getBasedir(), 
version, url, recursive );
 
         SvnCheckOutConsumer consumer = new SvnCheckOutConsumer( getLogger(), 
fileSet.getBasedir().getParentFile() );
 
@@ -103,26 +103,59 @@
     //
     // ----------------------------------------------------------------------
 
+    /**
+     * Create SVN check out command line in a recursive way.
+     *
+     * @param repository not null
+     * @param workingDirectory not null
+     * @param version not null
+     * @param url not null
+     * @return the SVN command line for the SVN check out.
+     * @see #createCommandLine(SvnScmProviderRepository, File, ScmVersion, 
String, boolean)
+     */
     public static Commandline createCommandLine( SvnScmProviderRepository 
repository, File workingDirectory,
                                                  ScmVersion version, String 
url )
     {
+        return createCommandLine( repository, workingDirectory, version, url, 
true );
+    }
+
+    /**
+     * Create SVN check out command line.
+     *
+     * @param repository not null
+     * @param workingDirectory not null
+     * @param version not null
+     * @param url not null
+     * @param recursive <code>true</code> if recursive check out is wanted, 
<code>false</code> otherwise.
+     * @return the SVN command line for the SVN check out.
+     * @since 1.1.1
+     */
+    public static Commandline createCommandLine( SvnScmProviderRepository 
repository, File workingDirectory,
+                                                 ScmVersion version, String 
url, boolean recursive )
+    {
         Commandline cl = SvnCommandLineUtils.getBaseSvnCommandLine( 
workingDirectory.getParentFile(), repository );
 
-        cl.createArgument().setValue( "checkout" );
+        cl.createArg().setValue( "checkout" );
+
+        // add non recursive option
+        if ( !recursive )
+        {
+            cl.createArg().setValue( "-N" );
+        }
 
         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
         {
             if ( version instanceof ScmRevision )
             {
-                cl.createArgument().setValue( "-r" );
+                cl.createArg().setValue( "-r" );
 
-                cl.createArgument().setValue( version.getName() );
+                cl.createArg().setValue( version.getName() );
             }
         }
 
-        cl.createArgument().setValue( url );
+        cl.createArg().setValue( url );
 
-        cl.createArgument().setValue( workingDirectory.getName() );
+        cl.createArg().setValue( workingDirectory.getName() );
 
         return cl;
     }

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommandTest.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommandTest.java?rev=690992&r1=690991&r2=690992&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommandTest.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/checkout/SvnCheckOutCommandTest.java
 Mon Sep  1 08:08:23 2008
@@ -24,6 +24,7 @@
 import org.apache.maven.scm.manager.ScmManager;
 import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
 import org.apache.maven.scm.repository.ScmRepository;
+import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.cli.Commandline;
 
 import java.io.File;
@@ -37,6 +38,8 @@
 {
     private File workingDirectory;
 
+    private boolean recursive;
+
     // ----------------------------------------------------------------------
     //
     // ----------------------------------------------------------------------
@@ -46,7 +49,12 @@
     {
         super.setUp();
 
+        recursive = true;
         workingDirectory = getTestFile( "target/svn-checkout-command-test" );
+        if ( workingDirectory != null && workingDirectory.isDirectory() )
+        {
+            FileUtils.deleteDirectory( workingDirectory );
+        }
     }
 
     // ----------------------------------------------------------------------
@@ -71,8 +79,17 @@
         throws Exception
     {
         testCommandLine( getScmManager(), "scm:svn:http://foo.com/svn/trunk";, 
"10",
-                         "svn --non-interactive checkout -r 10 
http://foo.com/svn/trunk " +
-                             workingDirectory.getName() );
+                         "svn --non-interactive checkout -r 10 
http://foo.com/svn/trunk "
+                             + workingDirectory.getName() );
+    }
+
+    public void testRecursiveCheckOutCommandLine()
+        throws Exception
+    {
+        recursive = false;
+        testCommandLine( getScmManager(), "scm:svn:http://foo.com/svn/trunk";, 
"10",
+                         "svn --non-interactive checkout -N -r 10 
http://foo.com/svn/trunk "
+                             + workingDirectory.getName() );
     }
 
     // ----------------------------------------------------------------------
@@ -86,8 +103,11 @@
 
         SvnScmProviderRepository svnRepository = (SvnScmProviderRepository) 
repository.getProviderRepository();
 
-        Commandline cl = SvnCheckOutCommand.createCommandLine( svnRepository, 
workingDirectory,
-                                                               new 
ScmRevision( revision ), svnRepository.getUrl() );
+        Commandline cl =
+            cl =
+                SvnCheckOutCommand.createCommandLine( svnRepository, 
workingDirectory,
+                                                      new ScmRevision( 
revision ), svnRepository.getUrl(),
+                                                      recursive );
 
         assertCommandLine( commandLine, workingDirectory.getParentFile(), cl );
     }


Reply via email to