You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wagon-commits@maven.apache.org by br...@apache.org on 2005/04/29 06:49:08 UTC
svn commit: r165259 - /maven/wagon/trunk/wagon-providers/wagon-scm
/maven/wagon/trunk/wagon-providers/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm
/maven/wagon/trunk/wagon-providers/wagon-scm/src/main/resources/META-INF/plexus
/maven/wagon/trunk/wagon-providers/wagon-scm/src/test/java/org/apache/maven/wagon/providers/scm
/maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/sshext
Author: brett
Date: Thu Apr 28 21:49:06 2005
New Revision: 165259
URL: http://svn.apache.org/viewcvs?rev=165259&view=rev
Log:
complete implementation of SCM based wagon
Modified:
maven/wagon/trunk/wagon-providers/wagon-scm/pom.xml
maven/wagon/trunk/wagon-providers/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java
maven/wagon/trunk/wagon-providers/wagon-scm/src/main/resources/META-INF/plexus/components.xml
maven/wagon/trunk/wagon-providers/wagon-scm/src/test/java/org/apache/maven/wagon/providers/scm/ScmWagonTest.java
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/sshext/ScpExternalWagon.java
Modified: maven/wagon/trunk/wagon-providers/wagon-scm/pom.xml
URL: http://svn.apache.org/viewcvs/maven/wagon/trunk/wagon-providers/wagon-scm/pom.xml?rev=165259&r1=165258&r2=165259&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-scm/pom.xml (original)
+++ maven/wagon/trunk/wagon-providers/wagon-scm/pom.xml Thu Apr 28 21:49:06 2005
@@ -28,5 +28,11 @@
<version>1.0-alpha-1-SNAPSHOT</version>
<!-- temporarily required at compile time -->
</dependency>
+ <dependency>
+ <groupId>org.apache.maven.scm</groupId>
+ <artifactId>maven-scm-test</artifactId>
+ <version>1.0-alpha-1-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
Modified: maven/wagon/trunk/wagon-providers/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java
URL: http://svn.apache.org/viewcvs/maven/wagon/trunk/wagon-providers/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java?rev=165259&r1=165258&r2=165259&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-scm/src/main/java/org/apache/maven/wagon/providers/scm/ScmWagon.java Thu Apr 28 21:49:06 2005
@@ -16,35 +16,24 @@
* limitations under the License.
*/
-import org.apache.commons.httpclient.Credentials;
-import org.apache.commons.httpclient.Header;
-import org.apache.commons.httpclient.HostConfiguration;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpRecoverableException;
-import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
-import org.apache.commons.httpclient.NTCredentials;
-import org.apache.commons.httpclient.UsernamePasswordCredentials;
-import org.apache.commons.httpclient.methods.GetMethod;
-import org.apache.commons.httpclient.methods.PutMethod;
-import org.apache.commons.httpclient.util.DateParseException;
-import org.apache.commons.httpclient.util.DateParser;
-import org.apache.commons.lang.StringUtils;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
import org.apache.maven.scm.manager.NoSuchScmProviderException;
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.apache.maven.scm.repository.ScmRepositoryException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.ScmException;
import org.apache.maven.wagon.AbstractWagon;
import org.apache.maven.wagon.ConnectionException;
import org.apache.maven.wagon.ResourceDoesNotExistException;
import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.events.TransferEvent;
import org.apache.maven.wagon.authorization.AuthorizationException;
import org.apache.maven.wagon.resource.Resource;
+import org.apache.maven.wagon.util.FileUtils;
import java.io.File;
+import java.io.IOException;
/**
* @author <a href="brett@apache.org">Brett Porter</a>
@@ -55,6 +44,8 @@
{
private ScmManager scmManager;
+ private File checkoutDirectory;
+
public ScmManager getScmManager()
{
return scmManager;
@@ -65,9 +56,23 @@
this.scmManager = scmManager;
}
+ public File getCheckoutDirectory()
+ {
+ return checkoutDirectory;
+ }
+
+ public void setCheckoutDirectory( File checkoutDirectory )
+ {
+ this.checkoutDirectory = checkoutDirectory;
+ }
+
public void openConnection()
throws ConnectionException
{
+ if ( !checkoutDirectory.exists() )
+ {
+ checkoutDirectory.mkdirs();
+ }
}
private ScmRepository getScmRepository( String url )
@@ -87,7 +92,7 @@
ScmRepository scmRepository;
try
{
- scmRepository = scmManager.makeScmRepository( getRepository().getUrl() );
+ scmRepository = scmManager.makeScmRepository( url );
}
catch ( ScmRepositoryException e )
{
@@ -119,17 +124,51 @@
public void put( File source, String resourceName )
throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
{
- String url = getRepository().getUrl() + "/" + resourceName;
-
Resource resource = new Resource( resourceName );
firePutInitiated( resource, source );
+ String url = getRepository().getUrl() + "/" + resourceName;
+
+ ScmRepository scmRepository = getScmRepository( url );
+
firePutStarted( resource, source );
- // TODO: if not exists, checkout
- // TODO: put file in place
- // TODO: commit
+ try
+ {
+ File scmFile = new File( checkoutDirectory, resourceName );
+ scmFile.getParentFile().mkdirs();
+
+ boolean alreadyExists = scmFile.exists();
+
+ if ( !scmFile.equals( source ) )
+ {
+ FileUtils.copyFile( source, scmFile );
+ }
+
+ if ( alreadyExists )
+ {
+ scmManager.update( scmRepository, new ScmFileSet( checkoutDirectory, resourceName, null ), null );
+ }
+ else
+ {
+ scmManager.checkOut( scmRepository, new ScmFileSet( scmFile.getParentFile() ), null );
+ scmManager.add( scmRepository, new ScmFileSet( scmFile.getParentFile(), scmFile ) );
+ }
+
+ String msg = "Adding " + resourceName + " to repository";
+ scmManager.checkIn( scmRepository, new ScmFileSet( scmFile.getParentFile(), scmFile ), null, msg );
+ }
+ catch ( ScmException e )
+ {
+ throw new TransferFailedException( "Error interacting with SCM", e );
+ }
+ catch ( IOException e )
+ {
+ throw new TransferFailedException( "Error interacting with SCM", e );
+ }
+
+ postProcessListeners( resource, source, TransferEvent.REQUEST_PUT );
firePutCompleted( resource, source );
}
@@ -165,19 +204,33 @@
try
{
- if ( destination.exists() )
+ File scmFile = new File( checkoutDirectory, resourceName );
+ scmFile.getParentFile().mkdirs();
+
+ if ( scmFile.exists() )
{
- scmManager.update( scmRepository, new ScmFileSet( destination.getParentFile(), destination ), null );
+ scmManager.update( scmRepository, new ScmFileSet( checkoutDirectory, resourceName, null ), null );
}
else
{
- scmManager.checkOut( scmRepository, new ScmFileSet( destination.getParentFile() ), null );
+ scmManager.checkOut( scmRepository, new ScmFileSet( scmFile.getParentFile() ), null );
+ }
+
+ if ( !scmFile.equals( destination ) )
+ {
+ FileUtils.copyFile( scmFile, destination );
}
}
catch ( ScmException e )
{
throw new TransferFailedException( "Error getting file from SCM", e );
}
+ catch ( IOException e )
+ {
+ throw new TransferFailedException( "Error getting file from SCM", e );
+ }
+
+ postProcessListeners( resource, destination, TransferEvent.REQUEST_GET );
fireGetCompleted( resource, destination );
}
Modified: maven/wagon/trunk/wagon-providers/wagon-scm/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewcvs/maven/wagon/trunk/wagon-providers/wagon-scm/src/main/resources/META-INF/plexus/components.xml?rev=165259&r1=165258&r2=165259&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-scm/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/wagon/trunk/wagon-providers/wagon-scm/src/main/resources/META-INF/plexus/components.xml Thu Apr 28 21:49:06 2005
@@ -10,6 +10,9 @@
<role>org.apache.maven.scm.manager.ScmManager</role>
</requirement>
</requirements>
+ <configuration>
+ <checkoutDirectory>${user.home}/.m2/repository</checkoutDirectory>
+ </configuration>
</component>
</components>
</component-set>
Modified: maven/wagon/trunk/wagon-providers/wagon-scm/src/test/java/org/apache/maven/wagon/providers/scm/ScmWagonTest.java
URL: http://svn.apache.org/viewcvs/maven/wagon/trunk/wagon-providers/wagon-scm/src/test/java/org/apache/maven/wagon/providers/scm/ScmWagonTest.java?rev=165259&r1=165258&r2=165259&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-scm/src/test/java/org/apache/maven/wagon/providers/scm/ScmWagonTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-scm/src/test/java/org/apache/maven/wagon/providers/scm/ScmWagonTest.java Thu Apr 28 21:49:06 2005
@@ -17,8 +17,9 @@
*/
-import org.apache.maven.wagon.FileTestUtils;
import org.apache.maven.wagon.WagonTestCase;
+import org.apache.maven.wagon.Wagon;
+import org.apache.maven.wagon.util.FileUtils;
import java.io.File;
import java.io.IOException;
@@ -30,16 +31,46 @@
public class ScmWagonTest
extends WagonTestCase
{
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+
+ FileUtils.deleteDirectory( getCheckoutDirectory() );
+ }
+
+ protected Wagon getWagon()
+ throws Exception
+ {
+ ScmWagon wagon = (ScmWagon) super.getWagon();
+
+ wagon.setCheckoutDirectory( getCheckoutDirectory() );
+
+ return wagon;
+ }
+
+ private File getCheckoutDirectory()
+ {
+ return getTestFile( "target/test-output/checkout" );
+ }
+
protected String getProtocol()
{
- return "file";
+ return "scm";
}
protected String getTestRepositoryUrl()
throws IOException
{
- File file = FileTestUtils.createUniqueDir( getName() + ".file-repository." );
+ String repository = getTestFile( "target/test-classes/test-repo" ).getAbsolutePath();
+
+ // TODO: this is a hack for windows
+ if ( repository.indexOf( ":" ) >= 0 )
+ {
+ repository = repository.substring( repository.indexOf( ":" ) + 1 );
+ }
+ repository = repository.replace( '\\', '/' );
- return "file://" + file.getPath();
+ return "scm:cvs:local:" + repository + ":repository";
}
}
Modified: maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/sshext/ScpExternalWagon.java
URL: http://svn.apache.org/viewcvs/maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/sshext/ScpExternalWagon.java?rev=165259&r1=165258&r2=165259&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/sshext/ScpExternalWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/sshext/ScpExternalWagon.java Thu Apr 28 21:49:06 2005
@@ -274,35 +274,6 @@
firePutCompleted( resource, source );
}
- private void postProcessListeners( Resource resource, File source, int requestType )
- throws TransferFailedException
- {
- byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
-
- TransferEvent transferEvent = new TransferEvent( this, resource, TransferEvent.TRANSFER_PROGRESS, requestType );
-
- try
- {
- InputStream input = new FileInputStream( source );
-
- while ( true )
- {
- int n = input.read( buffer );
-
- if ( n == -1 )
- {
- break;
- }
-
- fireTransferProgress( transferEvent, buffer, n );
- }
- }
- catch ( IOException e )
- {
- throw new TransferFailedException( "Failed to post-process the source file", e );
- }
- }
-
public void get( String resourceName, File destination )
throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
{
---------------------------------------------------------------------
To unsubscribe, e-mail: wagon-cvs-unsubscribe@maven.apache.org
For additional commands, e-mail: wagon-cvs-help@maven.apache.org