You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2017/01/03 21:13:32 UTC

[1/5] maven-wagon git commit: [WAGON-481] Sensitive (auth) information is not cleared when HttpClientWagon is disconnected

Repository: maven-wagon
Updated Branches:
  refs/heads/master 1b318bb7b -> 7fd0dca33


[WAGON-481] Sensitive (auth) information is not cleared when HttpClientWagon is disconnected


Project: http://git-wip-us.apache.org/repos/asf/maven-wagon/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-wagon/commit/7fd0dca3
Tree: http://git-wip-us.apache.org/repos/asf/maven-wagon/tree/7fd0dca3
Diff: http://git-wip-us.apache.org/repos/asf/maven-wagon/diff/7fd0dca3

Branch: refs/heads/master
Commit: 7fd0dca33656e5f961e9234258db9e3a2cec0d9f
Parents: 1a005f1
Author: Michael Osipov <mi...@apache.org>
Authored: Wed Dec 28 01:28:49 2016 +0100
Committer: Michael Osipov <mi...@apache.org>
Committed: Tue Jan 3 22:12:24 2017 +0100

----------------------------------------------------------------------
 .../wagon/providers/http/AbstractHttpClientWagon.java   | 12 ++++++++++++
 1 file changed, 12 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/7fd0dca3/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
index 9ef9544..c693cd0 100755
--- a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
+++ b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
@@ -469,6 +469,18 @@ public abstract class AbstractHttpClientWagon
         {
             httpClientConnectionManager.closeIdleConnections( 0, TimeUnit.MILLISECONDS );
         }
+
+        if ( authCache != null )
+        {
+            authCache.clear();
+            authCache = null;
+        }
+
+        if ( credentialsProvider != null )
+        {
+            credentialsProvider.clear();
+            credentialsProvider = null;
+        }
     }
 
     public static void setPersistentPool( boolean persistentPool )


[4/5] maven-wagon git commit: [WAGON-480] Non-threadsafe HttpClientContext is shared between threaded use of HttpClientWagon

Posted by mi...@apache.org.
[WAGON-480] Non-threadsafe HttpClientContext is shared between threaded use of HttpClientWagon

The HttpClientContext is created fresh with every execute(), guaranteeing
thread safety.


Project: http://git-wip-us.apache.org/repos/asf/maven-wagon/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-wagon/commit/1a005f1c
Tree: http://git-wip-us.apache.org/repos/asf/maven-wagon/tree/1a005f1c
Diff: http://git-wip-us.apache.org/repos/asf/maven-wagon/diff/1a005f1c

Branch: refs/heads/master
Commit: 1a005f1c3fe7492c10b06567738453118f1c15b6
Parents: 4074598
Author: Michael Osipov <mi...@apache.org>
Authored: Wed Dec 28 01:20:07 2016 +0100
Committer: Michael Osipov <mi...@apache.org>
Committed: Tue Jan 3 22:12:24 2017 +0100

----------------------------------------------------------------------
 .../maven/wagon/providers/http/AbstractHttpClientWagon.java  | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/1a005f1c/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
index d38506f..9ef9544 100755
--- a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
+++ b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
@@ -383,8 +383,6 @@ public abstract class AbstractHttpClientWagon
 
     private AuthCache authCache;
 
-    private HttpClientContext localContext;
-
     private Closeable closeable;
 
     /**
@@ -414,11 +412,8 @@ public abstract class AbstractHttpClientWagon
     {
         repository.setUrl( getURL( repository ) );
 
-        localContext = HttpClientContext.create();
         credentialsProvider = new BasicCredentialsProvider();
         authCache = new BasicAuthCache();
-        localContext.setCredentialsProvider( credentialsProvider );
-        localContext.setAuthCache( authCache );
 
         if ( authenticationInfo != null )
         {
@@ -788,6 +783,9 @@ public abstract class AbstractHttpClientWagon
             requestConfigBuilder.setRedirectsEnabled( false );
         }
 
+        HttpClientContext localContext = HttpClientContext.create();
+        localContext.setCredentialsProvider( credentialsProvider );
+        localContext.setAuthCache( authCache );
         localContext.setRequestConfig( requestConfigBuilder.build() );
 
         if ( config != null && config.isUsePreemptive() )


[5/5] maven-wagon git commit: [WAGON-476] HTTP Provider follows redirects on PUT and may change request method

Posted by mi...@apache.org.
[WAGON-476] HTTP Provider follows redirects on PUT and may change request method


Project: http://git-wip-us.apache.org/repos/asf/maven-wagon/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-wagon/commit/6cc8d907
Tree: http://git-wip-us.apache.org/repos/asf/maven-wagon/tree/6cc8d907
Diff: http://git-wip-us.apache.org/repos/asf/maven-wagon/diff/6cc8d907

Branch: refs/heads/master
Commit: 6cc8d907f40b82a0500d700bcd0ea8075736a6bc
Parents: 5ba0cf3
Author: Michael Osipov <mi...@apache.org>
Authored: Mon Dec 26 00:57:24 2016 +0100
Committer: Michael Osipov <mi...@apache.org>
Committed: Tue Jan 3 22:12:24 2017 +0100

----------------------------------------------------------------------
 .../maven/wagon/providers/http/AbstractHttpClientWagon.java     | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/6cc8d907/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
index a03558a..7773d97 100755
--- a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
+++ b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
@@ -792,6 +792,11 @@ public abstract class AbstractHttpClientWagon
             }
         }
 
+        if ( httpMethod instanceof HttpPut )
+        {
+            requestConfigBuilder.setRedirectsEnabled( false );
+        }
+
         localContext.setRequestConfig( requestConfigBuilder.build() );
 
         if ( config != null && config.isUsePreemptive() )


[2/5] maven-wagon git commit: [WAGON-479] Preemptive auth with HTTP Provider may fail because BasicScheme is added as completed=true to the AuthCache

Posted by mi...@apache.org.
[WAGON-479] Preemptive auth with HTTP Provider may fail because BasicScheme is added as completed=true to the AuthCache


Project: http://git-wip-us.apache.org/repos/asf/maven-wagon/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-wagon/commit/40745987
Tree: http://git-wip-us.apache.org/repos/asf/maven-wagon/tree/40745987
Diff: http://git-wip-us.apache.org/repos/asf/maven-wagon/diff/40745987

Branch: refs/heads/master
Commit: 4074598777fad44a3c34c71c5842b71a03e1da3f
Parents: 6cc8d90
Author: Michael Osipov <mi...@apache.org>
Authored: Tue Dec 27 23:29:26 2016 +0100
Committer: Michael Osipov <mi...@apache.org>
Committed: Tue Jan 3 22:12:24 2017 +0100

----------------------------------------------------------------------
 .../providers/http/AbstractHttpClientWagon.java | 45 +++++---------------
 1 file changed, 11 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/40745987/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
index 7773d97..d38506f 100755
--- a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
+++ b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
@@ -25,10 +25,9 @@ import org.apache.http.HttpException;
 import org.apache.http.HttpHost;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
-import org.apache.http.auth.AUTH;
 import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.ChallengeState;
 import org.apache.http.auth.Credentials;
-import org.apache.http.auth.MalformedChallengeException;
 import org.apache.http.auth.NTCredentials;
 import org.apache.http.auth.UsernamePasswordCredentials;
 import org.apache.http.client.AuthCache;
@@ -460,9 +459,9 @@ public abstract class AbstractHttpClientWagon
                         creds = new UsernamePasswordCredentials( proxyUsername, proxyPassword );
                     }
 
-                    int port = proxyInfo.getPort();
+                    int proxyPort = proxyInfo.getPort();
 
-                    AuthScope authScope = getProxyBasicAuthScope().getScope( proxyHost, port );
+                    AuthScope authScope = getProxyBasicAuthScope().getScope( proxyHost, proxyPort );
                     credentialsProvider.setCredentials( authScope, creds );
                 }
             }
@@ -576,15 +575,7 @@ public abstract class AbstractHttpClientWagon
         if ( credentialsProvider.getCredentials( targetScope ) != null )
         {
             BasicScheme targetAuth = new BasicScheme();
-            try
-            {
-                targetAuth.processChallenge( new BasicHeader( AUTH.WWW_AUTH, "BASIC preemptive" ) );
-                authCache.put( targetHost, targetAuth );
-            }
-            catch ( MalformedChallengeException ignore )
-            {
-                // ignore
-            }
+            authCache.put( targetHost, targetAuth );
         }
 
         HttpPut putMethod = new HttpPut( url );
@@ -807,7 +798,6 @@ public abstract class AbstractHttpClientWagon
             if ( credentialsProvider.getCredentials( targetScope ) != null )
             {
                 BasicScheme targetAuth = new BasicScheme();
-                targetAuth.processChallenge( new BasicHeader( AUTH.WWW_AUTH, "BASIC preemptive" ) );
                 authCache.put( targetHost, targetAuth );
             }
         }
@@ -819,26 +809,13 @@ public abstract class AbstractHttpClientWagon
                 HttpHost proxyHost = new HttpHost( proxyInfo.getHost(), proxyInfo.getPort() );
                 AuthScope proxyScope = getProxyBasicAuthScope().getScope( proxyHost );
 
-                String proxyUsername = proxyInfo.getUserName();
-                String proxyPassword = proxyInfo.getPassword();
-                String proxyNtlmHost = proxyInfo.getNtlmHost();
-                String proxyNtlmDomain = proxyInfo.getNtlmDomain();
-
-                if ( proxyUsername != null && proxyPassword != null )
+                if ( credentialsProvider.getCredentials( proxyScope ) != null )
                 {
-                    Credentials creds;
-                    if ( proxyNtlmHost != null || proxyNtlmDomain != null )
-                    {
-                        creds = new NTCredentials( proxyUsername, proxyPassword, proxyNtlmHost, proxyNtlmDomain );
-                    }
-                    else
-                    {
-                        creds = new UsernamePasswordCredentials( proxyUsername, proxyPassword );
-                    }
-
-                    credentialsProvider.setCredentials( proxyScope, creds );
-                    BasicScheme proxyAuth = new BasicScheme();
-                    proxyAuth.processChallenge( new BasicHeader( AUTH.PROXY_AUTH, "BASIC preemptive" ) );
+                    /* This is extremely ugly because we need to set challengeState to PROXY, but
+                     * the constructor is deprecated. Alternatively, we could subclass BasicScheme
+                     * to ProxyBasicScheme and set the state internally in the constructor.
+                     */
+                    BasicScheme proxyAuth = new BasicScheme( ChallengeState.PROXY );
                     authCache.put( proxyHost, proxyAuth );
                 }
             }
