You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ca...@apache.org on 2006/05/04 01:58:19 UTC

svn commit: r399490 - /maven/sandbox/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java

Author: carlos
Date: Wed May  3 16:58:17 2006
New Revision: 399490

URL: http://svn.apache.org/viewcvs?rev=399490&view=rev
Log:
Added getScmProvider method and encapsulate field usages

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=399490&r1=399489&r2=399490&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 Wed May  3 16:58:17 2006
@@ -41,6 +41,11 @@
 import org.codehaus.plexus.util.StringUtils;
 
 /**
+ * Wagon provider to get and put files form and to SCM systems, using Maven-SCM as underlying transport.
+ * 
+ * TODO it probably creates problems if the same wagon is used in two different SCM protocols, as
+ * instance variables can keep incorrect state.
+ * 
  * @author <a href="brett@apache.org">Brett Porter</a>
  * @author <a href="evenisse@apache.org">Emmanuel Venisse</a>
  * @author <a href="carlos@apache.org">Carlos Sanchez</a>
@@ -53,26 +58,59 @@
 
     private File checkoutDirectory;
 
+    /**
+     * Get the {@link ScmManager} used in this Wagon
+     * 
+     * @return rhe {@link ScmManager}
+     */
     public ScmManager getScmManager()
     {
         return scmManager;
     }
 
+    /**
+     * Set the {@link ScmManager} used in this Wagon
+     * 
+     * @param scmManager
+     */
     public void setScmManager( ScmManager scmManager )
     {
         this.scmManager = scmManager;
     }
 
+    /**
+     * Get the directory where Wagon will checkout files from SCM
+     * 
+     * @return directory
+     */
     public File getCheckoutDirectory()
     {
         return checkoutDirectory;
     }
 
+    /**
+     * Set the directory where Wagon will checkout files from SCM
+     * 
+     * @param checkoutDirectory
+     */
     public void setCheckoutDirectory( File checkoutDirectory )
     {
         this.checkoutDirectory = checkoutDirectory;
     }
 
+    /**
+     * Convenience method to get the {@link ScmProvider} implementation to handle the provided SCM type
+     * 
+     * @param scmType type of SCM, eg. <code>svn</code>, <code>cvs</code>
+     * @return the {@link ScmProvider} that will handle provided SCM type
+     * @throws NoSuchScmProviderException if there is no {@link ScmProvider} able to handle that SCM type
+     */
+    public ScmProvider getScmProvider( String scmType )
+        throws NoSuchScmProviderException
+    {
+        return getScmManager().getProviderByType( scmType );
+    }
+
     public void openConnection()
         throws ConnectionException
     {
@@ -108,7 +146,7 @@
 
         try
         {
-            scmRepository = scmManager.makeScmRepository( url );
+            scmRepository = getScmManager().makeScmRepository( url );
         }
         catch ( ScmRepositoryException e )
         {
@@ -186,7 +224,7 @@
 
             String msg = "Wagon: Adding " + source.getName() + " to repository";
 
-            ScmProvider scmProvider = scmManager.getProviderByRepository( scmRepository );
+            ScmProvider scmProvider = getScmProvider( scmRepository.getProvider() );
 
             ScmResult result;
 
@@ -198,6 +236,10 @@
             }
             else
             {
+                /*
+                 * TODO if the scmRepository points to a non existing folder we need to create all
+                 * the hierarchy of parent folders up to the existing one
+                 */
                 result = scmProvider.checkOut( scmRepository, new ScmFileSet( basedir ), null );
             }
             checkScmResult( result );
@@ -336,6 +378,11 @@
     {
     }
 
+    /**
+     * Not implemented
+     * 
+     * @throws UnsupportedOperationException always
+     */
     public boolean getIfNewer( String resourceName, File destination, long timestamp )
         throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
     {
@@ -369,7 +416,7 @@
             File scmFile = new File( checkoutDirectory, resourceName );
             File basedir = scmFile.getParentFile();
 
-            ScmProvider scmProvider = scmManager.getProviderByRepository( scmRepository );
+            ScmProvider scmProvider = getScmProvider( scmRepository.getProvider() );
 
             String reservedScmFile = scmProvider.getScmSpecificFilename();