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 ni...@apache.org on 2008/01/28 11:31:11 UTC
svn commit: r615844 - in /maven/wagon/trunk:
wagon-provider-api/src/main/java/org/apache/maven/wagon/
wagon-provider-api/src/test/java/org/apache/maven/wagon/
wagon-providers/wagon-ftp/src/main/java/org/apache/maven/wagon/providers/ftp/
wagon-providers...
Author: nicolas
Date: Mon Jan 28 02:31:09 2008
New Revision: 615844
URL: http://svn.apache.org/viewvc?rev=615844&view=rev
Log:
fix WAGON-86 apply James William Dumay patch
add support for get/setTimeOut on wagon (omitted for lightweight as this would require Java5)
Added:
maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonHttpServerTestCase.java (with props)
maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java (with props)
maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/WaitForeverServlet.java (with props)
Modified:
maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/AbstractWagon.java
maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/Wagon.java
maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/WagonMock.java
maven/wagon/trunk/wagon-providers/wagon-ftp/src/main/java/org/apache/maven/wagon/providers/ftp/FtpWagon.java
maven/wagon/trunk/wagon-providers/wagon-http/pom.xml
maven/wagon/trunk/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java
maven/wagon/trunk/wagon-providers/wagon-http/src/main/resources/META-INF/plexus/components.xml
maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonGzipTest.java
maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java
maven/wagon/trunk/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/CorrectedWebdavResource.java
maven/wagon/trunk/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java
Modified: maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/AbstractWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/AbstractWagon.java?rev=615844&r1=615843&r2=615844&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/AbstractWagon.java (original)
+++ maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/AbstractWagon.java Mon Jan 28 02:31:09 2008
@@ -67,6 +67,8 @@
protected AuthenticationInfo authenticationInfo;
protected boolean interactive = true;
+
+ private int connectionTimeout = 60000;
// ----------------------------------------------------------------------
// Accessors
@@ -173,6 +175,16 @@
"Specified destination directory cannot be created: " + destinationDirectory );
}
}
+ }
+
+ public void setTimeout( int timeoutValue )
+ {
+ connectionTimeout = timeoutValue;
+ }
+
+ public int getTimeout()
+ {
+ return connectionTimeout;
}
// ----------------------------------------------------------------------
Modified: maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/Wagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/Wagon.java?rev=615844&r1=615843&r2=615844&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/Wagon.java (original)
+++ maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/Wagon.java Mon Jan 28 02:31:09 2008
@@ -211,6 +211,16 @@
*/
void disconnect()
throws ConnectionException;
+
+ /**
+ * Set the connection timeout limit in milliseconds
+ */
+ void setTimeout( int timeoutValue );
+
+ /**
+ * Get the connection timeout limit in milliseconds
+ */
+ int getTimeout();
// ----------------------------------------------------------------------
// Session listener
Modified: maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/WagonMock.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/WagonMock.java?rev=615844&r1=615843&r2=615844&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/WagonMock.java (original)
+++ maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/WagonMock.java Mon Jan 28 02:31:09 2008
@@ -37,6 +37,7 @@
extends StreamWagon
{
private boolean errorInputStream;
+ private int timeout = 0;
public WagonMock()
{
@@ -109,6 +110,16 @@
public void closeConnection()
{
+ }
+
+ public void setTimeout( int timeoutValue )
+ {
+ timeout = timeoutValue;
+ }
+
+ public int getTimeout()
+ {
+ return timeout;
}
public List getFileList( String destinationDirectory )
Modified: maven/wagon/trunk/wagon-providers/wagon-ftp/src/main/java/org/apache/maven/wagon/providers/ftp/FtpWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ftp/src/main/java/org/apache/maven/wagon/providers/ftp/FtpWagon.java?rev=615844&r1=615843&r2=615844&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ftp/src/main/java/org/apache/maven/wagon/providers/ftp/FtpWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ftp/src/main/java/org/apache/maven/wagon/providers/ftp/FtpWagon.java Mon Jan 28 02:31:09 2008
@@ -92,7 +92,9 @@
String host = getRepository().getHost();
ftp = new FTPClient();
-
+ ftp.setDefaultTimeout(getTimeout());
+ ftp.setDataTimeout(getTimeout());
+
ftp.addProtocolCommandListener( new PrintCommandListener( this ) );
try
Modified: maven/wagon/trunk/wagon-providers/wagon-http/pom.xml
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http/pom.xml?rev=615844&r1=615843&r2=615844&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http/pom.xml (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http/pom.xml Mon Jan 28 02:31:09 2008
@@ -60,13 +60,13 @@
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
- <version>1.0.3</version>
+ <version>1.0.4</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
- <version>2.0.2</version>
+ <version>3.1</version>
</dependency>
</dependencies>
</project>
Modified: maven/wagon/trunk/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java?rev=615844&r1=615843&r2=615844&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java Mon Jan 28 02:31:09 2008
@@ -23,14 +23,15 @@
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.HttpConnectionManager;
+import org.apache.commons.httpclient.HttpMethod;
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.NTCredentials;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.HeadMethod;
import org.apache.commons.httpclient.methods.PutMethod;
+import org.apache.commons.httpclient.params.HttpConnectionParams;
import org.apache.commons.httpclient.util.DateParseException;
import org.apache.commons.httpclient.util.DateParser;
import org.apache.maven.wagon.AbstractWagon;
@@ -57,27 +58,21 @@
/**
* @author <a href="michal.maczka@dimatics.com">Michal Maczka</a>
* @version $Id$
- *
- * @plexus.component role="org.apache.maven.wagon.Wagon"
- * role-hint="http"
- * instantiation-strategy="per-lookup"
*/
public class HttpWagon
extends AbstractWagon
{
- private static final int DEFAULT_NUMBER_OF_ATTEMPTS = 3;
-
private static final int SC_NULL = -1;
private HttpClient client;
- private int numberOfAttempts = DEFAULT_NUMBER_OF_ATTEMPTS;
-
private static final TimeZone GMT_TIME_ZONE = TimeZone.getTimeZone( "GMT" );
+ private HttpConnectionManager connectionManager;
+
public void openConnection()
{
- client = new HttpClient( new MultiThreadedHttpConnectionManager() );
+ client = new HttpClient( connectionManager );
String username = null;
@@ -155,11 +150,11 @@
firePutInitiated( resource, source );
PutMethod putMethod = new PutMethod( url );
+ putMethod.getParams().setSoTimeout( getTimeout() );
try
{
InputStream is = new PutInputStream( source, resource, this, getTransferEventSupport() );
-
putMethod.setRequestBody( is );
}
catch ( FileNotFoundException e )
@@ -169,31 +164,8 @@
throw new ResourceDoesNotExistException( "Source file does not exist: " + source, e );
}
- int statusCode = SC_NULL;
-
- int attempt = 0;
-
- fireTransferDebug( "about to execute client for put" );
-
- // We will retry up to NumberOfAttempts times.
- while ( statusCode == SC_NULL && attempt < getNumberOfAttempts() )
- {
- try
- {
- firePutStarted( resource, source );
-
- statusCode = client.executeMethod( putMethod );
- }
- catch ( HttpRecoverableException e )
- {
- attempt++;
- }
- catch ( IOException e )
- {
- throw new TransferFailedException( e.getMessage(), e );
- }
- }
-
+ int statusCode = execute( putMethod );
+
fireTransferDebug( url + " - Status code: " + statusCode );
// Check that we didn't run out of retries.
@@ -207,8 +179,7 @@
break;
case SC_NULL:
- throw new TransferFailedException(
- "Failed to transfer file: " + url + " after " + attempt + " attempts" );
+ throw new TransferFailedException( "Failed to transfer file: " + url );
case HttpStatus.SC_FORBIDDEN:
throw new AuthorizationException( "Access denied to: " + url );
@@ -264,6 +235,7 @@
String url = getRepository().getUrl() + "/" + resourceName;
GetMethod getMethod = new GetMethod( url );
+ getMethod.getParams().setSoTimeout( getTimeout() );
try
{
@@ -284,27 +256,7 @@
getMethod.addRequestHeader( hdr );
}
- int statusCode = SC_NULL;
-
- int attempt = 0;
-
- // We will retry up to NumberOfAttempts times.
- while ( statusCode == SC_NULL && attempt < getNumberOfAttempts() )
- {
- try
- {
- // execute the getMethod.
- statusCode = client.executeMethod( getMethod );
- }
- catch ( HttpRecoverableException e )
- {
- attempt++;
- }
- catch ( IOException e )
- {
- throw new TransferFailedException( e.getMessage(), e );
- }
- }
+ int statusCode = execute( getMethod );
fireTransferDebug( url + " - Status code: " + statusCode );
@@ -318,8 +270,7 @@
return false;
case SC_NULL:
- throw new TransferFailedException(
- "Failed to transfer file: " + url + " after " + attempt + " attempts" );
+ throw new TransferFailedException( "Failed to transfer file: " + url );
case HttpStatus.SC_FORBIDDEN:
throw new AuthorizationException( "Access denied to: " + url );
@@ -435,16 +386,6 @@
}
}
- public int getNumberOfAttempts()
- {
- return numberOfAttempts;
- }
-
- public void setNumberOfAttempts( int numberOfAttempts )
- {
- this.numberOfAttempts = numberOfAttempts;
- }
-
public List getFileList( String destinationDirectory )
throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
{
@@ -456,6 +397,7 @@
String url = getRepository().getUrl() + "/" + destinationDirectory;
GetMethod getMethod = new GetMethod( url );
+ getMethod.getParams().setSoTimeout( getTimeout() );
try
{
@@ -466,27 +408,7 @@
getMethod.addRequestHeader( "Pragma", "no-cache" );
getMethod.addRequestHeader( "Expires", "0" );
- int statusCode = SC_NULL;
-
- int attempt = 0;
-
- // We will retry up to NumberOfAttempts times.
- while ( statusCode == SC_NULL && attempt < getNumberOfAttempts() )
- {
- try
- {
- // execute the getMethod.
- statusCode = client.executeMethod( getMethod );
- }
- catch ( HttpRecoverableException e )
- {
- attempt++;
- }
- catch ( IOException e )
- {
- throw new TransferFailedException( e.getMessage(), e );
- }
- }
+ int statusCode = execute( getMethod );
fireTransferDebug( url + " - Status code: " + statusCode );
@@ -497,8 +419,7 @@
break;
case SC_NULL:
- throw new TransferFailedException(
- "Failed to transfer file: " + url + " after " + attempt + " attempts" );
+ throw new TransferFailedException( "Failed to transfer file: " );
case HttpStatus.SC_FORBIDDEN:
throw new AuthorizationException( "Access denied to: " + url );
@@ -540,29 +461,12 @@
String url = getRepository().getUrl() + "/" + resourceName;
HeadMethod headMethod = new HeadMethod( url );
+ headMethod.getParams().setSoTimeout( getTimeout() );
- int statusCode = SC_NULL;
- int attempt = 0;
+ int statusCode = execute( headMethod );
try
{
- while ( statusCode == SC_NULL && attempt < getNumberOfAttempts() )
- {
- try
- {
- // execute the getMethod.
- statusCode = client.executeMethod( headMethod );
- }
- catch ( HttpRecoverableException e )
- {
- attempt++;
- }
- catch ( IOException e )
- {
- throw new TransferFailedException( e.getMessage(), e );
- }
- }
-
switch ( statusCode )
{
case HttpStatus.SC_OK:
@@ -572,8 +476,7 @@
return true;
case SC_NULL:
- throw new TransferFailedException( "Failed to transfer file: " + url + " after " + attempt
- + " attempts" );
+ throw new TransferFailedException( "Failed to transfer file: " + url);
case HttpStatus.SC_FORBIDDEN:
throw new AuthorizationException( "Access denied to: " + url );
@@ -597,5 +500,25 @@
{
headMethod.releaseConnection();
}
+ }
+
+ private int execute(HttpMethod httpMethod)
+ throws TransferFailedException
+ {
+ int statusCode = SC_NULL;
+ try
+ {
+ // execute the method.
+ statusCode = client.executeMethod( httpMethod );
+ }
+ catch ( IOException e )
+ {
+ throw new TransferFailedException( e.getMessage(), e );
+ }
+ return statusCode;
+ }
+
+ public void setConnectionManager(HttpConnectionManager connectionManager) {
+ this.connectionManager = connectionManager;
}
}
Modified: maven/wagon/trunk/wagon-providers/wagon-http/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http/src/main/resources/META-INF/plexus/components.xml?rev=615844&r1=615843&r2=615844&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http/src/main/resources/META-INF/plexus/components.xml Mon Jan 28 02:31:09 2008
@@ -18,12 +18,32 @@
-->
<component-set>
- <components>
- <component>
- <role>org.apache.maven.wagon.Wagon</role>
- <role-hint>http</role-hint>
- <implementation>org.apache.maven.wagon.providers.http.HttpWagon</implementation>
- <instantiation-strategy>per-lookup</instantiation-strategy>
- </component>
- </components>
+ <components>
+ <component>
+ <role>org.apache.commons.httpclient.HttpConnectionManager</role>
+ <implementation>org.apache.commons.httpclient.MultiThreadedHttpConnectionManager</implementation>
+ </component>
+ <component>
+ <role>org.apache.maven.wagon.Wagon</role>
+ <role-hint>http</role-hint>
+ <implementation>org.apache.maven.wagon.providers.http.HttpWagon</implementation>
+ <instantiation-strategy>per-lookup</instantiation-strategy>
+ <requirements>
+ <requirement>
+ <role>org.apache.commons.httpclient.HttpConnectionManager</role>
+ </requirement>
+ </requirements>
+ </component>
+ <component>
+ <role>org.apache.maven.wagon.Wagon</role>
+ <role-hint>https</role-hint>
+ <implementation>org.apache.maven.wagon.providers.http.HttpWagon</implementation>
+ <instantiation-strategy>per-lookup</instantiation-strategy>
+ <requirements>
+ <requirement>
+ <role>org.apache.commons.httpclient.HttpConnectionManager</role>
+ </requirement>
+ </requirements>
+ </component>
+ </components>
</component-set>
Modified: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonGzipTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonGzipTest.java?rev=615844&r1=615843&r2=615844&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonGzipTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonGzipTest.java Mon Jan 28 02:31:09 2008
@@ -27,8 +27,10 @@
import org.apache.maven.wagon.FileTestUtils;
import org.apache.maven.wagon.Wagon;
+import org.apache.maven.wagon.WagonTestCase;
import org.apache.maven.wagon.repository.Repository;
import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.PlexusTestCase;
import org.mortbay.http.HttpContext;
import org.mortbay.http.HttpServer;
import org.mortbay.http.SocketListener;
@@ -36,77 +38,68 @@
import junit.framework.TestCase;
-public class HttpWagonGzipTest extends TestCase
+public class HttpWagonGzipTest extends HttpWagonHttpServerTestCase
{
public void testGzipGet() throws Exception
{
- HttpServer server = new HttpServer();
- SocketListener listener = new SocketListener();
- listener.setPort(10008);
- server.addListener(listener);
-
String localRepositoryPath = FileTestUtils.getTestOutputDir().toString();
- HttpContext context = new HttpContext();
- context.setContextPath("/");
- context.setResourceBase(localRepositoryPath);
- ResourceHandler rh = new ResourceHandler();
- rh.setMinGzipLength(1);
- context.addHandler(rh);
- server.addContext(context);
- server.start();
+ context.setResourceBase( localRepositoryPath );
+ resourceHandler.setMinGzipLength( 1 );
+
+ startServer();
- try
+ try
{
- Wagon wagon = new HttpWagon();
+ Wagon wagon = getWagon();
Repository testRepository = new Repository();
- testRepository.setUrl("http://localhost:10008");
+ testRepository.setUrl( "http://localhost:" + httpServerPort );
- File sourceFile = new File(localRepositoryPath + "/gzip");
+ File sourceFile = new File( localRepositoryPath + "/gzip" );
sourceFile.deleteOnExit();
String resName = "gzip-res.txt";
- String sourceContent = writeTestFileGzip(sourceFile, resName);
+ String sourceContent = writeTestFileGzip( sourceFile, resName );
- wagon.connect(testRepository);
+ wagon.connect( testRepository );
- File destFile = FileTestUtils.createUniqueFile(getName(), getName());
+ File destFile = FileTestUtils.createUniqueFile( getName(), getName() );
destFile.deleteOnExit();
- wagon.get("gzip/" + resName, destFile);
+ wagon.get( "gzip/" + resName, destFile );
wagon.disconnect();
- String destContent = FileUtils.fileRead(destFile);
+ String destContent = FileUtils.fileRead( destFile );
- assertEquals(sourceContent, destContent);
- }
- finally
+ assertEquals( sourceContent, destContent );
+ }
+ finally
{
- server.stop();
+ stopServer();
}
}
- private String writeTestFileGzip(File parent, String child) throws IOException
+ private String writeTestFileGzip( File parent, String child ) throws IOException
{
- File file = new File(parent, child);
+ File file = new File( parent, child );
file.getParentFile().mkdirs();
file.deleteOnExit();
- OutputStream out = new FileOutputStream(file);
- out.write(child.getBytes());
+ OutputStream out = new FileOutputStream( file );
+ out.write( child.getBytes() );
out.close();
- file = new File(parent, child + ".gz");
+ file = new File( parent, child + ".gz" );
file.deleteOnExit();
- out = new FileOutputStream(file);
- out = new GZIPOutputStream(out);
+ out = new FileOutputStream( file );
+ out = new GZIPOutputStream( out );
//write out different data than non-gz file, so we can
//assert the gz version was returned
String content = file.getAbsolutePath();
- out.write(content.getBytes());
+ out.write( content.getBytes() );
out.close();
return content;
}
Added: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonHttpServerTestCase.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonHttpServerTestCase.java?rev=615844&view=auto
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonHttpServerTestCase.java (added)
+++ maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonHttpServerTestCase.java Mon Jan 28 02:31:09 2008
@@ -0,0 +1,78 @@
+package org.apache.maven.wagon.providers.http;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.codehaus.plexus.PlexusTestCase;
+import org.mortbay.http.HttpServer;
+import org.mortbay.http.SocketListener;
+import org.mortbay.http.HttpContext;
+import org.mortbay.http.handler.ResourceHandler;
+import org.apache.maven.wagon.Wagon;
+
+/**
+ * User: jdumay
+ * Date: 24/01/2008
+ * Time: 18:15:53
+ */
+public abstract class HttpWagonHttpServerTestCase extends PlexusTestCase
+{
+ protected final int httpServerPort = 10008;
+
+ private HttpServer server;
+
+ protected HttpContext context;
+
+ protected ResourceHandler resourceHandler;
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ server = new HttpServer();
+ SocketListener listener = new SocketListener();
+ listener.setPort( httpServerPort );
+ server.addListener( listener );
+
+ context = new HttpContext();
+ context.setContextPath( "/" );
+ server.addContext( context );
+
+ resourceHandler = new ResourceHandler();
+ context.addHandler( resourceHandler );
+ }
+
+ protected Wagon getWagon()
+ throws Exception
+ {
+ return (Wagon) lookup( HttpWagon.ROLE );
+ }
+
+ protected void startServer()
+ throws Exception
+ {
+ server.start();
+ }
+
+ protected void stopServer()
+ throws Exception
+ {
+ server.stop();
+ }
+}
Propchange: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonHttpServerTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonHttpServerTestCase.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonHttpServerTestCase.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java?rev=615844&view=auto
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java (added)
+++ maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java Mon Jan 28 02:31:09 2008
@@ -0,0 +1,184 @@
+package org.apache.maven.wagon.providers.http;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.util.FileUtils;
+import org.mortbay.http.HttpServer;
+import org.mortbay.http.SocketListener;
+import org.mortbay.http.HttpContext;
+import org.mortbay.http.handler.ResourceHandler;
+import org.mortbay.jetty.servlet.ServletHandler;
+import org.apache.maven.wagon.Wagon;
+import org.apache.maven.wagon.FileTestUtils;
+import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.ResourceDoesNotExistException;
+import org.apache.maven.wagon.repository.Repository;
+
+import java.io.File;
+
+/**
+ * User: jdumay
+ * Date: 24/01/2008
+ * Time: 17:17:34
+ */
+public class HttpWagonTimeoutTest extends HttpWagonHttpServerTestCase
+{
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ ServletHandler servlets = new ServletHandler();
+ servlets.addServlet( "/", "org.apache.maven.wagon.providers.http.WaitForeverServlet" );
+ context.addHandler( servlets );
+ startServer();
+ }
+
+ public void testGetTimeout() throws Exception
+ {
+ Exception thrown = null;
+
+ try
+ {
+ Wagon wagon = getWagon();
+ wagon.setTimeout( 1000 );
+
+ Repository testRepository = new Repository();
+ testRepository.setUrl( "http://localhost:" + httpServerPort );
+
+ wagon.connect( testRepository );
+
+ File destFile = FileTestUtils.createUniqueFile( getName(), getName() );
+ destFile.deleteOnExit();
+
+ wagon.get( "/timeoutfile", destFile );
+
+ wagon.disconnect();
+ }
+ catch (Exception e)
+ {
+ thrown = e;
+ }
+ finally
+ {
+ stopServer();
+ }
+
+ assertNotNull( thrown );
+ assertEquals( TransferFailedException.class, thrown.getClass() );
+ }
+
+ public void testResourceExits() throws Exception
+ {
+ Exception thrown = null;
+
+ try
+ {
+ Wagon wagon = getWagon();
+ wagon.setTimeout( 1000 );
+
+ Repository testRepository = new Repository();
+ testRepository.setUrl( "http://localhost:" + httpServerPort );
+
+ wagon.connect( testRepository );
+
+ wagon.resourceExists( "/timeoutfile" );
+
+ wagon.disconnect();
+ }
+ catch (Exception e)
+ {
+ thrown = e;
+ }
+ finally
+ {
+ stopServer();
+ }
+
+ assertNotNull( thrown );
+ assertEquals( TransferFailedException.class, thrown.getClass() );
+ }
+
+ public void testGetFileList() throws Exception
+ {
+ Exception thrown = null;
+
+ try
+ {
+ Wagon wagon = getWagon();
+ wagon.setTimeout( 1000 );
+
+ Repository testRepository = new Repository();
+ testRepository.setUrl( "http://localhost:" + httpServerPort );
+
+ wagon.connect( testRepository );
+
+ wagon.getFileList( "/timeoutfile" );
+
+ wagon.disconnect();
+ }
+ catch (Exception e)
+ {
+ thrown = e;
+ }
+ finally
+ {
+ stopServer();
+ }
+
+ assertNotNull( thrown );
+ assertEquals( TransferFailedException.class, thrown.getClass() );
+ }
+
+ public void testPutTimeout() throws Exception
+ {
+ Exception thrown = null;
+
+ try
+ {
+ Wagon wagon = getWagon();
+ wagon.setTimeout( 1000 );
+
+ Repository testRepository = new Repository();
+ testRepository.setUrl( "http://localhost:" + httpServerPort );
+
+ wagon.connect( testRepository );
+
+ File destFile = File.createTempFile( "Hello", null );
+ destFile.deleteOnExit();
+
+ wagon.put( destFile, "/timeoutfile" );
+
+ wagon.disconnect();
+ }
+ catch (Exception e)
+ {
+ thrown = e;
+ }
+ finally
+ {
+ stopServer();
+ }
+
+ assertNotNull( thrown );
+ assertEquals( TransferFailedException.class, thrown.getClass() );
+ }
+
+}
Propchange: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/WaitForeverServlet.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/WaitForeverServlet.java?rev=615844&view=auto
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/WaitForeverServlet.java (added)
+++ maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/WaitForeverServlet.java Mon Jan 28 02:31:09 2008
@@ -0,0 +1,47 @@
+package org.apache.maven.wagon.providers.http;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.ServletException;
+import java.io.IOException;
+
+/**
+ * User: jdumay
+ * Date: 24/01/2008
+ * Time: 17:25:27
+ */
+public class WaitForeverServlet extends HttpServlet {
+ public void service(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException
+ {
+ System.out.println( "Calling WaitForeverServlet" );
+ try
+ {
+ Thread.sleep( 2000 );
+ }
+ catch (InterruptedException e)
+ {
+ //eat
+ }
+ }
+}
Propchange: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/WaitForeverServlet.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/WaitForeverServlet.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/WaitForeverServlet.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java?rev=615844&r1=615843&r2=615844&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java Mon Jan 28 02:31:09 2008
@@ -117,6 +117,7 @@
try
{
session = sch.getSession( authenticationInfo.getUserName(), host, port );
+ session.setTimeout(getTimeout());
}
catch ( JSchException e )
{
Modified: maven/wagon/trunk/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/CorrectedWebdavResource.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/CorrectedWebdavResource.java?rev=615844&r1=615843&r2=615844&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/CorrectedWebdavResource.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/CorrectedWebdavResource.java Mon Jan 28 02:31:09 2008
@@ -27,6 +27,7 @@
import java.util.zip.GZIPInputStream;
import org.apache.commons.httpclient.Header;
+import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.HttpURL;
@@ -56,6 +57,11 @@
{
super( url );
setFollowRedirects( true ); // TODO: Make this configurable.
+ }
+
+ public void setConnectionTimeout(int timeout)
+ {
+ client.setConnectionTimeout(timeout);
}
public void setHeaders( Map headers )
Modified: maven/wagon/trunk/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java?rev=615844&r1=615843&r2=615844&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java Mon Jan 28 02:31:09 2008
@@ -145,10 +145,10 @@
CorrectedWebdavResource.setDefaultAction( CorrectedWebdavResource.NOACTION );
webdavResource = new CorrectedWebdavResource( httpURL );
+ webdavResource.setConnectionTimeout(getTimeout());
if ( hasProxy )
{
-
webdavResource.setProxy( proxyInfo.getHost(), proxyInfo.getPort() );
if ( !StringUtils.isEmpty( proxyInfo.getUserName() ) )
{
---------------------------------------------------------------------
To unsubscribe, e-mail: wagon-commits-unsubscribe@maven.apache.org
For additional commands, e-mail: wagon-commits-help@maven.apache.org