@@ -1158,4 +1135,4 @@ public abstract class AbstractHttpClientWagon
     {
         return MAX_BACKOFF_WAIT_SECONDS;
     }
-}
\ No newline at end of file
+}


[3/5] maven-wagon git commit: [WAGON-474] Upgrade and revise all tests for Jetty 8

Posted by mi...@apache.org.
[WAGON-474] Upgrade and revise all tests for Jetty 8

* Upgrade all test code to Jetty 8.1.22 and Servlet 3.0
* Unify variable names in redirect usecases to realServer and
  redirectServer
* RedirectHandler: redirect code is passed but completely ignored because
  sendRedirect() always sends 302
* Chronologically sort checkHandlerResult() calls
** Set redirect code (See Other (303)) as requested
** Update checkHandlerResult() for requested status codes rather sent
   chosen by server (mismatched previously)
* testPreemptiveAuthentication*(): properly check for OK for GET and
  CREATED for PUT instead of OK only for both
* WebDavWagonTest: replace status code literal for
  HttpServletResponse.SC_* for better readability
* testRedirect*(): add more checkHandlerResults
* Fix concurrency issues/race conditions in testSecuredGet() and
  testSecuredGetToStream() where Jetty workers weren't finished yet,
  but assert() has already been started. Waiting for 2000 ms avoids
  this in a cheap manner.
* Fix potential memory leaks from open sockets and Wagons
* HugeFileDownloadTest improvements:
** Add log lines before/after the creation of the test file (4 GiB) and
   download, to measure how much time this actually takes
** Use IOUtil#copy and hand-copy file with content length to avoid too
   large buffers from Jetty's IO class
* Increase Surefire forked VM timeout to 800 s to avoid timeouts of
  HugeFileDownloadTest on Windows


Project: http://git-wip-us.apache.org/repos/asf/maven-wagon/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-wagon/commit/5ba0cf33
Tree: http://git-wip-us.apache.org/repos/asf/maven-wagon/tree/5ba0cf33
Diff: http://git-wip-us.apache.org/repos/asf/maven-wagon/diff/5ba0cf33

Branch: refs/heads/master
Commit: 5ba0cf33a6f9024c6dbbb3e3e24c978245fa082c
Parents: 1b318bb
Author: Michael Osipov <mi...@apache.org>
Authored: Mon Dec 26 00:55:09 2016 +0100
Committer: Michael Osipov <mi...@apache.org>
Committed: Tue Jan 3 22:12:24 2017 +0100

----------------------------------------------------------------------
 pom.xml                                         |  16 +-
 wagon-provider-test/pom.xml                     |   8 +-
 .../maven/wagon/http/HttpWagonTestCase.java     | 299 +++++++++++--------
 .../wagon/providers/file/FileWagonTest.java     |  13 +-
 wagon-providers/wagon-http-lightweight/pom.xml  |   4 +-
 .../http/LightweightHttpsWagonTest.java         |   6 +-
 wagon-providers/wagon-http/pom.xml              |  10 +-
 .../http/AbstractHttpClientWagonTest.java       |   2 +
 .../http/HttpWagonHttpServerTestCase.java       |  14 +-
 .../http/HttpWagonReasonPhraseTest.java         |   2 +-
 .../providers/http/HttpWagonTimeoutTest.java    |   4 +-
 .../http/HttpsWagonPreemptiveTest.java          |   6 +-
 .../wagon/providers/http/HttpsWagonTest.java    |   6 +-
 .../providers/http/HugeFileDownloadTest.java    |  58 ++--
 wagon-providers/wagon-ssh/pom.xml               |   8 +-
 .../ssh/jsch/ScpWagonWithProxyTest.java         |  23 +-
 wagon-providers/wagon-webdav-jackrabbit/pom.xml |   8 +-
 .../wagon/providers/webdav/WebDavWagonTest.java |  73 +++--
 .../providers/webdav/WebDavsWagonTest.java      |   6 +-
 wagon-tcks/wagon-tck-http/pom.xml               |  12 +-
 .../wagon/tck/http/fixture/ServerFixture.java   |  52 ++--
 21 files changed, 348 insertions(+), 282 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index cbdbc86..5805800 100644
--- a/pom.xml
+++ b/pom.xml
@@ -312,14 +312,14 @@ under the License.
       </dependency>
 
       <dependency>
-        <groupId>org.mortbay.jetty</groupId>
-        <artifactId>jetty</artifactId>
-        <version>6.1.26</version>
+        <groupId>org.eclipse.jetty.aggregate</groupId>
+        <artifactId>jetty-all</artifactId>
+        <version>8.1.22.v20160922</version>
       </dependency>
       <dependency>
-        <groupId>org.mortbay.jetty</groupId>
-        <artifactId>servlet-api</artifactId>
-        <version>2.5-20081211</version>
+        <groupId>javax.servlet</groupId>
+        <artifactId>javax.servlet-api</artifactId>
+        <version>3.0.1</version>
     </dependency>
     </dependencies>
   </dependencyManagement>
@@ -331,7 +331,7 @@ under the License.
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
           <configuration>
-            <forkedProcessTimeoutInSeconds>400</forkedProcessTimeoutInSeconds>
+            <forkedProcessTimeoutInSeconds>800</forkedProcessTimeoutInSeconds>
             <systemPropertyVariables>
               <java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
             </systemPropertyVariables>
@@ -564,5 +564,5 @@ under the License.
       </reporting>
     </profile>
   </profiles>
-  
+
 </project>

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-provider-test/pom.xml
----------------------------------------------------------------------
diff --git a/wagon-provider-test/pom.xml b/wagon-provider-test/pom.xml
index b19e7ac..9b0f4e5 100644
--- a/wagon-provider-test/pom.xml
+++ b/wagon-provider-test/pom.xml
@@ -51,12 +51,12 @@ under the License.
       <scope>compile</scope>
     </dependency>
     <dependency>
-      <groupId>org.mortbay.jetty</groupId>
-      <artifactId>jetty</artifactId>
+      <groupId>org.eclipse.jetty.aggregate</groupId>
+      <artifactId>jetty-all</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.mortbay.jetty</groupId>
-      <artifactId>servlet-api</artifactId>
+      <groupId>javax.servlet</groupId>
+      <artifactId>javax.servlet-api</artifactId>
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java
----------------------------------------------------------------------
diff --git a/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java b/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java
index dfc499e..c19eaa3 100644
--- a/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java
+++ b/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java
@@ -34,20 +34,21 @@ import org.apache.maven.wagon.resource.Resource;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
-import org.mortbay.jetty.Handler;
-import org.mortbay.jetty.HttpConnection;
-import org.mortbay.jetty.Request;
-import org.mortbay.jetty.Response;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.handler.AbstractHandler;
-import org.mortbay.jetty.handler.HandlerCollection;
-import org.mortbay.jetty.security.Constraint;
-import org.mortbay.jetty.security.ConstraintMapping;
-import org.mortbay.jetty.security.HashUserRealm;
-import org.mortbay.jetty.security.SecurityHandler;
-import org.mortbay.jetty.servlet.Context;
-import org.mortbay.jetty.servlet.DefaultServlet;
-import org.mortbay.jetty.servlet.ServletHolder;
+import org.eclipse.jetty.security.ConstraintMapping;
+import org.eclipse.jetty.security.ConstraintSecurityHandler;
+import org.eclipse.jetty.security.HashLoginService;
+import org.eclipse.jetty.security.SecurityHandler;
+import org.eclipse.jetty.security.authentication.BasicAuthenticator;
+import org.eclipse.jetty.server.Request;
+import org.eclipse.jetty.server.Response;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.handler.AbstractHandler;
+import org.eclipse.jetty.server.handler.HandlerCollection;
+import org.eclipse.jetty.util.security.Constraint;
+import org.eclipse.jetty.util.security.Password;
+import org.eclipse.jetty.servlet.DefaultServlet;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
@@ -99,9 +100,12 @@ public abstract class HttpWagonTestCase
         server = new Server( 0 );
 
         PutHandler putHandler = new PutHandler( repositoryDirectory );
-        server.addHandler( putHandler );
 
-        createContext( server, repositoryDirectory );
+        ServletContextHandler context = createContext( server, repositoryDirectory );
+        HandlerCollection handlers = new HandlerCollection();
+        handlers.addHandler( putHandler );
+        handlers.addHandler( context );
+        server.setHandler( handlers );
 
         addConnectors( server );
 
@@ -120,13 +124,14 @@ public abstract class HttpWagonTestCase
         return server.getConnectors()[0].getLocalPort();
     }
 
-    protected void createContext( Server server, File repositoryDirectory )
+    protected ServletContextHandler createContext( Server server, File repositoryDirectory )
         throws IOException
     {
-        Context root = new Context( server, "/", Context.SESSIONS );
+        ServletContextHandler root = new ServletContextHandler( ServletContextHandler.SESSIONS );
         root.setResourceBase( repositoryDirectory.getAbsolutePath() );
         ServletHolder servletHolder = new ServletHolder( new DefaultServlet() );
         root.addServlet( servletHolder, "/*" );
+        return root;
     }
 
     protected void tearDownWagonTestingFixtures()
