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();