Author: jdcasey
Date: Thu Jul 31 08:41:13 2008
New Revision: 681399

URL: http://svn.apache.org/viewvc?rev=681399&view=rev
Log:
Reinstate wagon 1.0-beta-4.

Modified:
    maven/components/branches/maven-2.0.10-RC/apache-maven/pom.xml
    
maven/components/branches/maven-2.0.10-RC/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
    
maven/components/branches/maven-2.0.10-RC/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/DefaultWagonManagerTest.java
    
maven/components/branches/maven-2.0.10-RC/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/StringWagon.java
    maven/components/branches/maven-2.0.10-RC/maven-core/pom.xml
    
maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
    
maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/MavenArtifactFilterManager.java
    
maven/components/branches/maven-2.0.10-RC/maven-core/src/main/resources/META-INF/plexus/components.xml
    maven/components/branches/maven-2.0.10-RC/pom.xml

Modified: maven/components/branches/maven-2.0.10-RC/apache-maven/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/apache-maven/pom.xml?rev=681399&r1=681398&r2=681399&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.10-RC/apache-maven/pom.xml (original)
+++ maven/components/branches/maven-2.0.10-RC/apache-maven/pom.xml Thu Jul 31 
08:41:13 2008
@@ -46,9 +46,9 @@
                     org.codehaus.plexus:plexus-component-api
                   </exclude>
                   <exclude>classworlds:classworlds</exclude>
+                  <exclude>xml-apis:xml-apis</exclude>
                   <exclude>junit:junit</exclude>
                   <exclude>jmock:jmock</exclude>
-                  <exclude>xml-apis:xml-apis</exclude>
                 </excludes>
               </artifactSet>
               <relocations>
@@ -69,6 +69,20 @@
                 <relocation>
                   <pattern>org.apache.commons.logging</pattern>
                 </relocation>
+
+                                <!-- For jsch wagon -->
+                <relocation>
+                  <pattern>com.jcraft</pattern>
+                </relocation>
+
+                                <!-- For wagon API -->
+                <relocation>
+                  <pattern>org.cyberneko</pattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.apache.xerces</pattern>
+                </relocation>
+
                 <relocation>
                   <pattern>org.codehaus.plexus.util</pattern>
                   <excludes>

Modified: 
maven/components/branches/maven-2.0.10-RC/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java?rev=681399&r1=681398&r2=681399&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.0.10-RC/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
 (original)
+++ 
maven/components/branches/maven-2.0.10-RC/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
 Thu Jul 31 08:41:13 2008
@@ -36,6 +36,7 @@
 import org.apache.maven.wagon.events.TransferListener;
 import org.apache.maven.wagon.observers.ChecksumObserver;
 import org.apache.maven.wagon.proxy.ProxyInfo;
+import org.apache.maven.wagon.proxy.ProxyInfoProvider;
 import org.apache.maven.wagon.repository.Repository;
 import org.apache.maven.wagon.repository.RepositoryPermissions;
 import org.codehaus.plexus.PlexusConstants;
@@ -50,11 +51,15 @@
 import org.codehaus.plexus.context.ContextException;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
+import 
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
 import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.security.NoSuchAlgorithmException;
@@ -64,16 +69,19 @@
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import java.util.Set;
 
 public class DefaultWagonManager
     extends AbstractLogEnabled
-    implements WagonManager, Contextualizable
+    implements WagonManager, Contextualizable, Initializable
 {
     private static final String WILDCARD = "*";
 
     private static final String EXTERNAL_WILDCARD = "external:*";
 
+    private static final String MAVEN_ARTIFACT_PROPERTIES = 
"META-INF/maven/org.apache.maven/maven-artifact/pom.properties";
+
     private static int anonymousMirrorIdSeed = 0;
     
     private PlexusContainer container;
@@ -104,6 +112,8 @@
 
     private RepositoryPermissions defaultRepositoryPermissions;
 
+    private String httpUserAgent;
+
     // TODO: this leaks the component in the public api - it is never released 
back to the container
     public Wagon getWagon( Repository repository )
         throws UnsupportedProtocolException, WagonConfigurationException
@@ -117,7 +127,7 @@
 
         Wagon wagon = getWagon( protocol );
 
-        configureWagon( wagon, repository.getId() );
+        configureWagon( wagon, repository.getId(), protocol );
 
         return wagon;
     }