@@ -216,7 +221,7 @@ public abstract class HttpWagonTestCase
         server.setHandler( handler );
         addConnectors( server );
         server.start();
-        wagon.connect( new Repository( "id", getProtocol() + "://localhost:" 
+        wagon.connect( new Repository( "id", getProtocol() + "://localhost:"
           + server.getConnectors()[0].getLocalPort() ) );
         wagon.getToStream( "resource", new ByteArrayOutputStream() );
         wagon.disconnect();
@@ -309,19 +314,19 @@ public abstract class HttpWagonTestCase
 
             AbstractHandler handler = new AbstractHandler()
             {
-                public void handle( String s, HttpServletRequest request, HttpServletResponse response, int i )
-                    throws IOException, ServletException
+                public void handle( String target, Request baseRequest, HttpServletRequest request,
+                    HttpServletResponse response ) throws IOException, ServletException
                 {
                     if ( called.get() )
                     {
                         response.setStatus( HttpServletResponse.SC_OK );
-                        ( (Request) request ).setHandled( true );
+                        baseRequest.setHandled( true );
                     }
                     else
                     {
                         called.set( true );
                         response.setStatus( SC_TOO_MANY_REQUESTS );
-                        ( (Request) request ).setHandled( true );
+                        baseRequest.setHandled( true );
 
                     }
                 }
@@ -456,19 +461,19 @@ public abstract class HttpWagonTestCase
 
             AbstractHandler handler = new AbstractHandler()
             {
-                public void handle( String s, HttpServletRequest request, HttpServletResponse response, int i )
-                    throws IOException, ServletException
+                public void handle( String target, Request baseRequest, HttpServletRequest request,
+                    HttpServletResponse response ) throws IOException, ServletException
                 {
                     if ( called.get() )
                     {
                         response.setStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR );
-                        ( (Request) request ).setHandled( true );
+                        baseRequest.setHandled( true );
                     }
                     else
                     {
                         called.set( true );
                         response.setStatus( SC_TOO_MANY_REQUESTS );
-                        ( (Request) request ).setHandled( true );
+                        baseRequest.setHandled( true );
                     }
                 }
             };
@@ -543,12 +548,13 @@ public abstract class HttpWagonTestCase
         Server server = new Server( getTestRepositoryPort() );
 
         String localRepositoryPath = FileTestUtils.getTestOutputDir().toString();
-        Context root = new Context( server, "/", Context.SESSIONS );
+        ServletContextHandler root = new ServletContextHandler( ServletContextHandler.SESSIONS );
         root.setResourceBase( localRepositoryPath );
         ServletHolder servletHolder = new ServletHolder( new DefaultServlet() );
         servletHolder.setInitParameter( "gzip", "true" );
         root.addServlet( servletHolder, "/*" );
         addConnectors( server );
+        server.setHandler( root );
         server.start();
 
         try
@@ -655,12 +661,12 @@ public abstract class HttpWagonTestCase
     {
         StreamingWagon wagon = (StreamingWagon) getWagon();
 
-        Server server = new Server( 0 );
+        Server realServer = new Server( 0 );
         TestHeaderHandler handler = new TestHeaderHandler();
 
-        server.setHandler( handler );
-        addConnectors( server );
-        server.start();
+        realServer.setHandler( handler );
+        addConnectors( realServer );
+        realServer.start();
 
         Server redirectServer = new Server( 0 );
 
@@ -679,10 +685,10 @@ public abstract class HttpWagonTestCase
             protocol = "https";
         }
 
-        String redirectUrl = protocol + "://localhost:" + server.getConnectors()[0].getLocalPort();
+        String redirectUrl = protocol + "://localhost:" + realServer.getConnectors()[0].getLocalPort();
 
         RedirectHandler redirectHandler =
-            new RedirectHandler( "Found", HttpServletResponse.SC_SEE_OTHER, redirectUrl, null );
+            new RedirectHandler( "See Other", HttpServletResponse.SC_SEE_OTHER, redirectUrl, null );
 
         redirectServer.setHandler( redirectHandler );
 
@@ -702,14 +708,15 @@ public abstract class HttpWagonTestCase
             String found = FileUtils.fileRead( tmpResult );
             assertEquals( "found:'" + found + "'", "Hello, World!", found );
 
+            checkHandlerResult( redirectHandler.handlerRequestResponses, HttpServletResponse.SC_SEE_OTHER );
             checkHandlerResult( handler.handlerRequestResponses, HttpServletResponse.SC_OK );
-            checkHandlerResult( redirectHandler.handlerRequestResponses, HttpServletResponse.SC_FOUND );
         }
         finally
         {
             wagon.disconnect();
 
-            server.stop();
+            redirectServer.stop();
+            realServer.stop();
 
             tmpResult.delete();
         }
@@ -720,12 +727,12 @@ public abstract class HttpWagonTestCase
     {
         StreamingWagon wagon = (StreamingWagon) getWagon();
 
-        Server server = new Server( 0 );
+        Server realServer = new Server( 0 );
         TestHeaderHandler handler = new TestHeaderHandler();
 
-        server.setHandler( handler );
-        addConnectors( server );
-        server.start();
+        realServer.setHandler( handler );
+        addConnectors( realServer );
+        realServer.start();
 
         Server redirectServer = new Server( 0 );
 
@@ -744,10 +751,10 @@ public abstract class HttpWagonTestCase
             protocol = "https";
         }
 
-        String redirectUrl = protocol + "://localhost:" + server.getConnectors()[0].getLocalPort();
+        String redirectUrl = protocol + "://localhost:" + realServer.getConnectors()[0].getLocalPort();
 
         RedirectHandler redirectHandler =
-            new RedirectHandler( "Found", HttpServletResponse.SC_SEE_OTHER, redirectUrl, null );
+            new RedirectHandler( "See Other", HttpServletResponse.SC_SEE_OTHER, redirectUrl, null );
 
         redirectServer.setHandler( redirectHandler );
 
@@ -763,14 +770,15 @@ public abstract class HttpWagonTestCase
             String found = FileUtils.fileRead( tmpResult );
             assertEquals( "found:'" + found + "'", "Hello, World!", found );
 
+            checkHandlerResult( redirectHandler.handlerRequestResponses, HttpServletResponse.SC_SEE_OTHER );
             checkHandlerResult( handler.handlerRequestResponses, HttpServletResponse.SC_OK );
-            checkHandlerResult( redirectHandler.handlerRequestResponses, HttpServletResponse.SC_FOUND );
         }
         finally
         {
             wagon.disconnect();
 
-            server.stop();
+            redirectServer.stop();
+            realServer.stop();
 
             tmpResult.delete();
         }
@@ -814,7 +822,7 @@ public abstract class HttpWagonTestCase
         String redirectUrl = protocol + "://localhost:" + realServer.getConnectors()[0].getLocalPort();
 
         RedirectHandler redirectHandler =
-            new RedirectHandler( "Found", HttpServletResponse.SC_SEE_OTHER, redirectUrl, repositoryDirectory );
+            new RedirectHandler( "See Other", HttpServletResponse.SC_SEE_OTHER, redirectUrl, repositoryDirectory );
 
         redirectServer.setHandler( redirectHandler );
 
@@ -839,17 +847,17 @@ public abstract class HttpWagonTestCase
             try
             {
                 wagon.putFromStream( fileInputStream, "test-secured-put-resource", content.length(), -1 );
+                assertEquals( content, FileUtils.fileRead( sourceFile.getAbsolutePath() ) );
+
+                checkRequestResponseForRedirectPutWithFullUrl( redirectHandler, putHandler );
             }
             finally
             {
+                wagon.disconnect();
                 fileInputStream.close();
                 tempFile.delete();
-
             }
 
-            assertEquals( content, FileUtils.fileRead( sourceFile.getAbsolutePath() ) );
-
-            checkRequestResponseForRedirectPutFromStreamWithFullUrl( putHandler, redirectHandler );
         }
         finally
         {
@@ -858,11 +866,11 @@ public abstract class HttpWagonTestCase
         }
     }
 
-    protected void checkRequestResponseForRedirectPutFromStreamWithFullUrl( PutHandler putHandler,
-                                                                            RedirectHandler redirectHandler )
+    protected void checkRequestResponseForRedirectPutWithFullUrl( RedirectHandler redirectHandler,
+                                                                  PutHandler putHandler )
     {
+        checkHandlerResult( redirectHandler.handlerRequestResponses, HttpServletResponse.SC_SEE_OTHER );
         checkHandlerResult( putHandler.handlerRequestResponses, HttpServletResponse.SC_CREATED );
-        checkHandlerResult( redirectHandler.handlerRequestResponses, HttpServletResponse.SC_FOUND );
     }
 
     public void testRedirectPutFromStreamRelativeUrl()
@@ -885,7 +893,7 @@ public abstract class HttpWagonTestCase
         addConnectors( redirectServer );
 
         RedirectHandler redirectHandler =
-            new RedirectHandler( "Found", HttpServletResponse.SC_SEE_OTHER, "/redirectRequest/foo",
+            new RedirectHandler( "See Other", HttpServletResponse.SC_SEE_OTHER, "/redirectRequest/foo",
                                  repositoryDirectory );
 
         redirectServer.setHandler( redirectHandler );
@@ -911,18 +919,17 @@ public abstract class HttpWagonTestCase
             try
             {
                 wagon.putFromStream( fileInputStream, "test-secured-put-resource", content.length(), -1 );
+                assertEquals( content, FileUtils.fileRead( sourceFile.getAbsolutePath() ) );
+
+                checkRequestResponseForRedirectPutWithRelativeUrl( redirectHandler, putHandler );
             }
             finally
             {
+                wagon.disconnect();
                 fileInputStream.close();
                 tempFile.delete();
-
             }
 
-            assertEquals( content, FileUtils.fileRead( sourceFile.getAbsolutePath() ) );
-
-            checkRequestResponseForRedirectPutFromStreamWithRelativeUrl( putHandler, redirectHandler );
-
         }
         finally
         {
@@ -931,12 +938,12 @@ public abstract class HttpWagonTestCase
         }
     }
 
