Author: dantran
Date: Sun Jan 11 12:37:15 2009
New Revision: 733515

URL: http://svn.apache.org/viewvc?rev=733515&view=rev
Log:
SCM-437: add option use export in checkout mojo, and therefore bootstrap mojo 
inherits it as well

Added:
    
maven/scm/trunk/maven-scm-plugin/src/test/resources/mojos/checkout/checkoutUsingExport.xml
Modified:
    
maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/BootstrapMojo.java
    
maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/CheckoutMojo.java
    
maven/scm/trunk/maven-scm-plugin/src/test/java/org/apache/maven/scm/plugin/CheckoutMojoTest.java

Modified: 
maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/BootstrapMojo.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/BootstrapMojo.java?rev=733515&r1=733514&r2=733515&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/BootstrapMojo.java
 (original)
+++ 
maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/BootstrapMojo.java
 Sun Jan 11 12:37:15 2009
@@ -19,7 +19,11 @@
  * under the License.
  */
 
+import java.io.File;
+
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.command.checkout.CheckOutScmResult;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.cli.CommandLineException;
 import org.codehaus.plexus.util.cli.CommandLineUtils;
@@ -27,8 +31,6 @@
 import org.codehaus.plexus.util.cli.DefaultConsumer;
 import org.codehaus.plexus.util.cli.StreamConsumer;
 
-import java.io.File;
-
 /**
  * Pull the project source from the configured scm and execute the configured 
goals.
  *
@@ -74,7 +76,19 @@
 
         if ( this.getCheckoutResult() != null )
         {
-            runGoals( 
this.getCheckoutResult().getRelativePathProjectDirectory() );
+            
+            ScmResult checkoutResult = this.getCheckoutResult();
+            
+            //At the time of useExport feature is requested only SVN and and 
CVS have export command implemented
+            // we will deal with this as more user using this feature 
specially clearcase where we need to 
+            // add relativePathProjectDirectory support to ExportScmResult
+            String relativePathProjectDirectory = "";
+            if ( checkoutResult instanceof CheckOutScmResult )
+            {
+                relativePathProjectDirectory = ( (CheckOutScmResult) 
checkoutResult).getRelativePathProjectDirectory();
+            }
+
+            runGoals( relativePathProjectDirectory );
         }
     }
 

Modified: 
maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/CheckoutMojo.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/CheckoutMojo.java?rev=733515&r1=733514&r2=733515&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/CheckoutMojo.java
 (original)
+++ 
maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/CheckoutMojo.java
 Sun Jan 11 12:37:15 2009
@@ -19,16 +19,17 @@
  * under the License.
  */
 
+import java.io.File;
+import java.io.IOException;
+
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
 import org.apache.maven.scm.command.checkout.CheckOutScmResult;
 import org.apache.maven.scm.repository.ScmRepository;
 import org.codehaus.plexus.util.FileUtils;
 
-import java.io.File;
-import java.io.IOException;
-
 /**
  * Get a fresh copy of the latest source from the configured scm url.
  *
@@ -41,6 +42,13 @@
     extends AbstractScmMojo
 {
     /**
+     * Use Export instead of checkout
+     *
+     * @parameter expression="${useExport}" defaultValue="false";
+     */
+    private boolean useExport;
+    
+    /**
      * The directory to checkout the sources to for the bootstrap and checkout 
goals.
      *
      * @parameter expression="${checkoutDirectory}" 
default-value="${project.build.directory}/checkout"
@@ -71,7 +79,7 @@
     /**
      * allow extended mojo (ie BootStrap ) to see checkout result
      */
-    private CheckOutScmResult checkoutResult;
+    private ScmResult checkoutResult;
 
     /** {...@inheritdoc} */
     public void execute()
@@ -97,32 +105,27 @@
         this.checkoutDirectory = checkoutDirectory;
     }
 
