You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wagon-commits@maven.apache.org by br...@apache.org on 2008/05/27 04:33:48 UTC
svn commit: r660354 - in /maven/wagon/trunk: ./
wagon-provider-api/src/main/java/org/apache/maven/wagon/
wagon-provider-api/src/main/java/org/apache/maven/wagon/proxy/
wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/provider...
Author: brett
Date: Mon May 26 19:33:36 2008
New Revision: 660354
URL: http://svn.apache.org/viewvc?rev=660354&view=rev
Log:
[WAGON-82] make it possible to request a different proxy from the calling application
Submitted by: Jochen Wiedmann
Added:
maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/proxy/ProxyInfoProvider.java (with props)
Modified:
maven/wagon/trunk/pom.xml
maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/AbstractWagon.java
maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/Wagon.java
maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java
maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpsWagon.java
maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
maven/wagon/trunk/wagon-providers/wagon-ssh-ganymed/src/main/java/org/apache/maven/wagon/providers/ssh/ganymed/AbstractGanymedWagon.java
maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java
Modified: maven/wagon/trunk/pom.xml
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/pom.xml?rev=660354&r1=660353&r2=660354&view=diff
==============================================================================
--- maven/wagon/trunk/pom.xml (original)
+++ maven/wagon/trunk/pom.xml Mon May 26 19:33:36 2008
@@ -255,5 +255,8 @@
<contributor>
<name>Jason Dillon</name>
</contributor>
+ <contributor>
+ <name>Jochen Wiedmann</name>
+ </contributor>
</contributors>
</project>
Modified: maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/AbstractWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/AbstractWagon.java?rev=660354&r1=660353&r2=660354&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/AbstractWagon.java (original)
+++ maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/AbstractWagon.java Mon May 26 19:33:36 2008
@@ -29,6 +29,7 @@
import org.apache.maven.wagon.events.TransferEventSupport;
import org.apache.maven.wagon.events.TransferListener;
import org.apache.maven.wagon.proxy.ProxyInfo;
+import org.apache.maven.wagon.proxy.ProxyInfoProvider;
import org.apache.maven.wagon.proxy.ProxyUtils;
import org.apache.maven.wagon.repository.Repository;
import org.apache.maven.wagon.resource.Resource;
@@ -50,7 +51,6 @@
*
* @author <a href="michal.maczka@dimatics.com">Michal Maczka</a>
* @version $Id$
- * @todo [BP] The proxy information should probably be validated to match the wagon type
*/
public abstract class AbstractWagon
implements Wagon
@@ -63,14 +63,14 @@
protected TransferEventSupport transferEventSupport = new TransferEventSupport();
- protected ProxyInfo proxyInfo;
-
protected AuthenticationInfo authenticationInfo;
protected boolean interactive = true;
private int connectionTimeout = 60000;
+ private ProxyInfoProvider proxyInfoProvider;
+
// ----------------------------------------------------------------------
// Accessors
// ----------------------------------------------------------------------
@@ -82,7 +82,7 @@
public ProxyInfo getProxyInfo()
{
- return proxyInfo;
+ return proxyInfoProvider.getProxyInfo( null );
}
public AuthenticationInfo getAuthenticationInfo()
@@ -103,7 +103,7 @@
public void connect( Repository repository )
throws ConnectionException, AuthenticationException
{
- connect( repository, null, null );
+ connect( repository, null, (ProxyInfoProvider) null );
}
public void connect( Repository repository, ProxyInfo proxyInfo )
@@ -112,15 +112,35 @@
connect( repository, null, proxyInfo );
}
+ public void connect( Repository repository, ProxyInfoProvider proxyInfoProvider )
+ throws ConnectionException, AuthenticationException
+ {
+ connect( repository, null, proxyInfoProvider );
+ }
+
public void connect( Repository repository, AuthenticationInfo authenticationInfo )
throws ConnectionException, AuthenticationException
{
- connect( repository, authenticationInfo, null );
+ connect( repository, authenticationInfo, (ProxyInfoProvider) null );
}
public void connect( Repository repository, AuthenticationInfo authenticationInfo, ProxyInfo proxyInfo )
throws ConnectionException, AuthenticationException
{
+ final ProxyInfo proxy = proxyInfo;
+ connect( repository, authenticationInfo, new ProxyInfoProvider()
+ {
+ public ProxyInfo getProxyInfo( String protocol )
+ {
+ return proxy;
+ }
+ } );
+ }
+
+ public void connect( Repository repository, AuthenticationInfo authenticationInfo,
+ ProxyInfoProvider proxyInfoProvider )
+ throws ConnectionException, AuthenticationException
+ {
if ( repository == null )
{
throw new IllegalStateException( "The repository specified cannot be null." );
@@ -148,14 +168,6 @@
// TODO: Do these needs to be fields, or are they only used in openConnection()?
this.authenticationInfo = authenticationInfo;
- this.proxyInfo = null;
- if ( proxyInfo != null )
- {
- if ( !ProxyUtils.validateNonProxyHosts( proxyInfo, this.repository.getHost() ) )
- {
- this.proxyInfo = proxyInfo;
- }
- }
fireSessionOpening();
@@ -753,4 +765,17 @@
{
throw new UnsupportedOperationException( "The wagon you are using has not implemented resourceExists()" );
}
+
+ protected ProxyInfo getProxyInfo( String protocol, String host )
+ {
+ if ( proxyInfoProvider != null )
+ {
+ ProxyInfo proxyInfo = proxyInfoProvider.getProxyInfo( protocol );
+ if ( !ProxyUtils.validateNonProxyHosts( proxyInfo, host ) )
+ {
+ return proxyInfo;
+ }
+ }
+ return null;
+ }
}
Modified: maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/Wagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/Wagon.java?rev=660354&r1=660353&r2=660354&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/Wagon.java (original)
+++ maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/Wagon.java Mon May 26 19:33:36 2008
@@ -25,6 +25,7 @@
import org.apache.maven.wagon.events.SessionListener;
import org.apache.maven.wagon.events.TransferListener;
import org.apache.maven.wagon.proxy.ProxyInfo;
+import org.apache.maven.wagon.proxy.ProxyInfoProvider;
import org.apache.maven.wagon.repository.Repository;
import java.io.File;
@@ -170,11 +171,23 @@
/**
* Initiate the connection to the repository.
*
+ * @param source the repository to connect to
+ * @param proxyInfoProvider the provider to obtain a network proxy to use to connect to the remote repository
+ * @throws ConnectionException if there is a problem connecting
+ * @throws org.apache.maven.wagon.authentication.AuthenticationException
+ * if the credentials for connecting are not sufficient
+ */
+ void connect( Repository source, ProxyInfoProvider proxyInfoProvider )
+ throws ConnectionException, AuthenticationException;
+
+ /**
+ * Initiate the connection to the repository.
+ *
* @param source the repository to connect to
* @param authenticationInfo authentication credentials for connecting
* @throws ConnectionException if there is a problem connecting
* @throws org.apache.maven.wagon.authentication.AuthenticationException
- * if ther credentials for connecting are not sufficient
+ * if the credentials for connecting are not sufficient
*/
void connect( Repository source, AuthenticationInfo authenticationInfo )
throws ConnectionException, AuthenticationException;
@@ -187,7 +200,7 @@
* @param proxyInfo the network proxy to use to connect to the remote repository
* @throws ConnectionException if there is a problem connecting
* @throws org.apache.maven.wagon.authentication.AuthenticationException
- * if ther credentials for connecting are not sufficient
+ * if the credentials for connecting are not sufficient
*/
void connect( Repository source, AuthenticationInfo authenticationInfo, ProxyInfo proxyInfo )
throws ConnectionException, AuthenticationException;
@@ -195,6 +208,19 @@
/**
* Initiate the connection to the repository.
*
+ * @param source the repository to connect to
+ * @param authenticationInfo authentication credentials for connecting
+ * @param proxyInfoProvider the provider to obtain a network proxy to use to connect to the remote repository
+ * @throws ConnectionException if there is a problem connecting
+ * @throws org.apache.maven.wagon.authentication.AuthenticationException
+ * if the credentials for connecting are not sufficient
+ */
+ void connect( Repository source, AuthenticationInfo authenticationInfo, ProxyInfoProvider proxyInfoProvider )
+ throws ConnectionException, AuthenticationException;
+
+ /**
+ * Initiate the connection to the repository.
+ *
* @throws ConnectionException if there is a problem connecting
* @throws org.apache.maven.wagon.authentication.AuthenticationException
* if ther credentials for connecting are not sufficient
Added: maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/proxy/ProxyInfoProvider.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/proxy/ProxyInfoProvider.java?rev=660354&view=auto
==============================================================================
--- maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/proxy/ProxyInfoProvider.java (added)
+++ maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/proxy/ProxyInfoProvider.java Mon May 26 19:33:36 2008
@@ -0,0 +1,33 @@
+package org.apache.maven.wagon.proxy;
+
+/*
+ * 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.
+ */
+
+/**
+ * Interface of an object, which provides the proxy settings. Typically, this is the artifact manager.
+ */
+public interface ProxyInfoProvider
+{
+ /**
+ * Returns the proxy settings for the given protocol.
+ *
+ * @return Proxy settings or null, if no proxy is configured for this protocol.
+ */
+ ProxyInfo getProxyInfo( String protocol );
+}
Propchange: maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/proxy/ProxyInfoProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java?rev=660354&r1=660353&r2=660354&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java Mon May 26 19:33:36 2008
@@ -191,7 +191,7 @@
previousHttpProxyPort = System.getProperty( "http.proxyPort" );
previousProxyExclusions = System.getProperty( "http.nonProxyHosts" );
- final ProxyInfo proxyInfo = this.proxyInfo;
+ final ProxyInfo proxyInfo = getProxyInfo( "http", getRepository().getHost() );
if ( proxyInfo != null )
{
System.setProperty( "http.proxyHost", proxyInfo.getHost() );
Modified: maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpsWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpsWagon.java?rev=660354&r1=660353&r2=660354&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpsWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpsWagon.java Mon May 26 19:33:36 2008
@@ -51,7 +51,7 @@
previousHttpsProxyHost = System.getProperty( "https.proxyHost" );
previousHttpsProxyPort = System.getProperty( "https.proxyPort" );
- final ProxyInfo proxyInfo = this.proxyInfo;
+ final ProxyInfo proxyInfo = getProxyInfo( "https", getRepository().getHost() );
if ( proxyInfo != null )
{
System.setProperty( "https.proxyHost", proxyInfo.getHost() );
Modified: maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java?rev=660354&r1=660353&r2=660354&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java Mon May 26 19:33:36 2008
@@ -49,6 +49,7 @@
import org.apache.maven.wagon.TransferFailedException;
import org.apache.maven.wagon.authorization.AuthorizationException;
import org.apache.maven.wagon.events.TransferEvent;
+import org.apache.maven.wagon.proxy.ProxyInfo;
import org.apache.maven.wagon.repository.Repository;
import org.apache.maven.wagon.resource.Resource;
import org.codehaus.plexus.util.IOUtil;
@@ -94,6 +95,7 @@
HostConfiguration hc = new HostConfiguration();
+ ProxyInfo proxyInfo = getProxyInfo( getRepository().getProtocol(), getRepository().getHost() );
if ( proxyInfo != null )
{
String proxyUsername = proxyInfo.getUserName();
Modified: maven/wagon/trunk/wagon-providers/wagon-ssh-ganymed/src/main/java/org/apache/maven/wagon/providers/ssh/ganymed/AbstractGanymedWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-ganymed/src/main/java/org/apache/maven/wagon/providers/ssh/ganymed/AbstractGanymedWagon.java?rev=660354&r1=660353&r2=660354&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh-ganymed/src/main/java/org/apache/maven/wagon/providers/ssh/ganymed/AbstractGanymedWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh-ganymed/src/main/java/org/apache/maven/wagon/providers/ssh/ganymed/AbstractGanymedWagon.java Mon May 26 19:33:36 2008
@@ -19,11 +19,11 @@
* under the License.
*/
-import ch.ethz.ssh2.Connection;
-import ch.ethz.ssh2.HTTPProxyData;
-import ch.ethz.ssh2.ProxyData;
-import ch.ethz.ssh2.Session;
-import ch.ethz.ssh2.StreamGobbler;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
import org.apache.maven.wagon.CommandExecutionException;
import org.apache.maven.wagon.Streams;
@@ -33,13 +33,14 @@
import org.apache.maven.wagon.providers.ssh.SshWagon;
import org.apache.maven.wagon.providers.ssh.interactive.InteractiveUserInfo;
import org.apache.maven.wagon.providers.ssh.knownhost.KnownHostsProvider;
+import org.apache.maven.wagon.proxy.ProxyInfo;
import org.codehaus.plexus.util.IOUtil;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
+import ch.ethz.ssh2.Connection;
+import ch.ethz.ssh2.HTTPProxyData;
+import ch.ethz.ssh2.ProxyData;
+import ch.ethz.ssh2.Session;
+import ch.ethz.ssh2.StreamGobbler;
/**
* AbstractGanymedWagon
@@ -82,6 +83,8 @@
connection = new Connection( host, port );
+ // TODO: should the protocol be http?
+ ProxyInfo proxyInfo = getProxyInfo( getRepository().getProtocol(), getRepository().getHost() );
if ( proxyInfo != null && proxyInfo.getHost() != null )
{
ProxyData proxy = new HTTPProxyData( proxyInfo.getHost(), proxyInfo.getPort(), proxyInfo.getUserName(),
Modified: maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java?rev=660354&r1=660353&r2=660354&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java Mon May 26 19:33:36 2008
@@ -43,6 +43,7 @@
import org.apache.maven.wagon.providers.ssh.knownhost.KnownHostChangedException;
import org.apache.maven.wagon.providers.ssh.knownhost.KnownHostsProvider;
import org.apache.maven.wagon.providers.ssh.knownhost.UnknownHostException;
+import org.apache.maven.wagon.proxy.ProxyInfo;
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.StringInputStream;
@@ -124,6 +125,8 @@
throw new AuthenticationException( "Cannot connect. Reason: " + e.getMessage(), e );
}
+ // TODO: should the protocol be http? Can then use SOCKS5 has a protocol also. If so, retain "scp" for backwards compat
+ ProxyInfo proxyInfo = getProxyInfo( getRepository().getProtocol(), getRepository().getHost() );
if ( proxyInfo != null && proxyInfo.getHost() != null )
{
Proxy proxy;
---------------------------------------------------------------------
To unsubscribe, e-mail: wagon-commits-unsubscribe@maven.apache.org
For additional commands, e-mail: wagon-commits-help@maven.apache.org