Author: jdcasey
Date: Mon Jul 13 20:42:21 2009
New Revision: 793706

URL: http://svn.apache.org/viewvc?rev=793706&view=rev
Log:
[MNG-4228] Fixing ITs after changing wagon manager to use mappings to lookup 
specific wagon component role-hints to use for a protocol. Also, using 
ComponentDescriptor lookup instead of component lookup to find extension wagons 
to register.

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/main/java/org/apache/maven/artifact/manager/WagonManager.java
    
maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/main/resources/META-INF/plexus/components.xml
    
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-core/pom.xml
    
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
    
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/resources/META-INF/plexus/components.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=793706&r1=793705&r2=793706&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
 Mon Jul 13 20:42:21 2009
@@ -83,9 +83,7 @@
 
     private static final String MAVEN_ARTIFACT_PROPERTIES = 
"META-INF/maven/org.apache.maven/maven-artifact/pom.properties";
 
-    public static final String DELEGATE_PROPERTY_BASE = "maven.wagon.";
-
-    private static final String WAGON_IMPL_CONFIGURATION = "wagonImpl";
+    private static final String WAGON_PROVIDER_CONFIGURATION = "wagonProvider";
 
     private static int anonymousMirrorIdSeed = 0;
     
@@ -118,6 +116,8 @@
     private RepositoryPermissions defaultRepositoryPermissions;
 
     private String httpUserAgent;
+    
+    private WagonProviderMapping providerMapping = new 
DefaultWagonProviderMapping();
 
     // TODO: this leaks the component in the public api - it is never released 
back to the container
     public Wagon getWagon( Repository repository )
@@ -178,7 +178,7 @@
             for ( int i = 0; i < dom.getChildCount(); i++ )
             {
                 Xpp3Dom domChild = dom.getChild( i );
-                if ( WAGON_IMPL_CONFIGURATION.equals( domChild.getName() ) )
+                if ( WAGON_PROVIDER_CONFIGURATION.equals( domChild.getName() ) 
)
                 {
                     impl = domChild.getValue();
                     dom.removeChild( i );
@@ -191,7 +191,7 @@
         
         if ( impl == null )
         {
-            impl = System.getProperty( DELEGATE_PROPERTY_BASE + protocol, null 
);
+            impl = providerMapping.getWagonProvider( protocol );
         }
         
         return impl == null ? protocol : protocol + "-" + impl;
@@ -1205,6 +1205,11 @@
 
         serverConfigurationMap.put( repositoryId, xmlConf );
     }
+    
+    public void setWagonProvider( String protocol, String provider )
+    {
+        providerMapping.setWagonProvider( protocol, provider );
+    }
 
     public void setDefaultRepositoryPermissions( RepositoryPermissions 
defaultRepositoryPermissions )
     {

Modified: 
maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.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/WagonManager.java?rev=793706&r1=793705&r2=793706&view=diff
==============================================================================
--- 
maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.java
 (original)
+++ 
maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.java
 Mon Jul 13 20:42:21 2009
@@ -126,4 +126,11 @@
     void setDefaultRepositoryPermissions( RepositoryPermissions permissions );
 
     ArtifactRepository getMirrorRepository( ArtifactRepository repository );
+    
+    /**
+     * Set the provider name for selecting one Wagon from a range of possible 
implementations for
+     * the give protocol. This provider name is combined with the protocol to 
form the role-hint
+     * for Wagon lookup, using the format: <code>[protocol]-[provider]</code>.
+     */
+    void setWagonProvider( String protocol, String provider );
 }

Modified: 
maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/main/resources/META-INF/plexus/components.xml
URL: 
http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/main/resources/META-INF/plexus/components.xml?rev=793706&r1=793705&r2=793706&view=diff
==============================================================================
--- 
maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/main/resources/META-INF/plexus/components.xml
 (original)
+++ 
maven/maven-2/branches/maven-2.2.x/maven-artifact-manager/src/main/resources/META-INF/plexus/components.xml
 Mon Jul 13 20:42:21 2009
@@ -31,8 +31,19 @@
         <requirement>
           
<role>org.apache.maven.artifact.repository.ArtifactRepositoryFactory</role>
         </requirement>
+        <requirement>
+          <role>org.apache.maven.artifact.manager.WagonProviderMapping</role>
+          <role-hint>maven</role-hint>
+        </requirement>
       </requirements>
     </component>
+    
+    <!-- This component should be redefined to introduce new default provider 
mappings in maven-core. -->
+    <component>
+      <role>org.apache.maven.artifact.manager.WagonProviderMapping</role>
+      <role-hint>maven</role-hint>
+      
<implementation>org.apache.maven.artifact.manager.DefaultWagonProviderMapping</implementation>
+    </component>
 
     <component>
       
<role>org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager</role>

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=793706&r1=793705&r2=793706&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
 Mon Jul 13 20:42:21 2009
@@ -19,9 +19,6 @@
  * under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
-
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.metadata.ArtifactMetadata;
@@ -40,6 +37,9 @@
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 
+import java.io.File;
+import java.io.IOException;
+
 import edu.umd.cs.mtc.MultithreadedTestCase;
 import edu.umd.cs.mtc.TestFramework;
 

Modified: maven/maven-2/branches/maven-2.2.x/maven-core/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-core/pom.xml?rev=793706&r1=793705&r2=793706&view=diff
==============================================================================
--- maven/maven-2/branches/maven-2.2.x/maven-core/pom.xml (original)
+++ maven/maven-2/branches/maven-2.2.x/maven-core/pom.xml Mon Jul 13 20:42:21 
2009
@@ -43,6 +43,15 @@
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-parameter-documenter</artifactId>
     </dependency>
+    <!-- This is bizarre, but it seems that putting this AFTER wagon-http
+         causes the shade plugin to completely SKIP adding some parts of
+         commons-httpclient. At least the RequestEntity interface is missing
+         in the resulting output, and ITs will start failing left and right...
+    -->
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-http-lightweight</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.apache.maven.wagon</groupId>
       <artifactId>wagon-webdav-jackrabbit</artifactId>
@@ -65,13 +74,6 @@
         </exclusion>
       </exclusions>
     </dependency>
-    <!-- NOTE: Listing this last causes it to be the default Wagon 
implementation
-         when the bare protocol is used to lookup the http/https wagons.
-    -->
-    <dependency>
-      <groupId>org.apache.maven.wagon</groupId>
-      <artifactId>wagon-http-lightweight</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-jdk14</artifactId>

Modified: 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: 
http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=793706&r1=793705&r2=793706&view=diff
==============================================================================
--- 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 (original)
+++ 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 Mon Jul 13 20:42:21 2009
@@ -795,6 +795,19 @@
 
                 wagonManager.addMirror( mirror.getId(), mirror.getMirrorOf(), 
mirror.getUrl() );
             }
