]> source.dussan.org Git - archiva.git/commitdiff
[MRM-1490] Expose Archiva services trough REST : remote repository management availab...
authorOlivier Lamy <olamy@apache.org>
Mon, 5 Sep 2011 13:25:30 +0000 (13:25 +0000)
committerOlivier Lamy <olamy@apache.org>
Mon, 5 Sep 2011 13:25:30 +0000 (13:25 +0000)
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1165278 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/RemoteRepository.java
archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoriesService.java
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/AbstractRestService.java
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRemoteRepositoriesService.java
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/resources/META-INF/spring-context.xml
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/ManagedRepositoriesServiceTest.java
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RemoteRepositoriesServiceTest.java
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RepositoriesServiceTest.java

index 45143630ca5dd79f8fee7945727831eff3af9aaf..2117788ef45ca4f5d9e43a56286c5d455cc19d2a 100644 (file)
@@ -54,6 +54,14 @@ public class RemoteRepository
         this.layout = layout;
     }
 
+    public RemoteRepository( String id, String name, String url, String layout, String userName, String password,
+                             int timeOut )
+    {
+        this( id, name, url, layout );
+        this.userName = userName;
+        this.password = password;
+        this.timeOut = timeOut;
+    }
 
     public String getId()
     {
index f103dfe3bca24454f7bd34c29d7876c80280273f..6d3d9957cdb3c3951ebad265b2284e8d499b2254 100644 (file)
@@ -19,7 +19,6 @@ package org.apache.archiva.rest.api.services;
  * under the License.
  */
 
-import org.apache.archiva.rest.api.model.RemoteRepository;
 import org.apache.archiva.security.common.ArchivaRoleConstants;
 import org.codehaus.plexus.redback.authorization.RedbackAuthorization;
 
@@ -29,7 +28,6 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
-import java.util.List;
 
 /**
  * @author Olivier Lamy
@@ -39,13 +37,6 @@ import java.util.List;
 public interface RepositoriesService
 {
 
-
-    @Path( "getRemoteRepositories" )
-    @GET
-    @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
-    @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
-    List<RemoteRepository> getRemoteRepositories();
-
     @Path( "scanRepository" )
     @GET
     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
index 9c1db9aacb4e453d2c032ea41a720fa5b32d43f7..469f1e0c58697f1fb45840ff5534e9d19eece9e1 100644 (file)
@@ -47,14 +47,4 @@ public abstract class AbstractRestService
         String remoteAddr = redbackRequestInformation == null ? null : redbackRequestInformation.getRemoteAddr();
         return new AuditInformation( user, remoteAddr );
     }
-
-    public List<AuditListener> getAuditListeners()
-    {
-        return auditListeners;
-    }
-
-    public void setAuditListeners( List<AuditListener> auditListeners )
-    {
-        this.auditListeners = auditListeners;
-    }
 }
index b308835310ea56262e0516c7dac0a44e053f6ac6..bd808a2e3f28dd46078cc8f14c2a07e4443bd3e5 100644 (file)
@@ -26,7 +26,6 @@ import org.apache.commons.lang.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.inject.Inject;
-import javax.ws.rs.PathParam;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -58,7 +57,7 @@ public class DefaultRemoteRepositoriesService
         return remoteRepositories;
     }
 
-    public RemoteRepository getRemoteRepository( @PathParam( "repositoryId" ) String repositoryId )
+    public RemoteRepository getRemoteRepository( String repositoryId )
         throws RepositoryAdminException
     {
         List<RemoteRepository> remoteRepositories = getRemoteRepositories();
@@ -72,7 +71,7 @@ public class DefaultRemoteRepositoriesService
         return null;
     }
 
-    public Boolean deleteRemoteRepository( @PathParam( "repositoryId" ) String repositoryId )
+    public Boolean deleteRemoteRepository( String repositoryId )
         throws Exception
     {
         return remoteRepositoryAdmin.deleteRemoteRepository( repositoryId, getAuditInformation() );
index d85c3561e2e3d3a6587cff847b02d646b6aea2b3..5bfec4d4682f45c16ceca51f023d725bcef0fe82 100644 (file)
@@ -84,24 +84,6 @@ public class DefaultRepositoriesService
     @Inject
     private ManagedRepositoryAdmin managedRepositoryAdmin;
 
-
-    public List<RemoteRepository> getRemoteRepositories()
-    {
-        Configuration config = archivaConfiguration.getConfiguration();
-        List<RemoteRepositoryConfiguration> remoteRepoConfigs = config.getRemoteRepositories();
-
-        List<RemoteRepository> remoteRepos = new ArrayList<RemoteRepository>( remoteRepoConfigs.size() );
-
-        for ( RemoteRepositoryConfiguration repoConfig : remoteRepoConfigs )
-        {
-            RemoteRepository repo = new RemoteRepository( repoConfig.getId(), repoConfig.getName(), repoConfig.getUrl(),
-                                                          repoConfig.getLayout() );
-            remoteRepos.add( repo );
-        }
-
-        return remoteRepos;
-    }
-
     // FIXME olamy move this to repository admin component !
     public Boolean scanRepository( String repositoryId, boolean fullScan )
     {
index d4fc609e7c73b9637b180fd632b44bed5c5cddc0..ef5f2f9d68cb9add6b438f19d44bdaec5950cc0d 100644 (file)
@@ -51,6 +51,7 @@
       <ref bean="pingService#rest"/>
       <ref bean="repositoriesService#rest"/>
       <ref bean="managedRepositoriesService#rest"/>
+      <ref bean="remoteRepositoriesService#rest"/>
     </jaxrs:serviceBeans>
 
     <jaxrs:outInterceptors>
index 8f224ee196d0a5f01b910313daaeca2537fd4002..335837356017f3e8e130c55359fdff55f864bb08 100644 (file)
@@ -21,6 +21,7 @@ package org.apache.archiva.rest.services;
 
 import org.apache.archiva.rest.api.services.ManagedRepositoriesService;
 import org.apache.archiva.rest.api.services.PingService;
+import org.apache.archiva.rest.api.services.RemoteRepositoriesService;
 import org.apache.archiva.rest.api.services.RepositoriesService;
 import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
 import org.codehaus.redback.rest.services.AbstractRestServicesTest;
@@ -58,6 +59,13 @@ public abstract class AbstractArchivaRestTest
     {
         return JAXRSClientFactory.create( "http://localhost:" + port + "/services/archivaServices/",
                                           PingService.class );
+    }
+
+    protected RemoteRepositoriesService getRemoteRepositoriesService()
+    {
+        return JAXRSClientFactory.create( "http://localhost:" + port + "/services/archivaServices/",
+                                          RemoteRepositoriesService.class );
+
 
     }
 }
index c25025cc5959ac68fe98fe3a45b3daefe0293260..f5acc4140bc56f52571a3933a590da9b3f1ccf5c 100644 (file)
@@ -50,6 +50,9 @@ public class ManagedRepositoriesServiceTest
         }
         service.addManagedRepository( repo );
         assertNotNull( service.getManagedRepository( repo.getId() ) );
+
+        service.deleteManagedRepository( repo.getId(), true );
+        assertNull( service.getManagedRepository( repo.getId() ) );
     }
 
     @Test
@@ -78,6 +81,10 @@ public class ManagedRepositoriesServiceTest
         assertNotNull( repo );
         assertEquals( "toto", repo.getName() );
 
+
+        service.deleteManagedRepository( repo.getId(), true );
+        assertNull( service.getManagedRepository( repo.getId() ) );
+
     }
 
 
index f6e643d54b00fc969a7381165c89ce153a393e41..c12c20af90a6261ec31dfacad33e19e86a5249ca 100644 (file)
@@ -65,5 +65,87 @@ public class RemoteRepositoriesServiceTest
 
     }
 
+    @Test
+    public void addAndDeleteRemoteRepository()
+        throws Exception
+    {
+        RemoteRepositoriesService service = getRemoteRepositoriesService();
+
+        WebClient.client( service ).header( "Authorization", authorizationHeader );
+
+        int initialSize = service.getRemoteRepositories().size();
+
+        service.addRemoteRepository( getRemoteRepository() );
+
+        assertNotNull( service.getRemoteRepository( "id-new" ) );
+
+        assertEquals( getRemoteRepository().getName(), service.getRemoteRepository( "id-new" ).getName() );
+        assertEquals( getRemoteRepository().getUrl(), service.getRemoteRepository( "id-new" ).getUrl() );
+        assertEquals( getRemoteRepository().getLayout(), service.getRemoteRepository( "id-new" ).getLayout() );
+        assertEquals( getRemoteRepository().getUserName(), service.getRemoteRepository( "id-new" ).getUserName() );
+        assertEquals( getRemoteRepository().getPassword(), service.getRemoteRepository( "id-new" ).getPassword() );
+        assertEquals( getRemoteRepository().getTimeOut(), service.getRemoteRepository( "id-new" ).getTimeOut() );
+
+        assertEquals( initialSize + 1, service.getRemoteRepositories().size() );
+
+        service.deleteRemoteRepository( "id-new" );
+
+        assertNull( service.getRemoteRepository( "id-new" ) );
+
+        assertEquals( initialSize, service.getRemoteRepositories().size() );
+
+    }
+
+    @Test
+    public void addAndUpdateAndDeleteRemoteRepository()
+        throws Exception
+    {
+        RemoteRepositoriesService service = getRemoteRepositoriesService();
+
+        WebClient.client( service ).header( "Authorization", authorizationHeader );
+
+        int initialSize = service.getRemoteRepositories().size();
+
+        service.addRemoteRepository( getRemoteRepository() );
+
+        assertNotNull( service.getRemoteRepository( "id-new" ) );
+
+        assertEquals( getRemoteRepository().getName(), service.getRemoteRepository( "id-new" ).getName() );
+        assertEquals( getRemoteRepository().getUrl(), service.getRemoteRepository( "id-new" ).getUrl() );
+        assertEquals( getRemoteRepository().getLayout(), service.getRemoteRepository( "id-new" ).getLayout() );
+        assertEquals( getRemoteRepository().getUserName(), service.getRemoteRepository( "id-new" ).getUserName() );
+        assertEquals( getRemoteRepository().getPassword(), service.getRemoteRepository( "id-new" ).getPassword() );
+        assertEquals( getRemoteRepository().getTimeOut(), service.getRemoteRepository( "id-new" ).getTimeOut() );
+
+        assertEquals( initialSize + 1, service.getRemoteRepositories().size() );
+
+        RemoteRepository repo = getRemoteRepository();
+        repo.setName( "name changed" );
+        repo.setPassword( "new password" );
+        repo.setUserName( "new username" );
+        repo.setUrl( "http://foo.new.org" );
+
+        service.updateRemoteRepository( repo );
+
+        assertEquals( repo.getName(), service.getRemoteRepository( "id-new" ).getName() );
+        assertEquals( repo.getUrl(), service.getRemoteRepository( "id-new" ).getUrl() );
+        assertEquals( repo.getLayout(), service.getRemoteRepository( "id-new" ).getLayout() );
+        assertEquals( repo.getUserName(), service.getRemoteRepository( "id-new" ).getUserName() );
+        assertEquals( repo.getPassword(), service.getRemoteRepository( "id-new" ).getPassword() );
+        assertEquals( repo.getTimeOut(), service.getRemoteRepository( "id-new" ).getTimeOut() );
+
+        service.deleteRemoteRepository( "id-new" );
+
+        assertNull( service.getRemoteRepository( "id-new" ) );
+
+        assertEquals( initialSize, service.getRemoteRepositories().size() );
+
+    }
+
+    RemoteRepository getRemoteRepository()
+    {
+        return new RemoteRepository( "id-new", "new one", "http://foo.com", "default", "foo", "foopassword", 120 );
+    }
+
 
 }
index 754740cac275c4168dc3489a74e53f8b8f498de5..0d1472654d8e8217fc8c44d2c77539fec7b8b8a7 100644 (file)
@@ -20,7 +20,6 @@ package org.apache.archiva.rest.services;
  */
 
 import org.apache.archiva.rest.api.model.ManagedRepository;
-import org.apache.archiva.rest.api.model.RemoteRepository;
 import org.apache.archiva.rest.api.services.ManagedRepositoriesService;
 import org.apache.archiva.rest.api.services.RepositoriesService;
 import org.apache.cxf.jaxrs.client.ServerWebApplicationException;
@@ -29,7 +28,6 @@ import org.apache.maven.archiva.common.utils.FileUtil;
 import org.junit.Test;
 
 import java.io.File;
-import java.util.List;
 
 /**
  * @author Olivier Lamy
@@ -38,37 +36,6 @@ public class RepositoriesServiceTest
     extends AbstractArchivaRestTest
 {
 
-
-    @Test( expected = ServerWebApplicationException.class )
-    public void listRemoteRepositoriesKarmaFailed()
-        throws Exception
-    {
-        RepositoriesService service = getRepositoriesService();
-        try
-        {
-            assertFalse( service.getRemoteRepositories().isEmpty() );
-        }
-        catch ( ServerWebApplicationException e )
-        {
-            assertEquals( 403, e.getStatus() );
-            throw e;
-        }
-    }
-
-    @Test
-    public void listRemoteRepositoriesKarma()
-        throws Exception
-    {
-        RepositoriesService service = getRepositoriesService();
-
-        WebClient.client( service ).header( "Authorization", authorizationHeader );
-        WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( 300000 );
-        List<RemoteRepository> repos = service.getRemoteRepositories();
-        assertFalse( repos.isEmpty() );
-        log.info( "repos {}", repos );
-
-    }
-
     @Test( expected = ServerWebApplicationException.class )
     public void scanRepoKarmaFailed()
         throws Exception