-    protected void checkRequestResponseForRedirectPutFromStreamWithRelativeUrl( PutHandler putHandler,
-                                                                                RedirectHandler redirectHandler )
+    protected void checkRequestResponseForRedirectPutWithRelativeUrl( RedirectHandler redirectHandler,
+                                                                      PutHandler putHandler )
     {
-        checkHandlerResult( putHandler.handlerRequestResponses );
-        checkHandlerResult( redirectHandler.handlerRequestResponses, HttpServletResponse.SC_FOUND,
+        checkHandlerResult( redirectHandler.handlerRequestResponses, HttpServletResponse.SC_SEE_OTHER,
                             HttpServletResponse.SC_CREATED );
+        checkHandlerResult( putHandler.handlerRequestResponses );
     }
 
     protected void checkHandlerResult( List<HandlerRequestResponse> handlerRequestResponses,
@@ -994,7 +1001,7 @@ public abstract class HttpWagonTestCase
         String redirectUrl = protocol + "://localhost:" + realServer.getConnectors()[0].getLocalPort();
 
         RedirectHandler redirectHandler =
-            new RedirectHandler( "Found", HttpServletResponse.SC_SEE_OTHER, redirectUrl, repositoryDirectory );
+            new RedirectHandler( "See Other", HttpServletResponse.SC_SEE_OTHER, redirectUrl, repositoryDirectory );
 
         redirectServer.setHandler( redirectHandler );
 
@@ -1018,14 +1025,16 @@ public abstract class HttpWagonTestCase
             try
             {
                 wagon.put( tempFile, "test-secured-put-resource" );
+                assertEquals( content, FileUtils.fileRead( sourceFile.getAbsolutePath() ) );
+
+                checkRequestResponseForRedirectPutWithFullUrl( redirectHandler, putHandler );
             }
             finally
             {
+                wagon.disconnect();
                 tempFile.delete();
             }
 
-            assertEquals( content, FileUtils.fileRead( sourceFile.getAbsolutePath() ) );
-
         }
         finally
         {
@@ -1055,7 +1064,7 @@ public abstract class HttpWagonTestCase
         addConnectors( redirectServer );
 
         RedirectHandler redirectHandler =
-            new RedirectHandler( "Found", HttpServletResponse.SC_SEE_OTHER, "/redirectRequest/foo",
+            new RedirectHandler( "See Other", HttpServletResponse.SC_SEE_OTHER, "/redirectRequest/foo",
                                  repositoryDirectory );
 
         redirectServer.setHandler( redirectHandler );
@@ -1080,14 +1089,16 @@ public abstract class HttpWagonTestCase
             try
             {
                 wagon.put( tempFile, "test-secured-put-resource" );
+                assertEquals( content, FileUtils.fileRead( sourceFile.getAbsolutePath() ) );
+
+                checkRequestResponseForRedirectPutWithRelativeUrl( redirectHandler, putHandler );
             }
             finally
             {
+                wagon.disconnect();
                 tempFile.delete();
             }
 
-            assertEquals( content, FileUtils.fileRead( sourceFile.getAbsolutePath() ) );
-
         }
         finally
         {
@@ -1098,7 +1109,7 @@ public abstract class HttpWagonTestCase
 
 
     /**
-     * 
+     *
      */
     @SuppressWarnings( "checkstyle:visibilitymodifier" )
     public static class RedirectHandler
@@ -1122,23 +1133,28 @@ public abstract class HttpWagonTestCase
             this.repositoryDirectory = repositoryDirectory;
         }
 
-        public void handle( String s, HttpServletRequest req, HttpServletResponse resp, int i )
-            throws IOException, ServletException
+        public void handle( String target, Request baseRequest, HttpServletRequest request,
+            HttpServletResponse response ) throws IOException, ServletException
         {
-            if ( req.getRequestURI().contains( "redirectRequest" ) )
+            if ( request.getRequestURI().contains( "redirectRequest" ) )
             {
                 PutHandler putHandler = new PutHandler( this.repositoryDirectory );
-                putHandler.handle( s, req, resp, i );
+                putHandler.handle( target, baseRequest, request, response );
                 handlerRequestResponses.add(
-                    new HandlerRequestResponse( req.getMethod(), ( (Response) resp ).getStatus(),
-                                                req.getRequestURI() ) );
+                    new HandlerRequestResponse( request.getMethod(), ( (Response) response ).getStatus(),
+                                                request.getRequestURI() ) );
                 return;
             }
-            resp.setStatus( this.retCode );
-            resp.sendRedirect( this.redirectUrl + "/" + req.getRequestURI() );
+            response.setStatus( this.retCode );
+            response.setHeader( "Location", this.redirectUrl + request.getRequestURI() );
+            baseRequest.setHandled( true );
+
             handlerRequestResponses.add(
-                new HandlerRequestResponse( req.getMethod(), ( (Response) resp ).getStatus(), req.getRequestURI() ) );
+                new HandlerRequestResponse( request.getMethod(), ( (Response) response ).getStatus(),
+                                            request.getRequestURI() ) );
         }
+
+
     }
 
 
@@ -1342,7 +1358,17 @@ public abstract class HttpWagonTestCase
 
             assertEquals( "top secret", IOUtil.toString( in ) );
 
-            TestSecurityHandler securityHandler = (TestSecurityHandler) ( (Context) server.getHandler() ).getHandler();
+            /*
+             * We need to wait a bit for all Jetty workers/threads to complete their work. Otherwise
+             * we may suffer from race conditions where handlerRequestResponses list is not completely
+             * populated and its premature iteration in testPreemptiveAuthenticationGet will lead to
+             * a test failure.
+             */
+            // CHECKSTYLE_OFF: MagicNumber
+            Thread.sleep ( 2000L );
+            // CHECKSTYLE_ON: MagicNumber
+
+            TestSecurityHandler securityHandler = server.getChildHandlerByClass( TestSecurityHandler.class );
             testPreemptiveAuthenticationGet( securityHandler, supportPreemptiveAuthenticationGet() );
 
         }
@@ -1393,7 +1419,17 @@ public abstract class HttpWagonTestCase
 
             assertEquals( "top secret", out.toString( "US-ASCII" ) );
 
-            TestSecurityHandler securityHandler = (TestSecurityHandler) ( (Context) server.getHandler() ).getHandler();
+            /*
+             * We need to wait a bit for all Jetty workers/threads to complete their work. Otherwise
+             * we may suffer from race conditions where handlerRequestResponses list is not completely
+             * populated and its premature iteration in testPreemptiveAuthenticationGet will lead to
+             * a test failure.
+             */
+            // CHECKSTYLE_OFF: MagicNumber
+            Thread.sleep ( 2000L );
+            // CHECKSTYLE_ON: MagicNumber
+
+            TestSecurityHandler securityHandler = server.getChildHandlerByClass( TestSecurityHandler.class );
             testPreemptiveAuthenticationGet( securityHandler, supportPreemptiveAuthenticationGet() );
         }
         finally
@@ -1483,10 +1519,10 @@ public abstract class HttpWagonTestCase
 
         SecurityHandler sh = createSecurityHandler();
 
-        Context root = new Context( Context.SESSIONS );
-        root.setContextPath( "/" );
-        root.addHandler( sh );
+        ServletContextHandler root = new ServletContextHandler( ServletContextHandler.SESSIONS
+            | ServletContextHandler.SECURITY );
         root.setResourceBase( localRepositoryPath );
+        root.setSecurityHandler( sh );
         ServletHolder servletHolder = new ServletHolder( new DefaultServlet() );
         root.addServlet( servletHolder, "/*" );
 
@@ -1587,19 +1623,19 @@ public abstract class HttpWagonTestCase
 
             AbstractHandler handler = new AbstractHandler()
             {
-                public void handle( String s, HttpServletRequest request, HttpServletResponse response, int i )
-                    throws IOException, ServletException
+                public void handle( String target, Request baseRequest, HttpServletRequest request,
+                    HttpServletResponse response ) throws IOException, ServletException
                 {
                     if ( called.get() )
                     {
                         response.setStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR );
-                        ( (Request) request ).setHandled( true );
+                        baseRequest.setHandled( true );
                     }
                     else
                     {
                         called.set( true );
                         response.setStatus( SC_TOO_MANY_REQUESTS );
-                        ( (Request) request ).setHandled( true );
+                        baseRequest.setHandled( true );
                     }
                 }
             };
@@ -1725,10 +1761,8 @@ public abstract class HttpWagonTestCase
 
         PutHandler putHandler = new PutHandler( new File( localRepositoryPath ) );
 
-        HandlerCollection handlers = new HandlerCollection();
-        handlers.setHandlers( new Handler[]{ sh, putHandler } );
-
-        server.setHandler( handlers );
+        sh.setHandler( putHandler );
+        server.setHandler( sh );
         addConnectors( server );
         server.start();
 
@@ -1796,10 +1830,15 @@ public abstract class HttpWagonTestCase
 
         PutHandler putHandler = new PutHandler( new File( localRepositoryPath ) );
 
-        HandlerCollection handlers = new HandlerCollection();
-        handlers.setHandlers( addSecurityHandler ? new Handler[]{ sh, putHandler } : new Handler[]{ putHandler } );
-
-        server.setHandler( handlers );
+        if ( addSecurityHandler )
+        {
+            sh.setHandler( putHandler );
+            server.setHandler( sh );
+        }
+        else
+        {
+            server.setHandler( putHandler );
+        }
         addConnectors( server );
         server.start();
 