@@ -241,7 +251,14 @@
                 }
             }
 
-            wagon.connect( artifactRepository, getAuthenticationInfo( 
repository.getId() ), getProxy( protocol ) );
+//            wagon.connect( artifactRepository, getAuthenticationInfo( 
repository.getId() ), getProxy( protocol ) );
+            wagon.connect( artifactRepository, getAuthenticationInfo( 
repository.getId() ), new ProxyInfoProvider()
+            {
+                public ProxyInfo getProxyInfo( String protocol )
+                {
+                    return getProxy( protocol );
+                }
+            });
 
             wagon.put( source, remotePath );
 
@@ -421,7 +438,13 @@
             getLogger().debug( "Connecting to repository: \'" + 
repository.getId() + "\' with url: \'" + repository.getUrl() + "\'." );
             
             wagon.connect( new Repository( repository.getId(), 
repository.getUrl() ),
-                           getAuthenticationInfo( repository.getId() ), 
getProxy( protocol ) );
+                           getAuthenticationInfo( repository.getId() ), new 
ProxyInfoProvider()
+            {
+                public ProxyInfo getProxyInfo( String protocol )
+                {
+                    return getProxy( protocol );
+                }
+            });
 
             boolean firstRun = true;
             boolean retry = true;
@@ -1007,21 +1030,27 @@
                                  ArtifactRepository repository )
         throws WagonConfigurationException
     {
-        configureWagon( wagon, repository.getId() );
+        configureWagon( wagon, repository.getId(), repository.getProtocol() );
     }
 
     private void configureWagon( Wagon wagon,
-                                 String repositoryId )
+                                 String repositoryId,
+                                 String protocol )
         throws WagonConfigurationException
     {
-        if ( serverConfigurationMap.containsKey( repositoryId ) )
+        PlexusConfiguration config = (PlexusConfiguration) 
serverConfigurationMap.get( repositoryId ); 
+        if ( protocol.startsWith( "http" ) || protocol.startsWith( "dav" ) )
+        {
+            config = updateUserAgentForHttp( wagon, config );
+        }
+        
+        if ( config != null )
         {
             ComponentConfigurator componentConfigurator = null;
             try
             {
                 componentConfigurator = (ComponentConfigurator) 
container.lookup( ComponentConfigurator.ROLE );
-                componentConfigurator.configureComponent( wagon, 
(PlexusConfiguration) serverConfigurationMap
-                    .get( repositoryId ), container.getContainerRealm() );
+                componentConfigurator.configureComponent( wagon, config, 
container.getContainerRealm() );
             }
             catch ( final ComponentLookupException e )
             {
@@ -1051,6 +1080,69 @@
         }
     }
 
+    // TODO: Remove this, once the maven-shade-plugin 1.2 release is out, 
allowing configuration of httpHeaders in the components.xml
+    private PlexusConfiguration updateUserAgentForHttp( Wagon wagon, 
PlexusConfiguration config )
+    {
+        if ( config == null )
+        {
+            config = new XmlPlexusConfiguration( "configuration" );
+        }
+        
+        if ( httpUserAgent != null )
+        {
+            try
+            {
+                wagon.getClass().getMethod( "setHttpHeaders", new Class[]{ 
Properties.class } );
+                
+                PlexusConfiguration headerConfig = config.getChild( 
"httpHeaders", true );
+                PlexusConfiguration[] children = headerConfig.getChildren( 
"property" );
+                boolean found = false;
+                
+                getLogger().debug( "Checking for pre-existing User-Agent 
configuration." );
+                for ( int i = 0; i < children.length; i++ )
+                {
+                    PlexusConfiguration c = children[i].getChild( "name", 
false );
+                    if ( c != null && "User-Agent".equals( c.getValue( null ) 
) )
+                    {
+                        found = true;
+                        break;
+                    }
+                }
+                
+                if ( !found )
+                {
+                    getLogger().debug( "Adding User-Agent configuration." );
+                    XmlPlexusConfiguration propertyConfig = new 
XmlPlexusConfiguration( "property" );
+                    headerConfig.addChild( propertyConfig );
+                    
+                    XmlPlexusConfiguration nameConfig = new 
XmlPlexusConfiguration( "name" );
+                    nameConfig.setValue( "User-Agent" );
+                    propertyConfig.addChild( nameConfig );
+                    
+                    XmlPlexusConfiguration versionConfig = new 
XmlPlexusConfiguration( "value" );
+                    versionConfig.setValue( httpUserAgent );
+                    propertyConfig.addChild( versionConfig );
+                }
+                else
+                {
+                    getLogger().debug( "User-Agent configuration found." );
+                }
+            }
+            catch ( SecurityException e )
+            {
+                getLogger().debug( "setHttpHeaders method not accessible on 
wagon: " + wagon + "; skipping User-Agent configuration." );
+                // forget it. this method is public, if it exists.
+            }
+            catch ( NoSuchMethodException e )
+            {
+                getLogger().debug( "setHttpHeaders method not found on wagon: 
" + wagon + "; skipping User-Agent configuration." );
+                // forget it.
+            }
+        }
+        
+        return config;
+    }
+
     public void addConfiguration( String repositoryId,
                                   Xpp3Dom configuration )
     {
@@ -1068,4 +1160,58 @@
     {
         this.defaultRepositoryPermissions = defaultRepositoryPermissions;
     }
+
+    // TODO: Remove this, once the maven-shade-plugin 1.2 release is out, 
allowing configuration of httpHeaders in the components.xml
+    public void initialize()
+        throws InitializationException
+    {
+        if ( httpUserAgent == null )
+        {
+            InputStream resourceAsStream = null;
+            try
+            {
+                Properties properties = new Properties();
+                resourceAsStream = 
getClass().getClassLoader().getResourceAsStream( MAVEN_ARTIFACT_PROPERTIES );
+
+                if ( resourceAsStream != null )
+                {
+                    try
+                    {
+                        properties.load( resourceAsStream );
+
+                        httpUserAgent =
+                            "maven-artifact/" + properties.getProperty( 
"version" ) + " (Java "
+                                + System.getProperty( "java.version" ) + "; " 
+ System.getProperty( "os.name" ) + " "
+                                + System.getProperty( "os.version" ) + ")";
+                    }
+                    catch ( IOException e )
+                    {
+                        getLogger().warn(
+                                          "Failed to load Maven artifact 
properties from:\n" + MAVEN_ARTIFACT_PROPERTIES
+                                              + "\n\nUser-Agent HTTP header 
may be incorrect for artifact resolution." );
+                    }
+                }
+            }
+            finally
+            {
+                IOUtil.close( resourceAsStream );
+            }
+        }
+    }
+    
+    /**
+     * [EMAIL PROTECTED]
+     */
+    public void setHttpUserAgent( String userAgent )
+    {
+        this.httpUserAgent = userAgent;
+    }
+    
+    /**
+     * [EMAIL PROTECTED]
+     */
+    public String getHttpUserAgent()
+    {
+        return httpUserAgent;
+    }
 }

Modified: 
maven/components/branches/maven-2.0.10-RC/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/DefaultWagonManagerTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/DefaultWagonManagerTest.java?rev=681399&r1=681398&r2=681399&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.0.10-RC/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/DefaultWagonManagerTest.java
 (original)
+++ 
maven/components/branches/maven-2.0.10-RC/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/DefaultWagonManagerTest.java
 Thu Jul 31 08:41:13 2008
@@ -53,7 +53,7 @@
 public class DefaultWagonManagerTest
     extends PlexusTestCase
 {
-    private DefaultWagonManager wagonManager;
+    private WagonManager wagonManager;
 
     private TransferListener transferListener = new Debug();
 
@@ -64,7 +64,7 @@
     {
         super.setUp();
 
-        wagonManager = (DefaultWagonManager) lookup( WagonManager.ROLE );
+        wagonManager = (WagonManager) lookup( WagonManager.ROLE );
         
         artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
     }

Modified: 
maven/components/branches/maven-2.0.10-RC/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/StringWagon.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/StringWagon.java?rev=681399&r1=681398&r2=681399&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.0.10-RC/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/StringWagon.java
 (original)
+++ 
maven/components/branches/maven-2.0.10-RC/maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/StringWagon.java
 Thu Jul 31 08:41:13 2008
@@ -19,6 +19,8 @@
  * under the License.
  */
 
+import java.io.File;
+import java.io.InputStream;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -29,7 +31,9 @@
 import org.apache.maven.wagon.StreamWagon;
 import org.apache.maven.wagon.TransferFailedException;
 import org.apache.maven.wagon.authentication.AuthenticationException;
+import org.apache.maven.wagon.authorization.AuthorizationException;
 import org.apache.maven.wagon.resource.Resource;
+import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringInputStream;
 import org.codehaus.plexus.util.StringOutputStream;
 
@@ -54,7 +58,7 @@
     }
 
     public void fillInputData( InputData inputData )
-        throws TransferFailedException, ResourceDoesNotExistException
+        throws TransferFailedException, ResourceDoesNotExistException, 
AuthorizationException
     {
         Resource resource = inputData.getResource();
 
@@ -88,11 +92,4 @@
     {
         expectedContent.clear();        
     }
-
-    public void openConnection()
-        throws ConnectionException, AuthenticationException
-    {
-        // TODO Auto-generated method stub
-        
-    }
 }

Modified: maven/components/branches/maven-2.0.10-RC/maven-core/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-core/pom.xml?rev=681399&r1=681398&r2=681399&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.10-RC/maven-core/pom.xml (original)
+++ maven/components/branches/maven-2.0.10-RC/maven-core/pom.xml Thu Jul 31 
08:41:13 2008
@@ -25,7 +25,7 @@
     </dependency>
     <dependency>
       <groupId>org.apache.maven.wagon</groupId>
-      <artifactId>wagon-webdav</artifactId>
+      <artifactId>wagon-webdav-jackrabbit</artifactId>
       <scope>runtime</scope>
     </dependency>
     <dependency>

Modified: 
maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=681399&r1=681398&r2=681399&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 (original)
+++ 
maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 Thu Jul 31 08:41:13 2008
@@ -21,8 +21,10 @@
 
 
 import org.apache.maven.artifact.manager.WagonManager;
+import org.apache.maven.artifact.manager.DefaultWagonManager;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
 import org.apache.maven.execution.BuildFailure;
 import org.apache.maven.execution.DefaultMavenExecutionRequest;
@@ -602,6 +604,49 @@
     private void resolveParameters( Settings settings )
         throws ComponentLookupException, ComponentLifecycleException, 
SettingsConfigurationException
     {
+        // TODO: remove when components.xml can be used to configure this 
instead
+        try
+        {
+            DefaultWagonManager wagonManager = (DefaultWagonManager) 
container.lookup( WagonManager.ROLE );
+            
+            String oldUserAgent = wagonManager.getHttpUserAgent();
+            int firstSpace = oldUserAgent == null ? -1 : oldUserAgent.indexOf( 
" " );
+            
+            StringBuffer buffer = new StringBuffer();
+            
+            buffer.append( "Apache-Maven/" );
+            
+            ArtifactVersion version = 
runtimeInformation.getApplicationVersion();
+            if ( version != null )
+            {
+                buffer.append( version.getMajorVersion() );
+                buffer.append( '.' );
+                buffer.append( version.getMinorVersion() );
+            }
+            else
+            {
+                buffer.append( "unknown" );
+            }
+            
+            buffer.append( ' ' );
+            if ( firstSpace > -1 )
+            {
+                buffer.append( oldUserAgent.substring( firstSpace + 1 ) );
+                buffer.append( ' ' );
+                buffer.append( oldUserAgent.substring( 0, firstSpace ) );
+            }
+            else
+            {
+                buffer.append( oldUserAgent );
+            }
+            
+            wagonManager.setHttpUserAgent(  buffer.toString() );
+        }
+        catch ( ClassCastException e )
+        {
+            // ignore
+        }
+
         WagonManager wagonManager = (WagonManager) container.lookup( 
WagonManager.ROLE );
 
         try

Modified: 
maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/MavenArtifactFilterManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/MavenArtifactFilterManager.java?rev=681399&r1=681398&r2=681399&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/MavenArtifactFilterManager.java
 (original)
+++ 
maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/MavenArtifactFilterManager.java
 Thu Jul 31 08:41:13 2008
@@ -66,7 +66,6 @@
         artifacts.add( "commons-cli" );
         artifacts.add( "doxia-sink-api" );
         artifacts.add( "doxia-logging-api" );
-        artifacts.add( "jsch" );
         artifacts.add( "maven-artifact" );
         artifacts.add( "maven-artifact-manager" );
         artifacts.add( "maven-core" );
@@ -84,10 +83,7 @@
         artifacts.add( "maven-settings" );
         artifacts.add( "plexus-container-default" );
         artifacts.add( "plexus-interactivity-api" );
-        //adding shared/maven-toolchain project here, even though not part of 
the default 
-        //distro yet.
         artifacts.add( "maven-toolchain" );
-        //artifacts.add( "plexus-utils" );
         artifacts.add( "wagon-provider-api" );
         return artifacts;
     }

Modified: 
maven/components/branches/maven-2.0.10-RC/maven-core/src/main/resources/META-INF/plexus/components.xml
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-core/src/main/resources/META-INF/plexus/components.xml?rev=681399&r1=681398&r2=681399&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.0.10-RC/maven-core/src/main/resources/META-INF/plexus/components.xml
 (original)
+++ 
maven/components/branches/maven-2.0.10-RC/maven-core/src/main/resources/META-INF/plexus/components.xml
 Thu Jul 31 08:41:13 2008
@@ -583,5 +583,18 @@
         </requirement>
       </requirements>
     </component>
+    
+    <!--  TODO: Re-enable this once maven-shade-plugin 1.2 is release and can 
be 
+          used to merge this configuration with that of the wagon artifacts.
+          We also need a way not to filter in the os.name, etc during the 
build, just the project version
+    <component>
+      <role>org.apache.maven.artifact.manager.WagonManager</role>
+      <role-hint>default</role-hint>
+      
<implementation>org.apache.maven.artifact.manager.DefaultWagonManager</implementation>
+      <configuration>
+        <httpUserAgent>Apache-Maven/${project.version} 
maven-artifact/${project.version} (Java @java.version@; @os.name@ 
@os.version@)</httpUserAgent>
+      </configuration>
+    </component>
+     -->
   </components>
 </component-set>

Modified: maven/components/branches/maven-2.0.10-RC/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/pom.xml?rev=681399&r1=681398&r2=681399&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.10-RC/pom.xml (original)
+++ maven/components/branches/maven-2.0.10-RC/pom.xml Thu Jul 31 08:41:13 2008
@@ -244,7 +244,7 @@
 
   <properties>
     <mavenVersion>2.0.10-RC4-SNAPSHOT</mavenVersion>
-    <wagonVersion>1.0-beta-2</wagonVersion>
+    <wagonVersion>1.0-beta-4</wagonVersion>
   </properties>
 
     <!--start-->
@@ -404,7 +404,7 @@
       </dependency>
       <dependency>
         <groupId>org.apache.maven.wagon</groupId>
-        <artifactId>wagon-webdav</artifactId>
+        <artifactId>wagon-webdav-jackrabbit</artifactId>
         <version>${wagonVersion}</version>
       </dependency>
       <dependency>
@@ -533,4 +533,4 @@
       </reporting>
     </profile>
   </profiles>
-</project>
\ No newline at end of file
+</project>


Reply via email to