You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2008/12/12 21:29:06 UTC

svn commit: r726112 - in /maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks: Config.java Messages.properties WriteTask.java

Author: ogusakov
Date: Fri Dec 12 12:29:05 2008
New Revision: 726112

URL: http://svn.apache.org/viewvc?rev=726112&view=rev
Log:
[MERCURY-56] adding repo authentication config

Modified:
    maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java
    maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties
    maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java

Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java?rev=726112&r1=726111&r2=726112&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java Fri Dec 12 12:29:05 2008
@@ -1,18 +1,25 @@
 package org.apache.maven.mercury.ant.tasks;
 
 import java.io.File;
+import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Map;
 
 import org.apache.maven.mercury.MavenDependencyProcessor;
 import org.apache.maven.mercury.builder.api.DependencyProcessor;
 import org.apache.maven.mercury.repository.api.Repository;
 import org.apache.maven.mercury.repository.local.m2.LocalRepositoryM2;
 import org.apache.maven.mercury.repository.remote.m2.RemoteRepositoryM2;
+import org.apache.maven.mercury.transport.api.Credentials;
 import org.apache.maven.mercury.transport.api.Server;
+import org.apache.maven.mercury.util.FileUtil;
 import org.apache.maven.mercury.util.Util;
+import org.apache.tools.ant.BuildException;
+import org.codehaus.plexus.lang.DefaultLanguage;
+import org.codehaus.plexus.lang.Language;
 
 /**
  *
@@ -24,12 +31,16 @@
 public class Config
 extends AbstractDataType
 {
+  private static final Language _lang = new DefaultLanguage( Config.class );
+  
   Collection<Repo> _repos;
   
+  Collection<Auth> _auths;
+  
   Collection<Repository> _repositories;
   
   public Collection<Repository> getRepositories()
-  throws MalformedURLException
+  throws BuildException
   {
     if( Util.isEmpty( _repos ) )
       return null;
@@ -53,7 +64,53 @@
       {
         DependencyProcessor dp = new MavenDependencyProcessor();
         
-        Server server = new Server( repo.getId(), new URL( repo._url ) );
+        Server server;
+        try
+        {
+          server = new Server( repo.getId(), new URL( repo._url ) );
+        }
+        catch( MalformedURLException e )
+        {
+          throw new BuildException(e);
+        }
+        
+        if( repo._authid != null )
+        {
+          Auth au = null;
+          
+          if( _auths == null )
+            throw new BuildException( _lang.getMessage( "config.no.auths", repo._authid ) );
+          
+          for( Auth a : _auths )
+            if( repo._authid.equals( a.getId() ) )
+              au = a;
+          
+          if( au == null )
+            throw new BuildException( _lang.getMessage( "config.no.auth.for.id", repo._authid ) );
+          
+          Credentials serverCred = createCredentials( au );
+          
+          server.setServerCredentials( serverCred );
+        }
+        
+        if( repo._proxyauthid != null )
+        {
+          Auth au = null;
+          
+          if( _auths == null )
+            throw new BuildException( _lang.getMessage( "config.no.proxy.auths", repo._proxyauthid ) );
+          
+          for( Auth a : _auths )
+            if( repo._proxyauthid.equals( a.getId() ) )
+              au = a;
+          
+          if( au == null )
+            throw new BuildException( _lang.getMessage( "config.no.proxy.auth.for.id", repo._proxyauthid ) );
+          
+          Credentials proxyCred = createCredentials( au );
+          
+          server.setProxyCredentials( proxyCred );
+        }
         
         RemoteRepositoryM2 r  = new RemoteRepositoryM2( server, dp  );
         
@@ -64,6 +121,31 @@
     return _repositories;
   }
   
+  private static Credentials createCredentials( Auth a )
+  {
+    Credentials cred = null;
+    
+    if( a._certfile != null )
+    {
+      File cf = new File( a._certfile );
+      if( ! cf.exists() )
+        throw new BuildException( _lang.getMessage( "config.no.cert.file", a._certfile ) );
+      
+      try
+      {
+        cred = new Credentials( FileUtil.readRawData( cf ), a._name, a._pass );
+      }
+      catch( IOException e )
+      {
+        throw new BuildException(e);
+      }
+    }
+    else
+      cred = new Credentials( a._name, a._pass );
+    
+    return cred;
+  }
+  
   public Repo createRepo()
   {
     if( _repos == null )
@@ -76,6 +158,18 @@
     return r;
   }
   
+  public Auth createAuth()
+  {
+    if( _auths == null )
+    _auths = new ArrayList<Auth>(4);
+    
+    Auth a = new Auth();
+    
+    _auths.add( a );
+    
+    return a;
+  }
+  
   public class Repo
   extends AbstractDataType
   {

Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties?rev=726112&r1=726111&r2=726112&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties Fri Dec 12 12:29:05 2008
@@ -24,3 +24,9 @@
 write.no.name.no.pom=write task desperately needs either name or pom to deploy file {0} to {1}
 write.no.name.no.pom=write task desperately needs only name or pom, not both, to deploy file {0} to {1}
 write.pom.not.supported=write task does not support pom yet. Saw one deploying file {0} to {1}
+
+config.no.proxy.auths=No authentications are declared. Looking for proxy authid {0}
+config.no.proxy.auth.for.id=No authentications are declared. Looking for proxy auth id {0}
+config.no.auths=No authentications are declared. Looking for auth id {0}
+config.no.auth.for.id=No authentications are declared. Looking for auth id {0}
+config.no.cert.file=cert file {0} does not exist

Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java?rev=726112&r1=726111&r2=726112&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java Fri Dec 12 12:29:05 2008
@@ -80,15 +80,7 @@
       
       Config conf = (Config)o;
       
-      Collection<Repository> repos;
-      try
-      {
-        repos = conf.getRepositories();
-      }
-      catch( MalformedURLException e )
-      {
-        throw new BuildException( e );
-      }
+      Collection<Repository> repos = conf.getRepositories();
       
       if( Util.isEmpty( repos ) )
         continue;