@@ -1871,29 +1910,29 @@ public abstract class HttpWagonTestCase
 
     protected void testPreemptiveAuthenticationGet( TestSecurityHandler sh, boolean preemptive )
     {
-        testPreemptiveAuthentication( sh, preemptive );
+        testPreemptiveAuthentication( sh, preemptive, HttpServletResponse.SC_OK );
     }
 
     protected void testPreemptiveAuthenticationPut( TestSecurityHandler sh, boolean preemptive )
     {
-        testPreemptiveAuthentication( sh, preemptive );
+        testPreemptiveAuthentication( sh, preemptive, HttpServletResponse.SC_CREATED );
     }
 
-    protected void testPreemptiveAuthentication( TestSecurityHandler sh, boolean preemptive )
+    protected void testPreemptiveAuthentication( TestSecurityHandler sh, boolean preemptive, int statusCode )
     {
 
         if ( preemptive )
         {
             assertEquals( "not 1 security handler use " + sh.handlerRequestResponses, 1,
                           sh.handlerRequestResponses.size() );
-            assertEquals( HttpServletResponse.SC_OK, sh.handlerRequestResponses.get( 0 ).responseCode );
+            assertEquals( statusCode, sh.handlerRequestResponses.get( 0 ).responseCode );
         }
         else
         {
             assertEquals( "not 2 security handler use " + sh.handlerRequestResponses, 2,
                           sh.handlerRequestResponses.size() );
             assertEquals( HttpServletResponse.SC_UNAUTHORIZED, sh.handlerRequestResponses.get( 0 ).responseCode );
-            assertEquals( HttpServletResponse.SC_OK, sh.handlerRequestResponses.get( 1 ).responseCode );
+            assertEquals( statusCode, sh.handlerRequestResponses.get( 1 ).responseCode );
 
         }
     }
@@ -1908,13 +1947,13 @@ public abstract class HttpWagonTestCase
             this.status = status;
         }
 
-        public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch )
-            throws IOException, ServletException
+        public void handle( String target, Request baseRequest, HttpServletRequest request,
+            HttpServletResponse response ) throws IOException, ServletException
         {
             if ( status != 0 )
             {
                 response.setStatus( status );
-                ( (Request) request ).setHandled( true );
+                baseRequest.setHandled( true );
             }
         }
     }
@@ -1949,7 +1988,7 @@ public abstract class HttpWagonTestCase
     }
 
     /**
-     * 
+     *
      */
     @SuppressWarnings( "checkstyle:visibilitymodifier" )
     public static class PutHandler
@@ -1968,12 +2007,9 @@ public abstract class HttpWagonTestCase
             this.resourceBase = repositoryDirectory;
         }
 
-        public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch )
-            throws IOException, ServletException
+        public void handle( String target, Request baseRequest, HttpServletRequest request,
+            HttpServletResponse response ) throws IOException, ServletException
         {
-            Request baseRequest =
-                request instanceof Request ? (Request) request : HttpConnection.getCurrentConnection().getRequest();
-
             if ( baseRequest.isHandled() || !"PUT".equals( baseRequest.getMethod() ) )
             {
                 return;
@@ -2023,8 +2059,8 @@ public abstract class HttpWagonTestCase
 
         List<HandlerRequestResponse> handlerRequestResponses = new ArrayList<HandlerRequestResponse>();
 
-        public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch )
-            throws IOException, ServletException
+        public void handle( String target, Request baseRequest, HttpServletRequest request,
+            HttpServletResponse response ) throws IOException, ServletException
         {
             System.out.println( " handle proxy request" );
             if ( request.getHeader( "Proxy-Authorization" ) == null )
@@ -2036,17 +2072,17 @@ public abstract class HttpWagonTestCase
                 response.setStatus( HttpServletResponse.SC_PROXY_AUTHENTICATION_REQUIRED );
                 response.addHeader( "Proxy-Authenticate", "Basic realm=\"Squid proxy-caching web server\"" );
 
-                ( (Request) request ).setHandled( true );
+                baseRequest.setHandled( true );
                 return;
             }
             handlerRequestResponses.add(
                 new HandlerRequestResponse( request.getMethod(), HttpServletResponse.SC_OK, request.getRequestURI() ) );
-            super.handle( target, request, response, dispatch );
+            super.handle( target, baseRequest, request, response );
         }
     }
 
     /**
-     * 
+     *
      */
     @SuppressWarnings( "checkstyle:visibilitymodifier" )
     private static class TestHeaderHandler
@@ -2060,14 +2096,14 @@ public abstract class HttpWagonTestCase
         {
         }
 
-        public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch )
-            throws IOException, ServletException
+        public void handle( String target, Request baseRrequest, HttpServletRequest request,
+            HttpServletResponse response ) throws IOException, ServletException
         {
             headers = new HashMap<String, String>();
-            for ( Enumeration<String> e = request.getHeaderNames(); e.hasMoreElements(); )
+            for ( Enumeration<String> e = baseRrequest.getHeaderNames(); e.hasMoreElements(); )
             {
                 String name = e.nextElement();
-                Enumeration headerValues = request.getHeaders( name );
+                Enumeration headerValues = baseRrequest.getHeaders( name );
                 // as per HTTP spec http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html
                 // multiple values for the same header key are concatenated separated by comma
                 // otherwise we wouldn't notice headers with same key added multiple times
@@ -2088,10 +2124,10 @@ public abstract class HttpWagonTestCase
             response.getWriter().print( "Hello, World!" );
 
             handlerRequestResponses.add(
-                new HandlerRequestResponse( request.getMethod(), ( (Response) response ).getStatus(),
-                                            request.getRequestURI() ) );
+                new HandlerRequestResponse( baseRrequest.getMethod(), ( (Response) response ).getStatus(),
+                                            baseRrequest.getRequestURI() ) );
 
-            ( (Request) request ).setHandled( true );
+            baseRrequest.setHandled( true );
         }
 
     }
@@ -2108,39 +2144,38 @@ public abstract class HttpWagonTestCase
         cm.setPathSpec( "/*" );
 
         TestSecurityHandler sh = new TestSecurityHandler();
-        HashUserRealm hashUserRealm = new HashUserRealm( "MyRealm" );
-        hashUserRealm.put( "user", "secret" );
-        hashUserRealm.addUserToRole( "user", "admin" );
-        sh.setUserRealm( hashUserRealm );
+        HashLoginService hashLoginService = new HashLoginService( "MyRealm" );
+        hashLoginService.putUser( "user", new Password( "secret" ), new String[] { "admin" } );
+        sh.setLoginService( hashLoginService );
         sh.setConstraintMappings( new ConstraintMapping[]{ cm } );
+        sh.setAuthenticator ( new BasicAuthenticator() );
         return sh;
     }
 
     /**
-     * 
+     *
      */
     @SuppressWarnings( "checkstyle:visibilitymodifier" )
     public static class TestSecurityHandler
-        extends SecurityHandler
+        extends ConstraintSecurityHandler
     {
 
         public List<HandlerRequestResponse> handlerRequestResponses = new ArrayList<HandlerRequestResponse>();
 
         @Override
-        public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch )
-            throws IOException, ServletException
+        public void handle( String target, Request baseRequest, HttpServletRequest request,
+            HttpServletResponse response ) throws IOException, ServletException
         {
             String method = request.getMethod();
-            super.handle( target, request, response, dispatch );
+            super.handle( target, baseRequest, request, response );
 
             handlerRequestResponses.add(
                 new HandlerRequestResponse( method, ( (Response) response ).getStatus(), request.getRequestURI() ) );
         }
-
     }
 
     /**
-     * 
+     *
      */
     @SuppressWarnings( "checkstyle:visibilitymodifier" )
     public static class HandlerRequestResponse

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java b/wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java
index 6692988..41da7d4 100644
--- a/wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java
+++ b/wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java
@@ -59,7 +59,7 @@ public class FileWagonTest
     /**
      * This test is introduced to allow for null file wagons.
      * Which is used heavily in the maven component ITs.
-     * 
+     *
      * @throws ConnectionException
      * @throws AuthenticationException
      */
@@ -70,28 +70,29 @@ public class FileWagonTest
         resource.setContentLength( 100000 );
         Repository repository = new Repository();
         wagon.connect( repository );
+        wagon.disconnect();
     }
 
     protected long getExpectedLastModifiedOnGet( Repository repository, Resource resource )
     {
         return new File( repository.getBasedir(), resource.getName() ).lastModified();
     }
-    
+
     public void testResourceExists()
         throws Exception
     {
         String url = "file://" + getBasedir();
-        
+
         Wagon wagon = new FileWagon();
         Repository repository = new Repository( "someID", url );
         wagon.connect( repository );
-        
+
         assertTrue( wagon.resourceExists( "target" ) );
         assertTrue( wagon.resourceExists( "target/" ) );
         assertTrue( wagon.resourceExists( "pom.xml" ) );
-        
+
         assertFalse( wagon.resourceExists( "pom.xml/" ) );
-        
+
         wagon.disconnect();
     }
 }

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-providers/wagon-http-lightweight/pom.xml
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http-lightweight/pom.xml b/wagon-providers/wagon-http-lightweight/pom.xml
index 8a49d85..0a055b6 100644
--- a/wagon-providers/wagon-http-lightweight/pom.xml
+++ b/wagon-providers/wagon-http-lightweight/pom.xml
@@ -61,8 +61,8 @@ under the License.
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.mortbay.jetty</groupId>
-      <artifactId>jetty</artifactId>
+      <groupId>org.eclipse.jetty.aggregate</groupId>
+      <artifactId>jetty-all</artifactId>
       <scope>test</scope>
     </dependency>
     <dependency>

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpsWagonTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpsWagonTest.java b/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpsWagonTest.java
index 3b532eb..fe30c83 100644
--- a/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpsWagonTest.java
+++ b/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpsWagonTest.java
@@ -19,9 +19,9 @@ package org.apache.maven.wagon.providers.http;
  * under the License.
  */
 
