[MSTAGE-3] make the stage plugin work with all scp wagons
Submitted by: Rahul Akolkar
git-svn-id: https://svn.apache.org/repos/asf/maven/plugins/trunk@660862 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/plugins/stage/DefaultRepositoryCopier.java b/src/main/java/org/apache/maven/plugins/stage/DefaultRepositoryCopier.java
index 61df3ee..7a6d284 100644
--- a/src/main/java/org/apache/maven/plugins/stage/DefaultRepositoryCopier.java
+++ b/src/main/java/org/apache/maven/plugins/stage/DefaultRepositoryCopier.java
@@ -24,6 +24,8 @@
import org.apache.maven.artifact.repository.metadata.Metadata;
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer;
+import org.apache.maven.wagon.CommandExecutor;
+import org.apache.maven.wagon.CommandExecutionException;
import org.apache.maven.wagon.ConnectionException;
import org.apache.maven.wagon.ResourceDoesNotExistException;
import org.apache.maven.wagon.TransferFailedException;
@@ -33,7 +35,6 @@
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.providers.ssh.jsch.ScpWagon;
import org.apache.maven.wagon.repository.Repository;
import org.codehaus.plexus.logging.LogEnabled;
import org.codehaus.plexus.logging.Logger;
@@ -146,6 +147,13 @@
logger.info( "Downloading metadata from the target repository." );
Wagon targetWagon = wagonManager.getWagon( targetRepository );
+
+ if ( ! ( targetWagon instanceof CommandExecutor ) )
+ {
+ throw new CommandExecutionException( "Wagon class '" + targetWagon.getClass().getName() +
+ "' in use for target repository is not a CommandExecutor" );
+ }
+
AuthenticationInfo targetAuth = wagonManager.getAuthenticationInfo( targetRepository.getId() );
targetWagon.connect( targetRepository, targetAuth );
@@ -249,25 +257,25 @@
String command = "unzip -o -qq -d " + targetRepoBaseDirectory + " " + targetRepoBaseDirectory + "/" + fileName;
- ( (ScpWagon) targetWagon ).executeCommand( command );
+ ( (CommandExecutor) targetWagon ).executeCommand( command );
logger.info( "Deleting zip file from the target repository." );
command = "rm -f " + targetRepoBaseDirectory + "/" + fileName;
- ( (ScpWagon) targetWagon ).executeCommand( command );
+ ( (CommandExecutor) targetWagon ).executeCommand( command );
logger.info( "Running rename script on the target machine." );
command = "cd " + targetRepoBaseDirectory + "; sh " + renameScriptName;
- ( (ScpWagon) targetWagon ).executeCommand( command );
+ ( (CommandExecutor) targetWagon ).executeCommand( command );
logger.info( "Deleting rename script from the target repository." );
command = "rm -f " + targetRepoBaseDirectory + "/" + renameScriptName;
- ( (ScpWagon) targetWagon ).executeCommand( command );
+ ( (CommandExecutor) targetWagon ).executeCommand( command );
targetWagon.disconnect();
}