+            
+            for ( Object k: executionProperties.keySet() )
+            {
+                String key = (String) k;
+                if ( key.startsWith( "maven.wagon.provider." ) )
+                {
+                    String provider = executionProperties.getProperty( key );
+                    key = key.substring( "maven.wagon.provider.".length() );
+                    
+                    wagonManager.setWagonProvider( key, provider );
+                }
+                
+            }
         }
         finally
         {

Modified: 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/resources/META-INF/plexus/components.xml
URL: 
http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-core/src/main/resources/META-INF/plexus/components.xml?rev=793706&r1=793705&r2=793706&view=diff
==============================================================================
--- 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/resources/META-INF/plexus/components.xml
 (original)
+++ 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/resources/META-INF/plexus/components.xml
 Mon Jul 13 20:42:21 2009
@@ -624,15 +624,28 @@
     </component>    
     
     <component>
+      <role>org.apache.maven.artifact.manager.WagonProviderMapping</role>
+      <role-hint>maven</role-hint>
+      
<implementation>org.apache.maven.artifact.manager.DefaultWagonProviderMapping</implementation>
+      <configuration>
+        <wagonProviders>
+          <http>lightweight</http>
+          <http>lightweight</http>
+        </wagonProviders>
+      </configuration>
+    </component>
+
+    <!-- TODO: The following wagon component definitions need to be moved into 
the proper wagon-* projects... -->
+    <component>
       <role>org.apache.maven.wagon.Wagon</role>
-      <role-hint>http-sun</role-hint>
+      <role-hint>http-lightweight</role-hint>
       
<implementation>org.apache.maven.wagon.providers.http.LightweightHttpWagon</implementation>
       <instantiation-strategy>per-lookup</instantiation-strategy>
       <description>LightweightHttpWagon</description>
     </component>
     <component>
       <role>org.apache.maven.wagon.Wagon</role>
-      <role-hint>https-sun</role-hint>
+      <role-hint>https-lightweight</role-hint>
       
<implementation>org.apache.maven.wagon.providers.http.LightweightHttpsWagon</implementation>
       <instantiation-strategy>per-lookup</instantiation-strategy>
       <description>LIghtweightHttpsWagon</description>


Reply via email to