-import org.mortbay.jetty.Connector;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.security.SslSocketConnector;
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ssl.SslSocketConnector;
 
 public class LightweightHttpsWagonTest
     extends LightweightHttpWagonTest

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-providers/wagon-http/pom.xml
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/pom.xml b/wagon-providers/wagon-http/pom.xml
index ab0f622..cb77216 100644
--- a/wagon-providers/wagon-http/pom.xml
+++ b/wagon-providers/wagon-http/pom.xml
@@ -78,13 +78,13 @@ under the License.
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.mortbay.jetty</groupId>
-      <artifactId>jetty</artifactId>
+      <groupId>org.eclipse.jetty.aggregate</groupId>
+      <artifactId>jetty-all</artifactId>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.mortbay.jetty</groupId>
-      <artifactId>servlet-api</artifactId>
+      <groupId>javax.servlet</groupId>
+      <artifactId>javax.servlet-api</artifactId>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -164,6 +164,8 @@ under the License.
           <systemPropertyVariables>
             <maven.wagon.http.ssl.insecure>true</maven.wagon.http.ssl.insecure>
             <maven.wagon.http.ssl.ignore.validity.dates>true</maven.wagon.http.ssl.ignore.validity.dates>
+            <org.slf4j.simpleLogger.showDateTime>true</org.slf4j.simpleLogger.showDateTime>
+            <org.slf4j.simpleLogger.dateTimeFormat>yyyy-MM-dd'T'HH:mm:ss.SSS</org.slf4j.simpleLogger.dateTimeFormat>
           </systemPropertyVariables>
         </configuration>
       </plugin>

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagonTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagonTest.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagonTest.java
index c1814f4..15b1f6b 100644
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagonTest.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagonTest.java
@@ -47,5 +47,7 @@ public class AbstractHttpClientWagonTest
         inputData.setResource( resource );
 
         wagon.fillInputData( inputData );
+
+        wagon.disconnect();
     }
 }

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonHttpServerTestCase.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonHttpServerTestCase.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonHttpServerTestCase.java
index b5ef1e8..5e7e72b 100644
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonHttpServerTestCase.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonHttpServerTestCase.java
@@ -21,9 +21,9 @@ package org.apache.maven.wagon.providers.http;
 
 import org.apache.maven.wagon.Wagon;
 import org.codehaus.plexus.PlexusTestCase;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.handler.ResourceHandler;
-import org.mortbay.jetty.servlet.Context;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.handler.ResourceHandler;
+import org.eclipse.jetty.servlet.ServletContextHandler;
 
 /**
  * User: jdumay Date: 24/01/2008 Time: 18:15:53
@@ -37,7 +37,7 @@ public abstract class HttpWagonHttpServerTestCase
 
     protected ResourceHandler resourceHandler;
 
-    protected Context context;
+    protected ServletContextHandler context;
 
     protected void setUp()
         throws Exception
@@ -45,10 +45,10 @@ public abstract class HttpWagonHttpServerTestCase
         super.setUp();
         server = new Server( httpServerPort );
 
-        context = new Context( server, "/", Context.SESSIONS );
-
+        context = new ServletContextHandler( ServletContextHandler.SESSIONS );
         resourceHandler = new ResourceHandler();
-        server.addHandler( resourceHandler );
+        context.setHandler( resourceHandler );
+        server.setHandler( context );
     }
 
     protected Wagon getWagon()

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonReasonPhraseTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonReasonPhraseTest.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonReasonPhraseTest.java
index 32cbf32..484d638 100644
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonReasonPhraseTest.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonReasonPhraseTest.java
@@ -24,7 +24,7 @@ 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 org.eclipse.jetty.servlet.ServletHolder;
 
 import java.io.File;
 

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java
index c223f23..5983b4f 100644
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java
@@ -23,7 +23,7 @@ import org.apache.maven.wagon.FileTestUtils;
 import org.apache.maven.wagon.TransferFailedException;
 import org.apache.maven.wagon.Wagon;
 import org.apache.maven.wagon.repository.Repository;
-import org.mortbay.jetty.servlet.ServletHolder;
+import org.eclipse.jetty.servlet.ServletHolder;
 
 import java.io.File;
 import java.util.Random;
@@ -198,6 +198,8 @@ public class HttpWagonTimeoutTest
             wagon.getFileList( "/foobar" );
             long end = System.currentTimeMillis();
 
+            wagon.disconnect();
+
             // validate we have a default time out 60000
             assertTrue( (end - start) >= 500 && (end - start) < 1000 );
 

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java
index 396823b..ace5b3c 100644
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java
@@ -20,9 +20,9 @@ package org.apache.maven.wagon.providers.http;
  */
 
 import org.apache.maven.wagon.Wagon;
-import org.mortbay.jetty.Connector;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.security.SslSocketConnector;
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ssl.SslSocketConnector;
 
 public class HttpsWagonPreemptiveTest
     extends HttpWagonTest

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java
index c22b3ef..7d0de20 100644
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java
@@ -19,9 +19,9 @@ package org.apache.maven.wagon.providers.http;
  * under the License.
  */
 
-import org.mortbay.jetty.Connector;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.security.SslSocketConnector;
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ssl.SslSocketConnector;
 
 public class HttpsWagonTest
     extends HttpWagonTest

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HugeFileDownloadTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HugeFileDownloadTest.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HugeFileDownloadTest.java
index 0b6566d..ae9046f 100644
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HugeFileDownloadTest.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HugeFileDownloadTest.java
@@ -24,10 +24,12 @@ import org.apache.maven.wagon.Wagon;
 import org.apache.maven.wagon.observers.Debug;
 import org.apache.maven.wagon.repository.Repository;
 import org.codehaus.plexus.PlexusTestCase;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.servlet.Context;
-import org.mortbay.jetty.servlet.DefaultServlet;
-import org.mortbay.jetty.servlet.ServletHolder;
+import org.codehaus.plexus.util.IOUtil;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
@@ -45,6 +47,8 @@ public class HugeFileDownloadTest
     extends PlexusTestCase
 {
 
+    private static final Logger LOGGER = LoggerFactory.getLogger( HugeFileDownloadTest.class );
+
     private static long HUGE_FILE_SIZE =
         Integer.valueOf( Integer.MAX_VALUE ).longValue() + Integer.valueOf( Integer.MAX_VALUE ).longValue();
 
@@ -53,7 +57,7 @@ public class HugeFileDownloadTest
     public void testDownloadHugeFileWithContentLength()
         throws Exception
     {
-        File hugeFile = new File( getBasedir(), "target/hugefile.txt" );
+        final File hugeFile = new File( getBasedir(), "target/hugefile.txt" );
         if ( !hugeFile.exists() || hugeFile.length() < HUGE_FILE_SIZE )
         {
             makeHugeFile( hugeFile );
@@ -61,10 +65,23 @@ public class HugeFileDownloadTest
 
         server = new Server( 0 );
 
-        Context root = new Context( server, "/", Context.SESSIONS );
+        ServletContextHandler root = new ServletContextHandler( ServletContextHandler.SESSIONS );
         root.setResourceBase( new File( getBasedir(), "target" ).getAbsolutePath() );
-        ServletHolder servletHolder = new ServletHolder( new DefaultServlet() );
+        ServletHolder servletHolder = new ServletHolder( new HttpServlet()
+        {
+            @Override
+            protected void doGet( HttpServletRequest req, HttpServletResponse resp )
+                throws ServletException, IOException
+            {
+                FileInputStream fis = new FileInputStream( hugeFile );
+
+                resp.addHeader( "Content-Length", String.valueOf( hugeFile.length() ) );
+                IOUtil.copy( fis, resp.getOutputStream() );
+                fis.close();
+            }
+        } );
         root.addServlet( servletHolder, "/*" );
+        server.setHandler( root );
 
         server.start();
 
@@ -76,20 +93,21 @@ public class HugeFileDownloadTest
 
             dest = File.createTempFile( "huge", "txt" );
 
+            LOGGER.info( "Fetching 'hugefile.txt' with content length" );
             wagon.get( "hugefile.txt", dest );
 
             Assert.assertTrue( dest.length() >= HUGE_FILE_SIZE );
+            LOGGER.info( "The file was successfully fetched" );
 
             wagon.disconnect();
         }
         finally
         {
-            server.start();
+            server.stop();
             dest.delete();
             hugeFile.delete();
         }
 
-
     }
 
     public void testDownloadHugeFileWithChunked()
@@ -103,7 +121,7 @@ public class HugeFileDownloadTest
 
         server = new Server( 0 );
 
-        Context root = new Context( server, "/", Context.SESSIONS );
+        ServletContextHandler root = new ServletContextHandler( ServletContextHandler.SESSIONS );
         root.setResourceBase( new File( getBasedir(), "target" ).getAbsolutePath() );
         ServletHolder servletHolder = new ServletHolder( new HttpServlet()
         {
@@ -113,16 +131,12 @@ public class HugeFileDownloadTest
             {
                 FileInputStream fis = new FileInputStream( hugeFile );
 
-                byte[] buffer = new byte[8192];
-                int len = 0;
-                while ( ( len = fis.read( buffer ) ) != -1 )
-                {
-                    resp.getOutputStream().write( buffer, 0, len );
-                }
+                IOUtil.copy( fis, resp.getOutputStream() );
                 fis.close();
             }
         } );
         root.addServlet( servletHolder, "/*" );
+        server.setHandler( root );
 
         server.start();
 
@@ -134,23 +148,23 @@ public class HugeFileDownloadTest
 
             dest = File.createTempFile( "huge", "txt" );
 
+            LOGGER.info( "Fetching 'hugefile.txt' in chunks" );
             wagon.get( "hugefile.txt", dest );
 
             Assert.assertTrue( dest.length() >= HUGE_FILE_SIZE );
+            LOGGER.info( "The file was successfully fetched" );
 
             wagon.disconnect();
         }
         finally
         {
-            server.start();
+            server.stop();
             dest.delete();
             hugeFile.delete();
         }
 
