You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by de...@apache.org on 2008/03/12 00:25:30 UTC
svn commit: r636147 - in /maven/plugins/trunk/maven-site-plugin/src:
main/java/org/apache/maven/plugins/site/
test/java/org/apache/maven/plugins/site/
Author: dennisl
Date: Tue Mar 11 16:25:22 2008
New Revision: 636147
URL: http://svn.apache.org/viewvc?rev=636147&view=rev
Log:
[MSITE-211] Can't deploy site using site:deploy due to a ProxyHTTP error
Submitted by: Cyrille Le Clerc
Reviewed by: Dennis Lundberg
o I modified the handling of wildcards and the associated tests.
Added:
maven/plugins/trunk/maven-site-plugin/src/test/java/org/apache/maven/plugins/site/SiteDeployMojoTest.java (with props)
Modified:
maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteDeployMojo.java
maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteStageDeployMojo.java
Modified: maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteDeployMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteDeployMojo.java?rev=636147&r1=636146&r2=636147&view=diff
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteDeployMojo.java (original)
+++ maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteDeployMojo.java Tue Mar 11 16:25:22 2008
@@ -23,6 +23,7 @@
import java.util.HashMap;
import java.util.Map;
+import org.apache.commons.lang.StringUtils;
import org.apache.maven.artifact.manager.WagonConfigurationException;
import org.apache.maven.artifact.manager.WagonManager;
import org.apache.maven.model.DistributionManagement;
@@ -30,7 +31,6 @@
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.project.MavenProject;
-import org.apache.maven.settings.Proxy;
import org.apache.maven.settings.Settings;
import org.apache.maven.wagon.CommandExecutionException;
import org.apache.maven.wagon.CommandExecutor;
@@ -56,11 +56,11 @@
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
/**
- * Deploys website using scp/file protocol.
+ * Deploys the site using scp/file protocol.
* For scp protocol, website files are packaged into zip archive,
- * then archive is transfred to remote host, nextly it is un-archived.
+ * then the archive is transfered to the remote host, next it is un-archived.
* This method of deployment should normally be much faster
- * then making file by file copy. For file protocol, the files are copied
+ * then making a file by file copy. For file protocol, the files are copied
* directly to the destination directory.
*
* @author <a href="mailto:michal@org.codehaus.org">Michal Maczka</a>
@@ -171,7 +171,7 @@
wagon.addTransferListener( debug );
- ProxyInfo proxyInfo = getProxyInfo( settings );
+ ProxyInfo proxyInfo = getProxyInfo( repository, wagonManager );
if ( proxyInfo != null )
{
wagon.connect( repository, wagonManager.getAuthenticationInfo( id ), proxyInfo );
@@ -229,27 +229,65 @@
}
/**
- * Convenience method to map a <code>Proxy</code> object from the user system settings to a
- * <code>ProxyInfo</code> object.
- *
- * @return a proxyInfo object instancied or null if no active proxy is define in the settings.xml
+ * <p>
+ * Get the <code>ProxyInfo</code> of the proxy associated with the <code>host</code>
+ * and the <code>protocol</code> of the given <code>repository</code>
+ * </p>
+ * <p>
+ * Extract from <a href="http://java.sun.com/j2se/1.5.0/docs/guide/net/properties.html">
+ * J2SE Doc : Networking Properties - nonProxyHosts</a> : "The value can be a list of hosts,
+ * each separated by a |, and in addition a wildcard character (*) can be used for matching"
+ * </p>
+ * <p>
+ * Defensively support for comma (",") and semi colon (";") in addition to pipe ("|") as separator.
+ * </p>
+ *
+ * @return a ProxyInfo object instantiated or <code>null</code> if no matching proxy is found
*/
- public static ProxyInfo getProxyInfo( Settings settings )
+ public static ProxyInfo getProxyInfo( Repository repository, WagonManager wagonManager )
{
- ProxyInfo proxyInfo = null;
- if ( settings != null && settings.getActiveProxy() != null )
- {
- Proxy settingsProxy = settings.getActiveProxy();
+ ProxyInfo proxyInfo = wagonManager.getProxy( repository.getProtocol() );
- proxyInfo = new ProxyInfo();
- proxyInfo.setHost( settingsProxy.getHost() );
- proxyInfo.setType( settingsProxy.getProtocol() );
- proxyInfo.setPort( settingsProxy.getPort() );
- proxyInfo.setNonProxyHosts( settingsProxy.getNonProxyHosts() );
- proxyInfo.setUserName( settingsProxy.getUsername() );
- proxyInfo.setPassword( settingsProxy.getPassword() );
+ if ( proxyInfo == null )
+ {
+ return null;
}
+ String host = repository.getHost();
+ String nonProxyHostsAsString = proxyInfo.getNonProxyHosts();
+ String[] nonProxyHosts = StringUtils.split( nonProxyHostsAsString, ",;|" );
+ for ( int i = 0; i < nonProxyHosts.length; i++ )
+ {
+ String nonProxyHost = nonProxyHosts[i];
+ if ( StringUtils.contains( nonProxyHost, "*" ) )
+ {
+ // Handle wildcard at the end, beginning or middle of the nonProxyHost
+ String nonProxyHostPrefix = StringUtils.substringBefore( nonProxyHost, "*" );
+ String nonProxyHostSuffix = StringUtils.substringAfter( nonProxyHost, "*" );
+ // prefix*
+ if ( StringUtils.isNotEmpty(nonProxyHostPrefix) && host.startsWith( nonProxyHostPrefix )
+ && StringUtils.isEmpty(nonProxyHostSuffix) )
+ {
+ return null;
+ }
+ // *suffix
+ if ( StringUtils.isEmpty(nonProxyHostPrefix)
+ && StringUtils.isNotEmpty(nonProxyHostSuffix) && host.endsWith( nonProxyHostSuffix ))
+ {
+ return null;
+ }
+ // prefix*suffix
+ if ( StringUtils.isNotEmpty(nonProxyHostPrefix) && host.startsWith( nonProxyHostPrefix )
+ && StringUtils.isNotEmpty(nonProxyHostSuffix) && host.endsWith( nonProxyHostSuffix ))
+ {
+ return null;
+ }
+ }
+ else if ( host.equals( nonProxyHost ) )
+ {
+ return null;
+ }
+ }
return proxyInfo;
}
Modified: maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteStageDeployMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteStageDeployMojo.java?rev=636147&r1=636146&r2=636147&view=diff
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteStageDeployMojo.java (original)
+++ maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteStageDeployMojo.java Tue Mar 11 16:25:22 2008
@@ -119,7 +119,7 @@
wagon.addTransferListener( debug );
- ProxyInfo proxyInfo = SiteDeployMojo.getProxyInfo( settings );
+ ProxyInfo proxyInfo = SiteDeployMojo.getProxyInfo( repository, wagonManager );
if ( proxyInfo != null )
{
wagon.connect( repository, wagonManager.getAuthenticationInfo( id ), proxyInfo );
Added: maven/plugins/trunk/maven-site-plugin/src/test/java/org/apache/maven/plugins/site/SiteDeployMojoTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-site-plugin/src/test/java/org/apache/maven/plugins/site/SiteDeployMojoTest.java?rev=636147&view=auto
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/src/test/java/org/apache/maven/plugins/site/SiteDeployMojoTest.java (added)
+++ maven/plugins/trunk/maven-site-plugin/src/test/java/org/apache/maven/plugins/site/SiteDeployMojoTest.java Tue Mar 11 16:25:22 2008
@@ -0,0 +1,123 @@
+package org.apache.maven.plugins.site;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+import org.apache.maven.artifact.manager.DefaultWagonManager;
+import org.apache.maven.artifact.manager.WagonManager;
+import org.apache.maven.wagon.proxy.ProxyInfo;
+import org.apache.maven.wagon.repository.Repository;
+
+/**
+ * @author <a href="mailto:cleclerc@xebia.fr">Cyrille Le Clerc</a>
+ */
+public class SiteDeployMojoTest
+ extends TestCase
+{
+ WagonManager wagonManager;
+
+ Repository repository;
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ wagonManager = new DefaultWagonManager();
+ repository = new Repository( "my-repository", "scp://repository-host/var/maven2" );
+ }
+
+ public void testGetProxyInfoNoProxyForRepositoryProtocol()
+ {
+ wagonManager.addProxy( "http", "proxy-host", 8080, "my-user", "my-password", null );
+ ProxyInfo proxyInfo = SiteDeployMojo.getProxyInfo( repository, wagonManager );
+ assertNull( "ProxyInfo must be null because http != scp", proxyInfo );
+ }
+
+ public void testGetProxyInfoForRepositoryHostExactlyMatchesNonProxyHosts()
+ {
+ wagonManager.addProxy( "scp", "localhost", 8080, "my-user", "my-password",
+ "a-host,repository-host;another-host" );
+ ProxyInfo proxyInfo = SiteDeployMojo.getProxyInfo( repository, wagonManager );
+ assertNull( "ProxyInfo must be null because 'repository-host' in nonProxyHosts list", proxyInfo );
+ }
+
+ public void testGetProxyInfoForRepositoryHostWildcardMatchNonProxyHosts1()
+ {
+ wagonManager.addProxy( "scp", "localhost", 8080, "my-user", "my-password", "a-host|repository*|another-host" );
+ ProxyInfo proxyInfo = SiteDeployMojo.getProxyInfo( repository, wagonManager );
+ assertNull( "ProxyInfo must be null because 'repository-host' in nonProxyHosts list", proxyInfo );
+ }
+
+ public void testGetProxyInfoForRepositoryHostWildcardMatchNonProxyHosts2()
+ {
+ wagonManager.addProxy( "scp", "localhost", 8080, "my-user", "my-password", "*host" );
+ ProxyInfo proxyInfo = SiteDeployMojo.getProxyInfo( repository, wagonManager );
+ assertNull( "ProxyInfo must be null because 'repository-host' in nonProxyHosts list", proxyInfo );
+ }
+
+ public void testGetProxyInfoForRepositoryHostWildcardMatchNonProxyHosts3()
+ {
+ wagonManager.addProxy( "scp", "localhost", 8080, "my-user", "my-password", "repository*host" );
+ ProxyInfo proxyInfo = SiteDeployMojo.getProxyInfo( repository, wagonManager );
+ assertNull( "ProxyInfo must be null because 'repository-host' in nonProxyHosts list", proxyInfo );
+ }
+
+ public void testGetProxyInfoForRepositoryHostWildcardNoMatchNonProxyHosts1()
+ {
+ wagonManager.addProxy( "scp", "localhost", 8080, "my-user", "my-password", "mycompany*" );
+ ProxyInfo proxyInfo = SiteDeployMojo.getProxyInfo( repository, wagonManager );
+ assertNotNull( "ProxyInfo must be found because 'repository-host' not in nonProxyHosts list", proxyInfo );
+ }
+
+ public void testGetProxyInfoForRepositoryHostWildcardNoMatchNonProxyHosts2()
+ {
+ wagonManager.addProxy( "scp", "localhost", 8080, "my-user", "my-password", "*mycompany" );
+ ProxyInfo proxyInfo = SiteDeployMojo.getProxyInfo( repository, wagonManager );
+ assertNotNull( "ProxyInfo must be found because 'repository-host' not in nonProxyHosts list", proxyInfo );
+ }
+
+ public void testGetProxyInfoForRepositoryHostWildcardNoMatchNonProxyHosts3()
+ {
+ wagonManager.addProxy( "scp", "localhost", 8080, "my-user", "my-password", "repository*mycompany" );
+ ProxyInfo proxyInfo = SiteDeployMojo.getProxyInfo( repository, wagonManager );
+ assertNotNull( "ProxyInfo must be found because 'repository-host' not in nonProxyHosts list", proxyInfo );
+ }
+
+ public void testGetProxyInfoForRepositoryHostWildcardNoMatchNonProxyHosts4()
+ {
+ wagonManager.addProxy( "scp", "localhost", 8080, "my-user", "my-password", "mycompany*host" );
+ ProxyInfo proxyInfo = SiteDeployMojo.getProxyInfo( repository, wagonManager );
+ assertNotNull( "ProxyInfo must be found because 'repository-host' not in nonProxyHosts list", proxyInfo );
+ }
+
+ public void testGetProxyInfoForRepositoryHostWildcardNoMatchNonProxyHosts5()
+ {
+ wagonManager.addProxy( "scp", "localhost", 8080, "my-user", "my-password", "mycompany*mycompany" );
+ ProxyInfo proxyInfo = SiteDeployMojo.getProxyInfo( repository, wagonManager );
+ assertNotNull( "ProxyInfo must be found because 'repository-host' not in nonProxyHosts list", proxyInfo );
+ }
+
+ public void testGetProxyInfoFound()
+ {
+ wagonManager.addProxy( "scp", "localhost", 8080, "my-user", "my-password", "an-host|another-host" );
+ ProxyInfo proxyInfo = SiteDeployMojo.getProxyInfo( repository, wagonManager );
+ assertNotNull( "ProxyInfo must be found because 'repository-host' not in nonProxyHosts list", proxyInfo );
+ }
+}
Propchange: maven/plugins/trunk/maven-site-plugin/src/test/java/org/apache/maven/plugins/site/SiteDeployMojoTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-site-plugin/src/test/java/org/apache/maven/plugins/site/SiteDeployMojoTest.java
------------------------------------------------------------------------------
svn:keywords = Date Revision Author Id