You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2012/10/24 21:49:28 UTC

svn commit: r1401841 - in /archiva/trunk/archiva-modules/archiva-base: archiva-configuration/src/main/mdo/ archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/ archiva-repository-admin/archiva-reposi...

Author: olamy
Date: Wed Oct 24 19:49:27 2012
New Revision: 1401841

URL: http://svn.apache.org/viewvc?rev=1401841&view=rev
Log:
[MRM-1705] Feature to add custom parameters and/or headers when requesting an external repositories.
backend layer.

Modified:
    archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo
    archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/RemoteRepository.java
    archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java
    archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/test/java/org/apache/archiva/admin/repository/AbstractRepositoryAdminTest.java
    archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/test/java/org/apache/archiva/admin/repository/remote/RemoteRepositoryAdminTest.java

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo?rev=1401841&r1=1401840&r2=1401841&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo Wed Oct 24 19:49:27 2012
@@ -565,6 +565,26 @@
           </description>
           <defaultValue>false</defaultValue>
         </field>
+        <field>
+          <name>extraParameters</name>
+          <version>1.4.0+</version>
+          <type>Map</type>
+          <description>Additionnal request parameters to add to url when requesting remote repositories.</description>
+          <association xml.mapStyle="inline">
+            <type>String</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>extraHeaders</name>
+          <version>1.4.0+</version>
+          <type>Map</type>
+          <description>Additionnal http headers to add to url when requesting remote repositories.</description>
+          <association xml.mapStyle="inline">
+            <type>String</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
       </fields>
       <codeSegments>
         <codeSegment>

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/RemoteRepository.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/RemoteRepository.java?rev=1401841&r1=1401840&r2=1401841&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/RemoteRepository.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/RemoteRepository.java Wed Oct 24 19:49:27 2012
@@ -21,12 +21,14 @@ package org.apache.archiva.admin.model.b
 
 import javax.xml.bind.annotation.XmlRootElement;
 import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * @author Olivier Lamy
  * @since 1.4-M1
  */
-@XmlRootElement ( name = "remoteRepository" )
+@XmlRootElement (name = "remoteRepository")
 public class RemoteRepository
     extends AbstractRepository
     implements Serializable
@@ -64,6 +66,20 @@ public class RemoteRepository
      */
     private boolean downloadRemoteIndexOnStartup = false;
 
+    /**
+     * extraParameters.
+     *
+     * @since 1.4-M4
+     */
+    private Map<String, String> extraParameters;
+
+    /**
+     * extraHeaders.
+     *
+     * @since 1.4-M4
+     */
+    private Map<String, String> extraHeaders;
+
 
     public RemoteRepository()
     {
@@ -196,10 +212,39 @@ public class RemoteRepository
         this.downloadRemoteIndexOnStartup = downloadRemoteIndexOnStartup;
     }
 
+    public Map<String, String> getExtraParameters()
+    {
+        if ( this.extraParameters == null )
+        {
+            this.extraParameters = new HashMap<String, String>();
+        }
+        return extraParameters;
+    }
+
+    public void setExtraParameters( Map<String, String> extraParameters )
+    {
+        this.extraParameters = extraParameters;
+    }
+
+    public Map<String, String> getExtraHeaders()
+    {
+        if ( this.extraHeaders == null )
+        {
+            this.extraHeaders = new HashMap<String, String>();
+        }
+        return extraHeaders;
+    }
+
+    public void setExtraHeaders( Map<String, String> extraHeaders )
+    {
+        this.extraHeaders = extraHeaders;
+    }
+
     @Override
     public String toString()
     {
         final StringBuilder sb = new StringBuilder();
+        sb.append( super.toString() );
         sb.append( "RemoteRepository" );
         sb.append( "{url='" ).append( url ).append( '\'' );
         sb.append( ", userName='" ).append( userName ).append( '\'' );
@@ -211,6 +256,8 @@ public class RemoteRepository
         sb.append( ", cronExpression='" ).append( cronExpression ).append( '\'' );
         sb.append( ", remoteDownloadTimeout=" ).append( remoteDownloadTimeout );
         sb.append( ", downloadRemoteIndexOnStartup=" ).append( downloadRemoteIndexOnStartup );
+        sb.append( ", extraParameters=" ).append( extraParameters );
+        sb.append( ", extraHeaders=" ).append( extraHeaders );
         sb.append( '}' );
         return sb.toString();
     }

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java?rev=1401841&r1=1401840&r2=1401841&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java Wed Oct 24 19:49:27 2012
@@ -134,6 +134,8 @@ public class DefaultRemoteRepositoryAdmi
             remoteRepository.setDownloadRemoteIndexOnStartup(
                 repositoryConfiguration.isDownloadRemoteIndexOnStartup() );
             remoteRepository.setDescription( repositoryConfiguration.getDescription() );
+            remoteRepository.setExtraHeaders( repositoryConfiguration.getExtraHeaders() );
+            remoteRepository.setExtraParameters( repositoryConfiguration.getExtraParameters() );
             remoteRepositories.add( remoteRepository );
         }
         return remoteRepositories;
@@ -356,6 +358,8 @@ public class DefaultRemoteRepositoryAdmi
         remoteRepositoryConfiguration.setDownloadRemoteIndexOnStartup(
             remoteRepository.isDownloadRemoteIndexOnStartup() );
         remoteRepositoryConfiguration.setDescription( remoteRepository.getDescription() );