-
     }
 
-
     protected Wagon getWagon()
         throws Exception
     {
@@ -166,11 +180,13 @@ public class HugeFileDownloadTest
     private void makeHugeFile( File hugeFile )
         throws Exception
     {
+        LOGGER.info( "Creating test file" );
         RandomAccessFile ra = new RandomAccessFile( hugeFile.getPath(), "rw" );
-        ra.setLength( HUGE_FILE_SIZE + 1 );
+        ra.setLength( HUGE_FILE_SIZE + 1L );
         ra.seek( HUGE_FILE_SIZE );
         ra.write( 1 );
-
+        ra.close();
+        LOGGER.info( "Test file created" );
     }
 
 }

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-providers/wagon-ssh/pom.xml
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-ssh/pom.xml b/wagon-providers/wagon-ssh/pom.xml
index 2052c6c..1c7a9b6 100644
--- a/wagon-providers/wagon-ssh/pom.xml
+++ b/wagon-providers/wagon-ssh/pom.xml
@@ -68,13 +68,13 @@ under the License.
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.mortbay.jetty</groupId>
-      <artifactId>jetty</artifactId>
+      <groupId>org.eclipse.jetty.aggregate</groupId>
+      <artifactId>jetty-all</artifactId>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.mortbay.jetty</groupId>
-      <artifactId>servlet-api</artifactId>
+      <groupId>javax.servlet</groupId>
+      <artifactId>javax.servlet-api</artifactId>
       <scope>test</scope>
     </dependency>
     <dependency>

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonWithProxyTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonWithProxyTest.java b/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonWithProxyTest.java
index 9d5f985..f21a6f5 100644
--- a/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonWithProxyTest.java
+++ b/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonWithProxyTest.java
@@ -34,10 +34,10 @@ import org.apache.maven.wagon.authentication.AuthenticationException;
 import org.apache.maven.wagon.proxy.ProxyInfo;
 import org.apache.maven.wagon.repository.Repository;
 import org.codehaus.plexus.PlexusTestCase;
-import org.mortbay.jetty.Handler;
-import org.mortbay.jetty.Request;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.handler.AbstractHandler;
+import org.eclipse.jetty.server.Handler;
+import org.eclipse.jetty.server.Request;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.handler.AbstractHandler;
 
 public class ScpWagonWithProxyTest
     extends PlexusTestCase
@@ -50,13 +50,13 @@ public class ScpWagonWithProxyTest
         handled = false;
         Handler handler = new AbstractHandler()
         {
-            public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch )
-                throws IOException, ServletException
+            public void handle( String target, Request baseRequest, HttpServletRequest request,
+                HttpServletResponse response ) throws IOException, ServletException
             {
                 assertEquals( "CONNECT", request.getMethod() );
 
                 handled = true;
-                ( (Request) request ).setHandled( true );
+                baseRequest.setHandled( true );
             }
         };
 
@@ -83,10 +83,8 @@ public class ScpWagonWithProxyTest
         }
         finally
         {
-            if ( server != null )
-            {
-                server.stop();
-            }
+            wagon.disconnect();
+            server.stop();
         }
     }
 
@@ -120,6 +118,7 @@ public class ScpWagonWithProxyTest
         }
         finally
         {
+            wagon.disconnect();
             t.interrupt();
         }
     }
@@ -165,7 +164,7 @@ public class ScpWagonWithProxyTest
                         {
                             continue;
                         }
-                        
+
                         handled = true;
                     }
                     catch ( IOException e )

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-providers/wagon-webdav-jackrabbit/pom.xml
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-webdav-jackrabbit/pom.xml b/wagon-providers/wagon-webdav-jackrabbit/pom.xml
index b6ee24f..3b119ab 100644
--- a/wagon-providers/wagon-webdav-jackrabbit/pom.xml
+++ b/wagon-providers/wagon-webdav-jackrabbit/pom.xml
@@ -106,8 +106,8 @@ under the License.
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.mortbay.jetty</groupId>
-      <artifactId>jetty</artifactId>
+      <groupId>org.eclipse.jetty.aggregate</groupId>
+      <artifactId>jetty-all</artifactId>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -121,7 +121,7 @@ under the License.
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
     </dependency>
- 
+
     <dependency>
       <groupId>biz.aQute</groupId>
       <artifactId>bnd</artifactId>
@@ -165,5 +165,5 @@ under the License.
         </executions>
       </plugin>
     </plugins>
-  </build>  
+  </build>
 </project>

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java b/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java
index 1bab212..b5ca481 100644
--- a/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java
+++ b/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java
@@ -6,9 +6,9 @@ package org.apache.maven.wagon.providers.webdav;
  * 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
@@ -25,9 +25,9 @@ import org.apache.maven.wagon.Wagon;
 import org.apache.maven.wagon.http.HttpWagonTestCase;
 import org.apache.maven.wagon.repository.Repository;
 import org.apache.maven.wagon.resource.Resource;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.servlet.Context;
-import org.mortbay.jetty.servlet.ServletHolder;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
 
 import java.io.File;
 import java.io.IOException;
@@ -35,11 +35,13 @@ import java.net.SocketTimeoutException;
 import java.util.List;
 import java.util.Properties;
 
+import javax.servlet.http.HttpServletResponse;
+
 /*
  * WebDAV Wagon Test
- * 
+ *
  * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- * 
+ *
  * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
  */
 public class WebDavWagonTest
@@ -56,20 +58,21 @@ public class WebDavWagonTest
         return "dav";
     }
 
-    protected void createContext( Server server, File repositoryDirectory )
+    protected ServletContextHandler createContext( Server server, File repositoryDirectory )
         throws IOException
     {
-        Context dav = new Context( server, "/", Context.SESSIONS );
+        ServletContextHandler dav = new ServletContextHandler( ServletContextHandler.SESSIONS );
         ServletHolder davServletHolder = new ServletHolder( new DAVServlet() );
         davServletHolder.setInitParameter( "rootPath", repositoryDirectory.getAbsolutePath() );
         davServletHolder.setInitParameter( "xmlOnly", "false" );
         dav.addServlet( davServletHolder, "/*" );
+        return dav;
     }
 
     protected long getExpectedLastModifiedOnGet( Repository repository, Resource resource )
     {
         File file = new File( getDavRepository(), resource.getName() );
-        return ( file.lastModified() / 1000 ) * 1000;
+        return ( file.lastModified() / 1000L ) * 1000L;
     }
 
 
@@ -422,14 +425,14 @@ public class WebDavWagonTest
         {
             assertEquals( "testPreemptiveAuthenticationGet preemptive=true: expected 1 request, got "
                 + sh.handlerRequestResponses, 1, sh.handlerRequestResponses.size() );
-            assertEquals( 200, sh.handlerRequestResponses.get( 0 ).responseCode );
+            assertEquals( HttpServletResponse.SC_OK, sh.handlerRequestResponses.get( 0 ).responseCode );
         }
         else
         {
             assertEquals( "testPreemptiveAuthenticationGet preemptive=false: expected 2 requests (401,200), got "
                 + sh.handlerRequestResponses, 2, sh.handlerRequestResponses.size() );
-            assertEquals( 401, sh.handlerRequestResponses.get( 0 ).responseCode );
-            assertEquals( 200, sh.handlerRequestResponses.get( 1 ).responseCode );
+            assertEquals( HttpServletResponse.SC_UNAUTHORIZED, sh.handlerRequestResponses.get( 0 ).responseCode );
+            assertEquals( HttpServletResponse.SC_OK, sh.handlerRequestResponses.get( 1 ).responseCode );
         }
     }
 
