You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2011/09/22 16:27:10 UTC
svn commit: r1174159 - in /maven/wagon/trunk/wagon-providers:
wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http/
wagon-http/src/test/java/org/apache/maven/wagon/providers/http/
Author: olamy
Date: Thu Sep 22 14:27:10 2011
New Revision: 1174159
URL: http://svn.apache.org/viewvc?rev=1174159&view=rev
Log:
[WAGON-322] The HTTP Wagons should use Reason-Phrase sent in HTTP Response and use that in exception message (at least incorporate it).
Added:
maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/ErrorWithReasonPhaseServlet.java
- copied, changed from r1174158, maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/WaitForeverServlet.java
maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonReasonPhraseTest.java
Modified:
maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java
maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/TckTest.java
maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/WaitForeverServlet.java
Modified: maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java?rev=1174159&r1=1174158&r2=1174159&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java Thu Sep 22 14:27:10 2011
@@ -499,7 +499,7 @@ public abstract class AbstractHttpClient
{
// TODO: Fix encoding...
// url += "/" + URLEncoder.encode( parts[i], System.getProperty("file.encoding") );
- if (!url.toString().endsWith( "/" ))
+ if ( !url.toString().endsWith( "/" ) )
{
url.append( '/' );
}
@@ -801,6 +801,19 @@ public abstract class AbstractHttpClient
statusCode = response.getStatusLine().getStatusCode();
+ Header[] reasonPhraseHeaders = response.getHeaders( "Reason-Phrase" );
+ StringBuilder reasonPhrase = new StringBuilder();
+ boolean foundReasonPhrase = false;
+ if ( reasonPhraseHeaders != null && reasonPhraseHeaders.length > 0 )
+ {
+ reasonPhrase.append( ", Reason-Phrase: " );
+ foundReasonPhrase = true;
+ for ( Header header : reasonPhraseHeaders )
+ {
+ reasonPhrase.append( header.getValue() ).append( " " );
+ }
+ }
+
fireTransferDebug( url + " - Status code: " + statusCode );
// TODO [BP]: according to httpclient docs, really should swallow the output on error. verify if that is
@@ -816,32 +829,33 @@ public abstract class AbstractHttpClient
case SC_NULL:
{
- TransferFailedException e = new TransferFailedException( "Failed to transfer file: " + url );
+ TransferFailedException e = new TransferFailedException(
+ "Failed to transfer file: " + url + ( foundReasonPhrase ? reasonPhrase.toString() : "" ) );
fireTransferError( resource, e, TransferEvent.REQUEST_GET );
throw e;
}
case HttpStatus.SC_FORBIDDEN:
fireSessionConnectionRefused();
- throw new AuthorizationException( "Access denied to: " + url );
+ throw new AuthorizationException( "Access denied to: " + url+ ( foundReasonPhrase ? reasonPhrase.toString() : "" ) );
case HttpStatus.SC_UNAUTHORIZED:
fireSessionConnectionRefused();
- throw new AuthorizationException( "Not authorized." );
+ throw new AuthorizationException( "Not authorized" + ( foundReasonPhrase ? reasonPhrase.toString() : "." ) );
case HttpStatus.SC_PROXY_AUTHENTICATION_REQUIRED:
fireSessionConnectionRefused();
- throw new AuthorizationException( "Not authorized by proxy." );
+ throw new AuthorizationException( "Not authorized by proxy" + ( foundReasonPhrase ? reasonPhrase.toString() : "." ) );
case HttpStatus.SC_NOT_FOUND:
- throw new ResourceDoesNotExistException( "File: " + url + " does not exist" );
+ throw new ResourceDoesNotExistException( "File: " + url + " does not exist"+ ( foundReasonPhrase ? reasonPhrase.toString() : "" ) );
// add more entries here
default:
{
cleanupGetTransfer( resource );
TransferFailedException e = new TransferFailedException(
- "Failed to transfer file: " + url + ". Return code is: " + statusCode );
+ "Failed to transfer file: " + url + ". Return code is: " + statusCode+ ( foundReasonPhrase ? reasonPhrase.toString() : "" ) );
fireTransferError( resource, e, TransferEvent.REQUEST_GET );
throw e;
}
Copied: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/ErrorWithReasonPhaseServlet.java (from r1174158, 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/ErrorWithReasonPhaseServlet.java?p2=maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/ErrorWithReasonPhaseServlet.java&p1=maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/WaitForeverServlet.java&r1=1174158&r2=1174159&rev=1174159&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/WaitForeverServlet.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/ErrorWithReasonPhaseServlet.java Thu Sep 22 14:27:10 2011
@@ -19,35 +19,45 @@ package org.apache.maven.wagon.providers
* under the License.
*/
-import java.io.IOException;
+import org.apache.log4j.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-
-import org.apache.log4j.Logger;
+import java.io.IOException;
/**
* User: jdumay
* Date: 24/01/2008
* Time: 17:25:27
*/
-public class WaitForeverServlet extends HttpServlet {
+public class ErrorWithReasonPhaseServlet
+ extends HttpServlet
+{
+ public static final String REASON = "it sucks!";
- private static Logger logger = Logger.getLogger( WaitForeverServlet.class );
+ private Logger logger = Logger.getLogger( ErrorWithReasonPhaseServlet.class );
- public void service(HttpServletRequest request, HttpServletResponse response)
+ public void service( HttpServletRequest request, HttpServletResponse response )
throws ServletException, IOException
{
- logger.info( "Calling WaitForeverServlet" );
- try
+ if ( request.getRequestURL().toString().contains( "401" ) )
+ {
+ response.setStatus( 401 );
+ }
+ else if ( request.getRequestURL().toString().contains( "403" ) )
+ {
+ response.setStatus( 403 );
+ }
+ else if ( request.getRequestURL().toString().contains( "407" ) )
{
- Thread.sleep( 2000 );
+ response.setStatus( 407 );
}
- catch (InterruptedException e)
+ else if ( request.getRequestURL().toString().contains( "500" ) )
{
- //eat
+ response.setStatus( 500 );
}
+ response.addHeader( "Reason-Phrase", REASON );
}
}
Added: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonReasonPhraseTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonReasonPhraseTest.java?rev=1174159&view=auto
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonReasonPhraseTest.java (added)
+++ maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonReasonPhraseTest.java Thu Sep 22 14:27:10 2011
@@ -0,0 +1,186 @@
+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.apache.maven.wagon.FileTestUtils;
+import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.Wagon;
+import org.apache.maven.wagon.authorization.AuthorizationException;
+import org.apache.maven.wagon.repository.Repository;
+import org.mortbay.jetty.servlet.ServletHolder;
+
+import java.io.File;
+
+/**
+ * User: jdumay Date: 24/01/2008 Time: 17:17:34
+ */
+public class HttpWagonReasonPhraseTest
+ extends HttpWagonHttpServerTestCase
+{
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ ServletHolder servlets = new ServletHolder( new ErrorWithReasonPhaseServlet() );
+ context.addServlet( servlets, "/*" );
+ startServer();
+ }
+
+ public void testGetReasonPhase401()
+ throws Exception
+ {
+ Exception thrown = null;
+
+ try
+ {
+ Wagon wagon = getWagon();
+
+ Repository testRepository = new Repository();
+ testRepository.setUrl( "http://localhost:" + httpServerPort );
+
+ wagon.connect( testRepository );
+
+ File destFile = FileTestUtils.createUniqueFile( getName(), getName() );
+ destFile.deleteOnExit();
+
+ wagon.get( "/401", destFile );
+
+ wagon.disconnect();
+ }
+ catch ( Exception e )
+ {
+ thrown = e;
+ }
+ finally
+ {
+ stopServer();
+ }
+
+ assertNotNull( thrown );
+ assertEquals( AuthorizationException.class, thrown.getClass() );
+ assertTrue( thrown.getMessage().contains( ErrorWithReasonPhaseServlet.REASON ) );
+ }
+
+ public void testGetReasonPhase403()
+ throws Exception
+ {
+ Exception thrown = null;
+
+ try
+ {
+ Wagon wagon = getWagon();
+
+ Repository testRepository = new Repository();
+ testRepository.setUrl( "http://localhost:" + httpServerPort );
+
+ wagon.connect( testRepository );
+
+ File destFile = FileTestUtils.createUniqueFile( getName(), getName() );
+ destFile.deleteOnExit();
+
+ wagon.get( "/403", destFile );
+
+ wagon.disconnect();
+ }
+ catch ( Exception e )
+ {
+ thrown = e;
+ }
+ finally
+ {
+ stopServer();
+ }
+
+ assertNotNull( thrown );
+ assertEquals( AuthorizationException.class, thrown.getClass() );
+ assertTrue( thrown.getMessage().contains( ErrorWithReasonPhaseServlet.REASON ) );
+ }
+
+
+ public void testGetReasonPhase407()
+ throws Exception
+ {
+ Exception thrown = null;
+
+ try
+ {
+ Wagon wagon = getWagon();
+
+ Repository testRepository = new Repository();
+ testRepository.setUrl( "http://localhost:" + httpServerPort );
+
+ wagon.connect( testRepository );
+
+ File destFile = FileTestUtils.createUniqueFile( getName(), getName() );
+ destFile.deleteOnExit();
+
+ wagon.get( "/407", destFile );
+
+ wagon.disconnect();
+ }
+ catch ( Exception e )
+ {
+ thrown = e;
+ }
+ finally
+ {
+ stopServer();
+ }
+
+ assertNotNull( thrown );
+ assertEquals( AuthorizationException.class, thrown.getClass() );
+ assertTrue( thrown.getMessage().contains( ErrorWithReasonPhaseServlet.REASON ) );
+ }
+
+ public void testGetReasonPhase500()
+ throws Exception
+ {
+ Exception thrown = null;
+
+ try
+ {
+ Wagon wagon = getWagon();
+
+ Repository testRepository = new Repository();
+ testRepository.setUrl( "http://localhost:" + httpServerPort );
+
+ wagon.connect( testRepository );
+
+ File destFile = FileTestUtils.createUniqueFile( getName(), getName() );
+ destFile.deleteOnExit();
+
+ wagon.get( "/500", destFile );
+
+ wagon.disconnect();
+ }
+ catch ( Exception e )
+ {
+ thrown = e;
+ }
+ finally
+ {
+ stopServer();
+ }
+
+ assertNotNull( thrown );
+ assertEquals( TransferFailedException.class, thrown.getClass() );
+ assertTrue( thrown.getMessage().contains( ErrorWithReasonPhaseServlet.REASON ) );
+ }
+}
Modified: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java?rev=1174159&r1=1174158&r2=1174159&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java Thu Sep 22 14:27:10 2011
@@ -43,7 +43,7 @@ public class HttpsWagonTest
connector.setKeyPassword( "wagonhttp" );
connector.setTruststore( getTestPath( "src/test/resources/ssl/keystore" ) );
connector.setTrustPassword( "wagonhttp" );
- server.setConnectors( new Connector[] { connector } );
+ server.setConnectors( new Connector[]{ connector } );
}
}
Modified: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/TckTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/TckTest.java?rev=1174159&r1=1174158&r2=1174159&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/TckTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/TckTest.java Thu Sep 22 14:27:10 2011
@@ -20,9 +20,7 @@ package org.apache.maven.wagon.providers
*/
import org.apache.maven.wagon.tck.http.GetWagonTests;
-import org.apache.maven.wagon.tck.http.HttpWagonTests;
import org.apache.maven.wagon.tck.http.HttpsGetWagonTests;
-import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
Modified: 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=1174159&r1=1174158&r2=1174159&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/WaitForeverServlet.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/WaitForeverServlet.java Thu Sep 22 14:27:10 2011
@@ -19,25 +19,26 @@ package org.apache.maven.wagon.providers
* under the License.
*/
-import java.io.IOException;
+import org.apache.log4j.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-
-import org.apache.log4j.Logger;
+import java.io.IOException;
/**
* User: jdumay
* Date: 24/01/2008
* Time: 17:25:27
*/
-public class WaitForeverServlet extends HttpServlet {
+public class WaitForeverServlet
+ extends HttpServlet
+{
- private static Logger logger = Logger.getLogger( WaitForeverServlet.class );
+ private Logger logger = Logger.getLogger( WaitForeverServlet.class );
- public void service(HttpServletRequest request, HttpServletResponse response)
+ public void service( HttpServletRequest request, HttpServletResponse response )
throws ServletException, IOException
{
logger.info( "Calling WaitForeverServlet" );
@@ -45,7 +46,7 @@ public class WaitForeverServlet extends
{
Thread.sleep( 2000 );
}
- catch (InterruptedException e)
+ catch ( InterruptedException e )
{
//eat
}