-    protected CheckOutScmResult checkout()
+    protected ScmResult checkout()
         throws MojoExecutionException
     {
         try
         {
             ScmRepository repository = getScmRepository();
 
-            try
-            {
-                this.getLog().info( "Removing " + getCheckoutDirectory() );
-
-                FileUtils.deleteDirectory( getCheckoutDirectory() );
-            }
-            catch ( IOException e )
+            this.prepareOutputDirectory( getCheckoutDirectory() );
+            
+            ScmResult result = null;
+            
+            ScmFileSet fileSet = new ScmFileSet( 
getCheckoutDirectory().getAbsoluteFile() );
+            if ( useExport )
             {
-                throw new MojoExecutionException( "Cannot remove " + 
getCheckoutDirectory() );
+                result = getScmManager().export( repository,fileSet, 
getScmVersion( scmVersionType, scmVersion ) );
             }
-
-            if ( !getCheckoutDirectory().mkdirs() )
+            else
             {
-                throw new MojoExecutionException( "Cannot create " + 
getCheckoutDirectory() );
+                result = getScmManager().checkOut( repository,fileSet , 
getScmVersion( scmVersionType, scmVersion ) );
             }
 
-            CheckOutScmResult result = getScmManager().checkOut( repository, 
new ScmFileSet(
-                getCheckoutDirectory().getAbsoluteFile() ), getScmVersion( 
scmVersionType, scmVersion ) );
-
             checkResult( result );
 
             return result;
@@ -133,7 +136,27 @@
         }
     }
 
-    protected CheckOutScmResult getCheckoutResult()
+    private void prepareOutputDirectory( File ouputDirectory )
+        throws MojoExecutionException
+    {
+        try
+        {
+            this.getLog().info( "Removing " + ouputDirectory );
+
+            FileUtils.deleteDirectory( getCheckoutDirectory() );
+        }
+        catch ( IOException e )
+        {
+            throw new MojoExecutionException( "Cannot remove " + 
ouputDirectory );
+        }
+        
+        if ( !getCheckoutDirectory().mkdirs() )
+        {
+            throw new MojoExecutionException( "Cannot create " + 
ouputDirectory );
+        }
+    }
+    
+    protected ScmResult getCheckoutResult()
     {
         return checkoutResult;
     }

Modified: 
maven/scm/trunk/maven-scm-plugin/src/test/java/org/apache/maven/scm/plugin/CheckoutMojoTest.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-plugin/src/test/java/org/apache/maven/scm/plugin/CheckoutMojoTest.java?rev=733515&r1=733514&r2=733515&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-plugin/src/test/java/org/apache/maven/scm/plugin/CheckoutMojoTest.java
 (original)
+++ 
maven/scm/trunk/maven-scm-plugin/src/test/java/org/apache/maven/scm/plugin/CheckoutMojoTest.java
 Sun Jan 11 12:37:15 2009
@@ -110,4 +110,18 @@
         }
     }
 
+    public void testUseExport()
+        throws Exception
+    {
+        checkoutDir.mkdirs();
+
+        CheckoutMojo mojo = (CheckoutMojo) lookupMojo( "checkout", getTestFile(
+            "src/test/resources/mojos/checkout/checkoutUsingExport.xml" ) );
+
+        mojo.setCheckoutDirectory( checkoutDir );
+
+        mojo.execute();
+
+        assertTrue( checkoutDir.listFiles().length > 0  );
+        assertFalse( new File( checkoutDir, ".svn" ).exists() );    }    
 }

Added: 
maven/scm/trunk/maven-scm-plugin/src/test/resources/mojos/checkout/checkoutUsingExport.xml
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-plugin/src/test/resources/mojos/checkout/checkoutUsingExport.xml?rev=733515&view=auto
==============================================================================
--- 
maven/scm/trunk/maven-scm-plugin/src/test/resources/mojos/checkout/checkoutUsingExport.xml
 (added)
+++ 
maven/scm/trunk/maven-scm-plugin/src/test/resources/mojos/checkout/checkoutUsingExport.xml
 Sun Jan 11 12:37:15 2009
@@ -0,0 +1,35 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~ http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<project>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-scm-plugin</artifactId>
+        <configuration>
+          <settings implementation="org.apache.maven.settings.Settings"/>
+          <checkoutDirectory>target/checkout</checkoutDirectory>
+          <connectionType>connection</connectionType>
+          <useExport>true</useExport>
+          
<connectionUrl>scm:svn:file:///${basedir}/target/repository/trunk</connectionUrl>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
\ No newline at end of file


Reply via email to