@@ -437,64 +440,70 @@ public class WebDavWagonTest
     {
         if ( preemptive )
         {
-            assertEquals( "testPreemptiveAuthenticationPut preemptive=true: expected 2 requests (200,.), got "
+            assertEquals( "testPreemptiveAuthenticationPut preemptive=true: expected 2 requests (200,201), got "
                 + sh.handlerRequestResponses, 2, sh.handlerRequestResponses.size() );
-            assertEquals( 200, sh.handlerRequestResponses.get( 0 ).responseCode );
+            assertEquals( HttpServletResponse.SC_OK, sh.handlerRequestResponses.get( 0 ).responseCode );
+            assertEquals( HttpServletResponse.SC_CREATED, sh.handlerRequestResponses.get( 1 ).responseCode );
         }
         else
         {
-            assertEquals( "testPreemptiveAuthenticationPut preemptive=false: expected 3 requests (401,200,.), got "
+            assertEquals( "testPreemptiveAuthenticationPut preemptive=false: expected 3 requests (401,200,201), got "
                 + sh.handlerRequestResponses, 3, sh.handlerRequestResponses.size() );
-            assertEquals( 401, sh.handlerRequestResponses.get( 0 ).responseCode );
-            assertEquals( 200, sh.handlerRequestResponses.get( 1 ).responseCode );
+            assertEquals( HttpServletResponse.SC_UNAUTHORIZED, sh.handlerRequestResponses.get( 0 ).responseCode );
+            assertEquals( HttpServletResponse.SC_OK, sh.handlerRequestResponses.get( 1 ).responseCode );
+            assertEquals( HttpServletResponse.SC_CREATED, sh.handlerRequestResponses.get( 2 ).responseCode );
         }
     }
 
 
-    @Override
+    /* This method cannot be reasonable used to represend GET and PUT for WebDAV, it would contain too much
+     * duplicate code. Leave as-is, but don't use it.
+     */
     protected void testPreemptiveAuthentication( TestSecurityHandler sh, boolean preemptive )
     {
         if ( preemptive )
         {
             assertEquals( "testPreemptiveAuthentication preemptive=false: expected 2 requests (200,.), got "
                 + sh.handlerRequestResponses, 2, sh.handlerRequestResponses.size() );
-            assertEquals( 200, sh.handlerRequestResponses.get( 0 ).responseCode );
+            assertEquals( HttpServletResponse.SC_OK, sh.handlerRequestResponses.get( 0 ).responseCode );
         }
         else
         {
             assertEquals( "testPreemptiveAuthentication preemptive=false: expected 3 requests (401,200,200), got "
                 + sh.handlerRequestResponses, 3, sh.handlerRequestResponses.size() );
-            assertEquals( 401, sh.handlerRequestResponses.get( 0 ).responseCode );
-            assertEquals( 200, sh.handlerRequestResponses.get( 1 ).responseCode );
-            assertEquals( 200, sh.handlerRequestResponses.get( 2 ).responseCode );
+            assertEquals( HttpServletResponse.SC_UNAUTHORIZED, sh.handlerRequestResponses.get( 0 ).responseCode );
+            assertEquals( HttpServletResponse.SC_OK, sh.handlerRequestResponses.get( 1 ).responseCode );
+            assertEquals( HttpServletResponse.SC_OK, sh.handlerRequestResponses.get( 2 ).responseCode );
 
         }
     }
 
-    protected void checkRequestResponseForRedirectPutFromStreamWithFullUrl( PutHandler putHandler,
-                                                                            RedirectHandler redirectHandler )
+    @Override
+    protected void checkRequestResponseForRedirectPutWithFullUrl( RedirectHandler redirectHandler,
+                                                                  PutHandler putHandler )
     {
         assertEquals( "found:" + putHandler.handlerRequestResponses, 1, putHandler.handlerRequestResponses.size() );
-        assertEquals( "found:" + putHandler.handlerRequestResponses, 201,
+        assertEquals( "found:" + putHandler.handlerRequestResponses, HttpServletResponse.SC_CREATED,
                       putHandler.handlerRequestResponses.get( 0 ).responseCode );
         assertEquals( "found:" + redirectHandler.handlerRequestResponses, 3,
                       redirectHandler.handlerRequestResponses.size() );
-        assertEquals( "found:" + redirectHandler.handlerRequestResponses, 302,
+        assertEquals( "found:" + redirectHandler.handlerRequestResponses, HttpServletResponse.SC_SEE_OTHER,
                       redirectHandler.handlerRequestResponses.get( 0 ).responseCode );
     }
 
-    protected void checkRequestResponseForRedirectPutFromStreamWithRelativeUrl( PutHandler putHandler,
-                                                                                RedirectHandler redirectHandler )
+    @Override
+    protected void checkRequestResponseForRedirectPutWithRelativeUrl( RedirectHandler redirectHandler,
+                                                                      PutHandler putHandler )
     {
         assertEquals( "found:" + putHandler.handlerRequestResponses, 0, putHandler.handlerRequestResponses.size() );
 
         assertEquals( "found:" + redirectHandler.handlerRequestResponses, 4,
                       redirectHandler.handlerRequestResponses.size() );
-        assertEquals( "found:" + redirectHandler.handlerRequestResponses, 302,
+        assertEquals( "found:" + redirectHandler.handlerRequestResponses, HttpServletResponse.SC_SEE_OTHER,
                       redirectHandler.handlerRequestResponses.get( 0 ).responseCode );
-        assertEquals( "found:" + redirectHandler.handlerRequestResponses, 302,
+        assertEquals( "found:" + redirectHandler.handlerRequestResponses, HttpServletResponse.SC_SEE_OTHER,
                       redirectHandler.handlerRequestResponses.get( 1 ).responseCode );
-        assertEquals( "found:" + redirectHandler.handlerRequestResponses, 201,
+        assertEquals( "found:" + redirectHandler.handlerRequestResponses, HttpServletResponse.SC_CREATED,
                       redirectHandler.handlerRequestResponses.get( 3 ).responseCode );
 
     }

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavsWagonTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavsWagonTest.java b/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavsWagonTest.java
index ba18510..2ac44d6 100644
--- a/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavsWagonTest.java
+++ b/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavsWagonTest.java
@@ -1,8 +1,8 @@
 package org.apache.maven.wagon.providers.webdav;
 
-import org.mortbay.jetty.Connector;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.security.SslSocketConnector;
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ssl.SslSocketConnector;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-tcks/wagon-tck-http/pom.xml
----------------------------------------------------------------------
diff --git a/wagon-tcks/wagon-tck-http/pom.xml b/wagon-tcks/wagon-tck-http/pom.xml
index 8c0209f..3186279 100644
--- a/wagon-tcks/wagon-tck-http/pom.xml
+++ b/wagon-tcks/wagon-tck-http/pom.xml
@@ -19,7 +19,7 @@ under the License.
 -->
 <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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  
+
   <parent>
     <groupId>org.apache.maven.wagon</groupId>
     <artifactId>wagon-tcks</artifactId>
@@ -28,7 +28,7 @@ under the License.
   </parent>
 
   <artifactId>wagon-tck-http</artifactId>
-  
+
   <name>Apache Maven Wagon :: HTTP Test Compatibility Kit</name>
 
   <dependencies>
@@ -43,12 +43,12 @@ under the License.
       <version>2.2.2</version>
     </dependency>
     <dependency>
-      <groupId>org.mortbay.jetty</groupId>
-      <artifactId>jetty</artifactId>
+      <groupId>org.eclipse.jetty.aggregate</groupId>
+      <artifactId>jetty-all</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.mortbay.jetty</groupId>
-      <artifactId>servlet-api</artifactId>
+      <groupId>javax.servlet</groupId>
+      <artifactId>javax.servlet-api</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.wagon</groupId>

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5ba0cf33/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/fixture/ServerFixture.java
----------------------------------------------------------------------
diff --git a/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/fixture/ServerFixture.java b/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/fixture/ServerFixture.java
index 9152e34..063f47b 100644
--- a/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/fixture/ServerFixture.java
+++ b/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/fixture/ServerFixture.java
@@ -19,23 +19,24 @@ package org.apache.maven.wagon.tck.http.fixture;
  * under the License.
  */
 
-import org.mortbay.jetty.Connector;
-import org.mortbay.jetty.Handler;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.handler.DefaultHandler;
-import org.mortbay.jetty.handler.HandlerCollection;
-import org.mortbay.jetty.nio.SelectChannelConnector;
-import org.mortbay.jetty.security.Constraint;
-import org.mortbay.jetty.security.ConstraintMapping;
-import org.mortbay.jetty.security.HashUserRealm;
-import org.mortbay.jetty.security.SecurityHandler;
-import org.mortbay.jetty.security.SslSocketConnector;
-import org.mortbay.jetty.servlet.AbstractSessionManager;
-import org.mortbay.jetty.servlet.FilterHolder;
-import org.mortbay.jetty.servlet.FilterMapping;
-import org.mortbay.jetty.servlet.ServletHolder;
-import org.mortbay.jetty.servlet.SessionHandler;
-import org.mortbay.jetty.webapp.WebAppContext;
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.Handler;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.handler.DefaultHandler;
+import org.eclipse.jetty.server.handler.HandlerCollection;
+import org.eclipse.jetty.server.nio.SelectChannelConnector;
+import org.eclipse.jetty.server.session.AbstractSessionManager;
+import org.eclipse.jetty.server.session.SessionHandler;
+import org.eclipse.jetty.security.ConstraintMapping;
+import org.eclipse.jetty.security.ConstraintSecurityHandler;
+import org.eclipse.jetty.security.HashLoginService;
+import org.eclipse.jetty.server.ssl.SslSocketConnector;
+import org.eclipse.jetty.servlet.FilterHolder;
+import org.eclipse.jetty.servlet.FilterMapping;
+import org.eclipse.jetty.servlet.ServletHolder;
+import org.eclipse.jetty.util.security.Constraint;
+import org.eclipse.jetty.util.security.Password;
+import org.eclipse.jetty.webapp.WebAppContext;
 
 import javax.servlet.Filter;
 import javax.servlet.Servlet;
@@ -49,7 +50,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * 
+ *
  */
 public class ServerFixture
 {
@@ -69,9 +70,9 @@ public class ServerFixture
 
     private final WebAppContext webappContext;
 
-    private final HashUserRealm securityRealm;
+    private final HashLoginService loginService;
 
-    private final SecurityHandler securityHandler;
+    private final ConstraintSecurityHandler securityHandler;
 
     private int filterCount = 0;
 
@@ -116,11 +117,11 @@ public class ServerFixture
         cm.setConstraint( constraint );
         cm.setPathSpec( "/protected/*" );
 
-        securityHandler = new SecurityHandler();
+        securityHandler = new ConstraintSecurityHandler();
 
-        securityRealm = new HashUserRealm( "Test Server" );
+        loginService = new HashLoginService( "Test Server" );
 
-        securityHandler.setUserRealm( securityRealm );
+        securityHandler.setLoginService( loginService );
         securityHandler.setConstraintMappings( new ConstraintMapping[]{ cm } );
 
         webappContext = new WebAppContext();
@@ -129,7 +130,7 @@ public class ServerFixture
         File base = getResource( SERVER_ROOT_RESOURCE_PATH );
         logger.info( "docroot: " + base );
         webappContext.setWar( base.getAbsolutePath() );
-        webappContext.addHandler( securityHandler );
+        webappContext.setHandler( securityHandler );
 
         SessionHandler sessionHandler = webappContext.getSessionHandler();
         ( (AbstractSessionManager) sessionHandler.getSessionManager() ).setUsingCookies( false );
@@ -161,8 +162,7 @@ public class ServerFixture
 
     public void addUser( final String user, final String password )
     {
-        securityRealm.put( user, password );
-        securityRealm.addUserToRole( user, "allowed" );
+        loginService.putUser( user, new Password( password ), new String[] { "allowed" } );
     }
 
     public Server getServer()