maven-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From vsive...@apache.org
Subject svn commit: r1055397 - in /maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap: DoapMojo.java DoapUtil.java
Date Wed, 05 Jan 2011 10:30:00 GMT
Author: vsiveton
Date: Wed Jan  5 10:29:59 2011
New Revision: 1055397

URL: http://svn.apache.org/viewvc?rev=1055397&view=rev
Log:
MDOAP-35: Fetch file-release url

o ping release url

Modified:
    maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java
    maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java

Modified: maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java?rev=1055397&r1=1055396&r2=1055397&view=diff
==============================================================================
--- maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java
(original)
+++ maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java
Wed Jan  5 10:29:59 2011
@@ -1468,6 +1468,15 @@ public class DoapMojo
                 }
 
                 String fileRelease = repo.getUrl() + "/" + repo.pathOf( artifactRelease );
+                try
+                {
+                    DoapUtil.fetchURL( settings, new URL( fileRelease ) );
+                }
+                catch ( IOException e )
+                {
+                    getLog().debug( "IOException :" + e.getMessage() );
+                    continue;
+                }
                 DoapUtil.writeElement( writer, doapOptions.getXmlnsPrefix(), "file-release",
fileRelease );
 
                 Date releaseDate = null;

Modified: maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java?rev=1055397&r1=1055396&r2=1055397&view=diff
==============================================================================
--- maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java
(original)
+++ maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java
Wed Jan  5 10:29:59 2011
@@ -20,9 +20,12 @@ package org.apache.maven.plugin.doap;
  */
 
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
+import java.net.SocketTimeoutException;
+import java.net.URL;
 import java.text.DateFormat;
 import java.util.ArrayList;
 import java.util.Date;
@@ -37,7 +40,20 @@ import java.util.regex.Pattern;
 import java.util.Set;
 import java.util.Properties;
 
+import org.apache.commons.httpclient.Credentials;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
+import org.apache.commons.httpclient.UsernamePasswordCredentials;
+import org.apache.commons.httpclient.auth.AuthScope;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.httpclient.params.HttpClientParams;
+import org.apache.commons.httpclient.params.HttpMethodParams;
 import org.apache.maven.model.Contributor;
+import org.apache.maven.settings.Proxy;
+import org.apache.maven.settings.Settings;
+import org.apache.maven.wagon.proxy.ProxyInfo;
+import org.apache.maven.wagon.proxy.ProxyUtils;
 import org.codehaus.plexus.i18n.I18N;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
@@ -68,6 +84,9 @@ public class DoapUtil
     /** Magic number to repeat '=' */
     private static final int REPEAT_EQUALS = 21;
 
+    /** The default timeout used when fetching url, i.e. 2000. */
+    public static final int DEFAULT_TIMEOUT = 2000;
+
     /** RDF resource attribute */
     protected static final String RDF_RESOURCE = "rdf:resource";
 
@@ -108,9 +127,11 @@ public class DoapUtil
      *
      * @param writer not null
      * @param comment not null
+     * @throws IllegalArgumentException if comment is null or empty
      * @since 1.1
      */
     public static void writeComment( XMLWriter writer, String comment )
+        throws IllegalArgumentException
     {
         if ( StringUtils.isEmpty( comment ) )
         {
@@ -473,6 +494,95 @@ public class DoapUtil
         return matcher.matches();
     }
 
+    /**
+     * Fetch an URL
+     *
+     * @param settings the user settings used to fetch the url with an active proxy, if defined.
+     * @param url the url to fetch
+     * @throws IOException if any
+     * @see #DEFAULT_TIMEOUT
+     * @since 1.1
+     */
+    public static void fetchURL( Settings settings, URL url )
+        throws IOException
+    {
+        if ( url == null )
+        {
+            throw new IllegalArgumentException( "The url is null" );
+        }
+
+        if ( "file".equals( url.getProtocol() ) )
+        {
+            InputStream in = null;
+            try
+            {
+                in = url.openStream();
+            }
+            finally
+            {
+                IOUtil.close( in );
+            }
+
+            return;
+        }
+
+        // http, https...
+        HttpClient httpClient = new HttpClient( new MultiThreadedHttpConnectionManager()
);
+        httpClient.getHttpConnectionManager().getParams().setConnectionTimeout( DEFAULT_TIMEOUT
);
+        httpClient.getHttpConnectionManager().getParams().setSoTimeout( DEFAULT_TIMEOUT );
+        httpClient.getParams().setBooleanParameter( HttpClientParams.ALLOW_CIRCULAR_REDIRECTS,
true );
+
+        // Some web servers don't allow the default user-agent sent by httpClient
+        httpClient.getParams().setParameter( HttpMethodParams.USER_AGENT,
+                                             "Mozilla/4.0 (compatible; MSIE 6.0; Windows
NT 5.0)" );
+
+        if ( settings != null && settings.getActiveProxy() != null )
+        {
+            Proxy activeProxy = settings.getActiveProxy();
+
+            ProxyInfo proxyInfo = new ProxyInfo();
+            proxyInfo.setNonProxyHosts( activeProxy.getNonProxyHosts() );
+
+            if ( StringUtils.isNotEmpty( activeProxy.getHost() )
+                && !ProxyUtils.validateNonProxyHosts( proxyInfo, url.getHost() )
)
+            {
+                httpClient.getHostConfiguration().setProxy( activeProxy.getHost(), activeProxy.getPort()
);
+
+                if ( StringUtils.isNotEmpty( activeProxy.getUsername() ) && activeProxy.getPassword()
!= null )
+                {
+                    Credentials credentials =
+                        new UsernamePasswordCredentials( activeProxy.getUsername(), activeProxy.getPassword()
);
+
+                    httpClient.getState().setProxyCredentials( AuthScope.ANY, credentials
);
+                }
+            }
+        }
+
+        GetMethod getMethod = new GetMethod( url.toString() );
+        try
+        {
+            int status;
+            try
+            {
+                status = httpClient.executeMethod( getMethod );
+            }
+            catch ( SocketTimeoutException e )
+            {
+                // could be a sporadic failure, one more retry before we give up
+                status = httpClient.executeMethod( getMethod );
+            }
+
+            if ( status != HttpStatus.SC_OK )
+            {
+                throw new FileNotFoundException( url.toString() );
+            }
+        }
+        finally
+        {
+            getMethod.releaseConnection();
+        }
+    }
+
     // ----------------------------------------------------------------------
     // Private methods
     // ----------------------------------------------------------------------



Mime
View raw message