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 2006/11/20 18:11:40 UTC
svn commit: r477260 - in /maven/wagon/trunk:
wagon-provider-api/src/main/java/org/apache/maven/wagon/
wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/
wagon-providers/wagon-ssh-external/ wagon-providers/wagon-ssh-ext...
Author: brett
Date: Mon Nov 20 09:11:39 2006
New Revision: 477260
URL: http://svn.apache.org/viewvc?view=rev&rev=477260
Log:
Have SSH External wagon share the code too
Added:
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/ssh/
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/ssh/external/
- copied from r477247, maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/sshext/
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/ssh/external/ScpExternalWagon.java
- copied, changed from r477259, maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/sshext/ScpExternalWagon.java
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/
- copied from r477247, maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/sshext/
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpExternalWagonTest.java
- copied, changed from r477259, maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/sshext/ScpExternalWagonTest.java
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpWagonWithSshPrivateKeySearchTest.java (with props)
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/SshCommandExecutorTest.java
- copied, changed from r477259, maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/sshext/SshCommandExecutorTest.java
Removed:
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/sshext/
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/TestData.java
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/sshext/
Modified:
maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/CommandExecutor.java
maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/AbstractSshWagon.java
maven/wagon/trunk/wagon-providers/wagon-ssh-external/pom.xml
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/resources/META-INF/plexus/components.xml
Modified: maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/CommandExecutor.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/CommandExecutor.java?view=diff&rev=477260&r1=477259&r2=477260
==============================================================================
(empty)
Modified: maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/AbstractSshWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/AbstractSshWagon.java?view=diff&rev=477260&r1=477259&r2=477260
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/AbstractSshWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/AbstractSshWagon.java Mon Nov 20 09:11:39 2006
@@ -56,14 +56,14 @@
extends AbstractWagon
implements CommandExecutor, SshWagon
{
- private static final int DEFAULT_SSH_PORT = 22;
-
protected KnownHostsProvider knownHostsProvider;
protected InteractiveUserInfo interactiveUserInfo;
protected static final char PATH_SEPARATOR = '/';
+ protected static final int DEFAULT_SSH_PORT = 22;
+
protected String getOctalMode( RepositoryPermissions permissions )
{
String mode = "0644";
@@ -207,19 +207,6 @@
return port;
}
- private void createAuthenticationInfo()
- {
- if ( authenticationInfo == null )
- {
- authenticationInfo = new AuthenticationInfo();
- }
-
- if ( authenticationInfo.getUserName() == null )
- {
- authenticationInfo.setUserName( System.getProperty( "user.name" ) );
- }
- }
-
private File findPrivateKey()
{
String privateKeyDirectory = System.getProperty( "wagon.privateKeyDirectory" );
@@ -357,7 +344,7 @@
try
{
String path = getPath( getRepository().getBasedir(), destinationDirectory );
- Streams streams = executeCommand( "ls -la " + path, true );
+ Streams streams = executeCommand( "ls -la " + path, false );
BufferedReader br = new BufferedReader( new StringReader( streams.getOut() ) );
Modified: maven/wagon/trunk/wagon-providers/wagon-ssh-external/pom.xml
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-external/pom.xml?view=diff&rev=477260&r1=477259&r2=477260
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh-external/pom.xml (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh-external/pom.xml Mon Nov 20 09:11:39 2006
@@ -1,4 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>wagon-providers</artifactId>
<groupId>org.apache.maven.wagon</groupId>
@@ -33,6 +34,15 @@
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-ssh-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-ssh-common-test</artifactId>
+ <scope>test</scope>
</dependency>
</dependencies>
</project>
Copied: maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/ssh/external/ScpExternalWagon.java (from r477259, maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/sshext/ScpExternalWagon.java)
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/ssh/external/ScpExternalWagon.java?view=diff&rev=477260&p1=maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/sshext/ScpExternalWagon.java&r1=477259&p2=maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/ssh/external/ScpExternalWagon.java&r2=477260
==============================================================================
--- 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/ssh/external/ScpExternalWagon.java Mon Nov 20 09:11:39 2006
@@ -1,4 +1,4 @@
-package org.apache.maven.wagon.providers.sshext;
+package org.apache.maven.wagon.providers.ssh.external;
/*
* Copyright 2001-2006 The Apache Software Foundation.
@@ -16,19 +16,16 @@
* limitations under the License.
*/
-import org.apache.maven.wagon.AbstractWagon;
import org.apache.maven.wagon.CommandExecutionException;
-import org.apache.maven.wagon.CommandExecutor;
import org.apache.maven.wagon.PathUtils;
import org.apache.maven.wagon.PermissionModeUtils;
import org.apache.maven.wagon.ResourceDoesNotExistException;
import org.apache.maven.wagon.Streams;
import org.apache.maven.wagon.TransferFailedException;
-import org.apache.maven.wagon.WagonConstants;
import org.apache.maven.wagon.authentication.AuthenticationException;
-import org.apache.maven.wagon.authentication.AuthenticationInfo;
import org.apache.maven.wagon.authorization.AuthorizationException;
import org.apache.maven.wagon.events.TransferEvent;
+import org.apache.maven.wagon.providers.ssh.AbstractSshWagon;
import org.apache.maven.wagon.repository.RepositoryPermissions;
import org.apache.maven.wagon.resource.Resource;
import org.codehaus.plexus.util.FileUtils;
@@ -37,14 +34,9 @@
import org.codehaus.plexus.util.cli.CommandLineUtils;
import org.codehaus.plexus.util.cli.Commandline;
-import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
-import java.io.StringReader;
-import java.util.ArrayList;
import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
/**
* SCP deployer using "external" scp program. To allow for
@@ -53,11 +45,9 @@
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
* @version $Id$
* @todo [BP] add compression flag
- * TODO! this can be shared with ssh-commons now
*/
public class ScpExternalWagon
- extends AbstractWagon
- implements CommandExecutor
+ extends AbstractSshWagon
{
/**
* The external SCP command to use - default is <code>scp</code>.
@@ -87,12 +77,6 @@
*/
private String sshArgs;
- private int port;
-
- private File privateKey;
-
- private String password;
-
private static final int SSH_FATAL_EXIT_CODE = 255;
// ----------------------------------------------------------------------
@@ -102,91 +86,25 @@
public void openConnection()
throws AuthenticationException
{
- if ( authenticationInfo == null )
- {
- authenticationInfo = new AuthenticationInfo();
- }
-
- if ( authenticationInfo.getUserName() == null )
- {
- authenticationInfo.setUserName( System.getProperty( "user.name" ) );
- }
-
- port = getRepository().getPort();
+ super.openConnection();
- // If user don't define a password, he want to use a private key
- if ( authenticationInfo.getPassword() == null )
- {
- File privateKey;
-
- if ( authenticationInfo.getPrivateKey() != null )
- {
- privateKey = new File( authenticationInfo.getPrivateKey() );
- }
- else
- {
- privateKey = findPrivateKey();
- }
-
- if ( privateKey.exists() )
- {
- if ( authenticationInfo.getPassphrase() == null )
- {
- authenticationInfo.setPassphrase( "" );
- }
-
- fireSessionDebug( "Using private key: " + privateKey );
-
- this.privateKey = privateKey;
- }
- }
- else
- {
- this.password = authenticationInfo.getPassword();
- }
// nothing to connect to
}
- // ----------------------------------------------------------------------
- // TODO: share with scp wagon
- // ----------------------------------------------------------------------
-
- private File findPrivateKey()
- {
- String privateKeyDirectory = System.getProperty( "wagon.privateKeyDirectory" );
-
- if ( privateKeyDirectory == null )
- {
- privateKeyDirectory = System.getProperty( "user.home" );
- }
-
- File privateKey = new File( privateKeyDirectory, ".ssh/id_dsa" );
-
- if ( !privateKey.exists() )
- {
- privateKey = new File( privateKeyDirectory, ".ssh/id_rsa" );
- }
-
- return privateKey;
- }
-
- // ----------------------------------------------------------------------
- //
- // ----------------------------------------------------------------------
-
public void closeConnection()
{
// nothing to disconnect
}
- public org.apache.maven.wagon.Streams executeCommand( String command, boolean ignoreFailures )
+ public Streams executeCommand( String command, boolean ignoreFailures )
throws CommandExecutionException
{
boolean putty = sshExecutable.indexOf( "plink" ) >= 0;
Commandline cl = createBaseCommandLine( putty, sshExecutable );
- if ( port != WagonConstants.UNKNOWN_PORT )
+ int port = getPort();
+ if ( port != DEFAULT_SSH_PORT )
{
if ( putty )
{
@@ -241,12 +159,14 @@
cl.setExecutable( executable );
+ File privateKey = getPrivateKey();
if ( privateKey != null )
{
cl.createArgument().setValue( "-i" );
cl.createArgument().setFile( privateKey );
}
+ String password = authenticationInfo.getPassword();
if ( putty && password != null )
{
cl.createArgument().setValue( "-pw" );
@@ -276,7 +196,8 @@
cl.setWorkingDirectory( localFile.getParentFile().getAbsolutePath() );
- if ( port != WagonConstants.UNKNOWN_PORT )
+ int port = getPort();
+ if ( port != DEFAULT_SSH_PORT )
{
cl.createArgument().setLine( "-P " + port );
}
@@ -545,83 +466,6 @@
catch ( CommandExecutionException e )
{
throw new TransferFailedException( "Error performing commands for file transfer", e );
- }
- }
-
- public boolean supportsDirectoryCopy()
- {
- return true;
- }
-
- public List getFileList( String destinationDirectory )
- throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
- {
- try
- {
- String path = getPath( getRepository().getBasedir(), destinationDirectory );
- Streams streams = executeCommand( "ls -la " + path, true );
-
- BufferedReader br = new BufferedReader( new StringReader( streams.getOut() ) );
-
- List ret = new ArrayList();
- String line = br.readLine();
-
- while ( line != null )
- {
- String parts[] = StringUtils.split( line, " " );
- if ( parts.length >= 8 )
- {
- ret.add( parts[8] );
- }
-
- line = br.readLine();
- }
-
- return ret;
- }
- catch ( CommandExecutionException e )
- {
- throw new TransferFailedException( "Error performing file listing.", e );
- }
- catch ( IOException e )
- {
- throw new TransferFailedException( "Error parsing file listing.", e );
- }
- }
-
- public boolean resourceExists( String resourceName )
- throws TransferFailedException, AuthorizationException
- {
- try
- {
- String path = getPath( getRepository().getBasedir(), resourceName );
- Streams streams = executeCommand( "ls " + path, true );
-
- BufferedReader br = new BufferedReader( new StringReader( streams.getErr() ) );
- Pattern pat = Pattern.compile( "No such file or directory" );
-
- String line = br.readLine();
-
- while ( line != null )
- {
- Matcher mat = pat.matcher( line );
- if ( mat.find() )
- {
- return false;
- }
-
- line = br.readLine();
- }
-
- return true;
- }
- catch ( CommandExecutionException e )
- {
- throw new TransferFailedException( "Error performing file listing.", e );
- }
- catch ( IOException e )
- {
- throw new TransferFailedException( "Error parsing file listing.", e );
}
}
}
Modified: maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/resources/META-INF/plexus/components.xml?view=diff&rev=477260&r1=477259&r2=477260
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/main/resources/META-INF/plexus/components.xml Mon Nov 20 09:11:39 2006
@@ -3,13 +3,13 @@
<component>
<role>org.apache.maven.wagon.Wagon</role>
<role-hint>scpexe</role-hint>
- <implementation>org.apache.maven.wagon.providers.sshext.ScpExternalWagon</implementation>
+ <implementation>org.apache.maven.wagon.providers.ssh.external.ScpExternalWagon</implementation>
<instantiation-strategy>per-lookup</instantiation-strategy>
</component>
<!-- TODO: maybe this should be in the API if it is a required interface? -->
<component>
<role>org.apache.maven.wagon.CommandExecutor</role>
- <implementation>org.apache.maven.wagon.providers.sshext.ScpExternalWagon</implementation>
+ <implementation>org.apache.maven.wagon.providers.ssh.external.ScpExternalWagon</implementation>
<instantiation-strategy>per-lookup</instantiation-strategy>
</component>
</components>
Copied: maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpExternalWagonTest.java (from r477259, maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/sshext/ScpExternalWagonTest.java)
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpExternalWagonTest.java?view=diff&rev=477260&p1=maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/sshext/ScpExternalWagonTest.java&r1=477259&p2=maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpExternalWagonTest.java&r2=477260
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/sshext/ScpExternalWagonTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpExternalWagonTest.java Mon Nov 20 09:11:39 2006
@@ -1,4 +1,4 @@
-package org.apache.maven.wagon.providers.sshext;
+package org.apache.maven.wagon.providers.ssh.external;
/*
* Copyright 2001-2005 The Apache Software Foundation.
@@ -18,6 +18,7 @@
import org.apache.maven.wagon.WagonTestCase;
import org.apache.maven.wagon.authentication.AuthenticationInfo;
+import org.apache.maven.wagon.providers.ssh.TestData;
import java.io.File;
Added: maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpWagonWithSshPrivateKeySearchTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpWagonWithSshPrivateKeySearchTest.java?view=auto&rev=477260
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpWagonWithSshPrivateKeySearchTest.java (added)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpWagonWithSshPrivateKeySearchTest.java Mon Nov 20 09:11:39 2006
@@ -0,0 +1,53 @@
+package org.apache.maven.wagon.providers.ssh.external;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+import org.apache.maven.wagon.WagonTestCase;
+import org.apache.maven.wagon.authentication.AuthenticationInfo;
+import org.apache.maven.wagon.providers.ssh.TestData;
+
+/**
+ * @author <a href="michal.maczka@dimatics.com">Michal Maczka</a>
+ * @version $Id: ScpWagonWithSshPrivateKeySearchTest.java 477248 2006-11-20 16:42:51Z brett $
+ */
+public class ScpWagonWithSshPrivateKeySearchTest
+ extends WagonTestCase
+{
+ protected String getProtocol()
+ {
+ return "scpexe";
+ }
+
+ public String getTestRepositoryUrl()
+ {
+ return TestData.getTestRepositoryUrl();
+ }
+
+
+ protected AuthenticationInfo getAuthInfo()
+ {
+ AuthenticationInfo authInfo = super.getAuthInfo();
+
+ authInfo.setUserName( TestData.getUserName() );
+
+ authInfo.setPassphrase( "" );
+
+ return authInfo;
+ }
+
+
+}
Propchange: maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpWagonWithSshPrivateKeySearchTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/SshCommandExecutorTest.java (from r477259, maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/sshext/SshCommandExecutorTest.java)
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/SshCommandExecutorTest.java?view=diff&rev=477260&p1=maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/sshext/SshCommandExecutorTest.java&r1=477259&p2=maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/SshCommandExecutorTest.java&r2=477260
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/sshext/SshCommandExecutorTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/SshCommandExecutorTest.java Mon Nov 20 09:11:39 2006
@@ -1,4 +1,4 @@
-package org.apache.maven.wagon.providers.sshext;
+package org.apache.maven.wagon.providers.ssh.external;
/*
* Copyright 2001-2005 The Apache Software Foundation.
@@ -31,6 +31,6 @@
protected Repository getTestRepository()
{
- return new Repository( "test", "scp://localhost/" );
+ return new Repository( "test", "scpexe://localhost/" );
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: wagon-commits-unsubscribe@maven.apache.org
For additional commands, e-mail: wagon-commits-help@maven.apache.org