+        remoteRepositoryConfiguration.setExtraHeaders( remoteRepository.getExtraHeaders() );
+        remoteRepositoryConfiguration.setExtraParameters( remoteRepository.getExtraParameters() );
         return remoteRepositoryConfiguration;
     }
 

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/test/java/org/apache/archiva/admin/repository/AbstractRepositoryAdminTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/test/java/org/apache/archiva/admin/repository/AbstractRepositoryAdminTest.java?rev=1401841&r1=1401840&r2=1401841&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/test/java/org/apache/archiva/admin/repository/AbstractRepositoryAdminTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/test/java/org/apache/archiva/admin/repository/AbstractRepositoryAdminTest.java Wed Oct 24 19:49:27 2012
@@ -27,11 +27,12 @@ import org.apache.archiva.admin.model.ma
 import org.apache.archiva.admin.model.proxyconnector.ProxyConnectorAdmin;
 import org.apache.archiva.admin.model.proxyconnectorrule.ProxyConnectorRuleAdmin;
 import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin;
+import org.apache.archiva.redback.role.RoleManager;
 import org.apache.archiva.redback.users.User;
+import org.apache.archiva.redback.users.memory.SimpleUser;
+import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
-import org.apache.archiva.redback.role.RoleManager;
-import org.apache.archiva.redback.users.memory.SimpleUser;
 import org.junit.runner.RunWith;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -39,20 +40,22 @@ import org.springframework.test.context.
 
 import javax.inject.Inject;
 import java.io.File;
+import java.util.HashMap;
 import java.util.List;
-import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
+import java.util.Map;
 
 /**
  * @author Olivier Lamy
  */
-@RunWith( ArchivaSpringJUnit4ClassRunner.class )
-@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } )
+@RunWith (ArchivaSpringJUnit4ClassRunner.class)
+@ContextConfiguration (locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" })
 public abstract class AbstractRepositoryAdminTest
     extends TestCase
 {
     protected Logger log = LoggerFactory.getLogger( getClass() );
 
-    public static final String APPSERVER_BASE_PATH = AbstractRepositoryAdminTest.fixPath( System.getProperty( "appserver.base" ) );
+    public static final String APPSERVER_BASE_PATH =
+        AbstractRepositoryAdminTest.fixPath( System.getProperty( "appserver.base" ) );
 
     @Inject
     protected MockAuditListener mockAuditListener;
@@ -77,19 +80,20 @@ public abstract class AbstractRepository
         AuditInformation auditInformation = new AuditInformation( getFakeUser(), "archiva-localhost" );
         return auditInformation;
     }
-    
-   // make a nice repo path to allow unit test to run
-    private static String fixPath ( String path ) 
+
+    // make a nice repo path to allow unit test to run
+    private static String fixPath( String path )
     {
         String SPACE = " ";
         if ( path.contains( SPACE ) )
         {
-            LoggerFactory.getLogger( AbstractRepositoryAdminTest.class.getName() ).error( 
-                    "You are building and testing  with {appserver.base}: \n " + path + " containing space. Consider relocating." );
+            LoggerFactory.getLogger( AbstractRepositoryAdminTest.class.getName() ).error(
+                "You are building and testing  with {appserver.base}: \n " + path
+                    + " containing space. Consider relocating." );
         }
-        return path.replaceAll( SPACE, "&amp;20");
+        return path.replaceAll( SPACE, "&amp;20" );
     }
-    
+
     protected User getFakeUser()
     {
         SimpleUser user = new SimpleUser()
@@ -142,7 +146,7 @@ public abstract class AbstractRepository
         return getRemoteRepository( "foo" );
     }
 
-    protected RemoteRepository getRemoteRepository(String id)
+    protected RemoteRepository getRemoteRepository( String id )
     {
         RemoteRepository remoteRepository = new RemoteRepository();
         remoteRepository.setUrl( "http://foo.com/maven-it-rocks" );
@@ -153,6 +157,12 @@ public abstract class AbstractRepository
         remoteRepository.setId( id );
         remoteRepository.setRemoteDownloadNetworkProxyId( "foo" );
         remoteRepository.setDescription( "cool apache repo" );
+        Map<String, String> extraParameters = new HashMap<String, String>();
+        extraParameters.put( "foo", "bar" );
+        remoteRepository.setExtraParameters( extraParameters );
+        Map<String, String> extraHeaders = new HashMap<String, String>();
+        extraHeaders.put( "beer", "wine" );
+        remoteRepository.setExtraHeaders( extraHeaders );
         return remoteRepository;
     }
 }

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/test/java/org/apache/archiva/admin/repository/remote/RemoteRepositoryAdminTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/test/java/org/apache/archiva/admin/repository/remote/RemoteRepositoryAdminTest.java?rev=1401841&r1=1401840&r2=1401841&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/test/java/org/apache/archiva/admin/repository/remote/RemoteRepositoryAdminTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/test/java/org/apache/archiva/admin/repository/remote/RemoteRepositoryAdminTest.java Wed Oct 24 19:49:27 2012
@@ -75,6 +75,11 @@ public class RemoteRepositoryAdminTest
         assertEquals( getRemoteRepository().getName(), repo.getName() );
         assertEquals( getRemoteRepository().getTimeout(), repo.getTimeout() );
         assertEquals( getRemoteRepository().getDescription(), repo.getDescription() );
+        assertEquals( 1, remoteRepository.getExtraHeaders().size() );
+        assertEquals( "wine", remoteRepository.getExtraHeaders().get( "beer" ) );
+
+        assertEquals( 1, remoteRepository.getExtraParameters().size() );
+        assertEquals( "bar", remoteRepository.getExtraParameters().get( "foo" ) );
 
         remoteRepositoryAdmin.deleteRemoteRepository( "foo", getFakeAuditInformation() );