You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@continuum.apache.org by Dariusz Nowak <da...@wp.pl> on 2007/09/10 15:26:13 UTC

Problems with MungedHttpsURL

Dear Developers,

For a long time I have tried to be able to add a new Maven2 project from 
our SVN repository.
Unfortunately it was not possible neither in 1.0.2 nor 1.1-b2.

Finally I have found the cause of problems. It is the MungedHttpsURL 
class. I do not know why but it does not work with my company's SVN 
server. Every time I tried to create a new project 401 HTTP error was 
returned to the continuum.

After hacking continuum to use HttpClient everything started to work. 
Attached my changes.

Please let me know what information you need to fix the issue in future 
releases.

BR,
Dariusz


--- 
src/main/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilder.java 
      (revision 572578)
+++ 
src/main/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilder.java 
      (working copy)
@@ -34,6 +34,10 @@
 import java.net.URL;
 import java.net.UnknownHostException;

+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.UsernamePasswordCredentials;
+import org.apache.commons.httpclient.methods.GetMethod;
+
 /**
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
  * @version $Id$
@@ -51,11 +55,32 @@
         getLogger().info( "Downloading " + metadata.toExternalForm() );

         InputStream is = null;
+
+        GetMethod get = null;

         if ( metadata.getProtocol().startsWith( "http" ) )
         {
-            is =
-                new MungedHttpsURL( metadata.toExternalForm(), 
username, password ).getURLConnection().getInputStream();
+
+//            is =
+//                new MungedHttpsURL( metadata.toExternalForm(), 
username, password ).getURLConnection().getInputStream();
+            HttpClient client = new HttpClient();
+
+            getLogger().info("Using HttpClient to get the resource, 
credentials - user: " + username + ", password: " + password);
+
+            if (username != null) {
+                client.getState().setCredentials(null, null, new 
UsernamePasswordCredentials(username, password));
+            }
+
+            get = new GetMethod(metadata.toExternalForm());
+
+            if (username != null) {
+                get.setDoAuthentication(true);
+            }
+            int status = client.executeMethod(get);
+
+            getLogger().info("Request status: " + status);
+
+            is = get.getResponseBodyAsStream();
         }
         else
         {
@@ -115,6 +140,9 @@
         is.close();

         writer.close();
+        if (get != null) {
+                get.releaseConnection();
+        }

         return file;
     }



Re: Problems with MungedHttpsURL

Posted by Emmanuel Venisse <em...@venisse.net>.
Can you file an issue and attach to it your patch? We'll look at it later.

Thanks
Emmanuel

Dariusz Nowak a écrit :
> Dear Developers,
> 
> For a long time I have tried to be able to add a new Maven2 project from 
> our SVN repository.
> Unfortunately it was not possible neither in 1.0.2 nor 1.1-b2.
> 
> Finally I have found the cause of problems. It is the MungedHttpsURL 
> class. I do not know why but it does not work with my company's SVN 
> server. Every time I tried to create a new project 401 HTTP error was 
> returned to the continuum.
> 
> After hacking continuum to use HttpClient everything started to work. 
> Attached my changes.
> 
> Please let me know what information you need to fix the issue in future 
> releases.
> 
> BR,
> Dariusz
> 
> 
> --- 
> src/main/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilder.java 
>       (revision 572578)
> +++ 
> src/main/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilder.java 
>       (working copy)
> @@ -34,6 +34,10 @@
>  import java.net.URL;
>  import java.net.UnknownHostException;
> 
> +import org.apache.commons.httpclient.HttpClient;
> +import org.apache.commons.httpclient.UsernamePasswordCredentials;
> +import org.apache.commons.httpclient.methods.GetMethod;
> +
>  /**
>   * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
>   * @version $Id$
> @@ -51,11 +55,32 @@
>          getLogger().info( "Downloading " + metadata.toExternalForm() );
> 
>          InputStream is = null;
> +
> +        GetMethod get = null;
> 
>          if ( metadata.getProtocol().startsWith( "http" ) )
>          {
> -            is =
> -                new MungedHttpsURL( metadata.toExternalForm(), 
> username, password ).getURLConnection().getInputStream();
> +
> +//            is =
> +//                new MungedHttpsURL( metadata.toExternalForm(), 
> username, password ).getURLConnection().getInputStream();
> +            HttpClient client = new HttpClient();
> +
> +            getLogger().info("Using HttpClient to get the resource, 
> credentials - user: " + username + ", password: " + password);
> +
> +            if (username != null) {
> +                client.getState().setCredentials(null, null, new 
> UsernamePasswordCredentials(username, password));
> +            }
> +
> +            get = new GetMethod(metadata.toExternalForm());
> +
> +            if (username != null) {
> +                get.setDoAuthentication(true);
> +            }
> +            int status = client.executeMethod(get);
> +
> +            getLogger().info("Request status: " + status);
> +
> +            is = get.getResponseBodyAsStream();
>          }
>          else
>          {
> @@ -115,6 +140,9 @@
>          is.close();
> 
>          writer.close();
> +        if (get != null) {
> +                get.releaseConnection();
> +        }
> 
>          return file;
>      }
> 
> 
> 
>