You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2009/07/28 21:57:45 UTC
svn commit: r798691 - in
/maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src:
main/java/org/apache/maven/artifact/manager/
test/java/org/apache/maven/artifact/manager/
test/resources/org/apache/maven/artifact/manager/
Author: brett
Date: Tue Jul 28 19:57:44 2009
New Revision: 798691
URL: http://svn.apache.org/viewvc?rev=798691&view=rev
Log:
[MNG-4254] ensure the wagon provider is used for all requests, not just the first one
Added:
maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/WagonAWithImplementationHint.java
- copied, changed from r798556, maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/WagonA.java
Modified:
maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/DefaultWagonManagerTest.java
maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/resources/org/apache/maven/artifact/manager/DefaultWagonManagerTest.xml
Modified: maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
URL: http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java?rev=798691&r1=798690&r2=798691&view=diff
==============================================================================
--- maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java (original)
+++ maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java Tue Jul 28 19:57:44 2009
@@ -103,6 +103,8 @@
/** Map( String, XmlPlexusConfiguration ) with the repository id and the wagon configuration */
private Map<String, XmlPlexusConfiguration> serverConfigurationMap = new HashMap<String, XmlPlexusConfiguration>();
+ private Map<String, String> serverWagonProviderMap = new HashMap<String, String>();
+
private TransferListener downloadMonitor;
private boolean online = true;
@@ -170,28 +172,18 @@
// TODO: Implement a better way to get the hint, via settings.xml or something.
String impl = null;
- if ( repositoryId != null && serverConfigurationMap.containsKey( repositoryId ) )
+ if ( repositoryId != null && serverWagonProviderMap.containsKey( repositoryId ) )
{
- XmlPlexusConfiguration config = serverConfigurationMap.get( repositoryId );
-
- Xpp3Dom dom = config.getXpp3Dom();
- for ( int i = 0; i < dom.getChildCount(); i++ )
- {
- Xpp3Dom domChild = dom.getChild( i );
- if ( WAGON_PROVIDER_CONFIGURATION.equals( domChild.getName() ) )
- {
- impl = domChild.getValue();
- dom.removeChild( i );
- break;
- }
-
- i++;
- }
+ impl = serverWagonProviderMap.get( repositoryId );
+ getLogger().debug( "Using Wagon implementation " + impl + " from settings for server " + repositoryId );
}
-
- if ( impl == null )
+ else
{
impl = providerMapping.getWagonProvider( protocol );
+ if ( impl != null )
+ {
+ getLogger().debug( "Using Wagon implementation " + impl + " from default mapping for protocol " + protocol );
+ }
}
return impl == null ? protocol : protocol + "-" + impl;
@@ -1203,6 +1195,19 @@
final XmlPlexusConfiguration xmlConf = new XmlPlexusConfiguration( configuration );
+ for ( int i = 0; i < configuration.getChildCount(); i++ )
+ {
+ Xpp3Dom domChild = configuration.getChild( i );
+ if ( WAGON_PROVIDER_CONFIGURATION.equals( domChild.getName() ) )
+ {
+ serverWagonProviderMap.put( repositoryId, domChild.getValue() );
+ configuration.removeChild( i );
+ break;
+ }
+
+ i++;
+ }
+
serverConfigurationMap.put( repositoryId, xmlConf );
}
Modified: maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/DefaultWagonManagerTest.java
URL: http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/DefaultWagonManagerTest.java?rev=798691&r1=798690&r2=798691&view=diff
==============================================================================
--- maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/DefaultWagonManagerTest.java (original)
+++ maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/DefaultWagonManagerTest.java Tue Jul 28 19:57:44 2009
@@ -566,6 +566,39 @@
assertEquals( "Check configuration for wagon, protocol=" + protocol, s, wagon.getConfigurableField() );
}
+ public void testWagonWithImplHint()
+ throws Exception
+ {
+ Repository repository = new Repository();
+
+ repository.setId( "id" );
+
+ repository.setProtocol( "a" );
+
+ Xpp3Dom conf = new Xpp3Dom( "configuration" );
+
+ Xpp3Dom configurableField = new Xpp3Dom( "wagonProvider" );
+
+ configurableField.setValue( "foo" );
+
+ conf.addChild( configurableField );
+
+ wagonManager.addConfiguration( repository.getId(), conf );
+
+ WagonMock wagon = (WagonMock) wagonManager.getWagon( repository );
+
+ assertNotNull( "Check wagon", wagon );
+
+ assertEquals( "Check configuration for wagon", WagonAWithImplementationHint.class, wagon.getClass() );
+
+ // try again to check configuration alterations don't modify behaviour
+ wagon = (WagonMock) wagonManager.getWagon( repository );
+
+ assertNotNull( "Check wagon", wagon );
+
+ assertEquals( "Check configuration for wagon", WagonAWithImplementationHint.class, wagon.getClass() );
+ }
+
private final class ArtifactRepositoryLayoutStub
implements ArtifactRepositoryLayout
{
Copied: maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/WagonAWithImplementationHint.java (from r798556, maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/WagonA.java)
URL: http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/WagonAWithImplementationHint.java?p2=maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/WagonAWithImplementationHint.java&p1=maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/WagonA.java&r1=798556&r2=798691&rev=798691&view=diff
==============================================================================
--- maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/WagonA.java (original)
+++ maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/WagonAWithImplementationHint.java Tue Jul 28 19:57:44 2009
@@ -26,7 +26,7 @@
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
* @version $Id$
*/
-public class WagonA
+public class WagonAWithImplementationHint
extends WagonMock
{
public String[] getSupportedProtocols()
Modified: maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/resources/org/apache/maven/artifact/manager/DefaultWagonManagerTest.xml
URL: http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/resources/org/apache/maven/artifact/manager/DefaultWagonManagerTest.xml?rev=798691&r1=798690&r2=798691&view=diff
==============================================================================
--- maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/resources/org/apache/maven/artifact/manager/DefaultWagonManagerTest.xml (original)
+++ maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/test/resources/org/apache/maven/artifact/manager/DefaultWagonManagerTest.xml Tue Jul 28 19:57:44 2009
@@ -26,6 +26,11 @@
</component>
<component>
<role>org.apache.maven.wagon.Wagon</role>
+ <role-hint>a-foo</role-hint>
+ <implementation>org.apache.maven.artifact.manager.WagonAWithImplementationHint</implementation>
+ </component>
+ <component>
+ <role>org.apache.maven.wagon.Wagon</role>
<role-hint>b1</role-hint>
<implementation>org.apache.maven.artifact.manager.WagonB</implementation>
</component>