diff options
author | Olivier Lamy <olamy@apache.org> | 2011-09-09 14:41:04 +0000 |
---|---|---|
committer | Olivier Lamy <olamy@apache.org> | 2011-09-09 14:41:04 +0000 |
commit | b31467ae8de9ccf3f435459c834167b307cf2093 (patch) | |
tree | 1225445c33b6da860ae272047525d43e445e8f03 /archiva-modules/archiva-web | |
parent | 97de6d311871bf0576c083c2228175ef14268bea (diff) | |
download | archiva-b31467ae8de9ccf3f435459c834167b307cf2093.tar.gz archiva-b31467ae8de9ccf3f435459c834167b307cf2093.zip |
[MRM-1512] api to configure RepositoryScanningConfiguration : refactor to remove full access to bean with a large tree of nesteed beans. use simple methods to update fields of RepositoryScanningConfiguration.
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1167224 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'archiva-modules/archiva-web')
6 files changed, 98 insertions, 107 deletions
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaAdministrationService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaAdministrationService.java index 6f24e382d..81912a8a7 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaAdministrationService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaAdministrationService.java @@ -20,7 +20,6 @@ package org.apache.archiva.rest.api.services; import org.apache.archiva.rest.api.model.FileType; import org.apache.archiva.rest.api.model.LegacyArtifactPath; -import org.apache.archiva.rest.api.model.RepositoryScanning; import org.apache.archiva.security.common.ArchivaRoleConstants; import org.codehaus.plexus.redback.authorization.RedbackAuthorization; @@ -62,20 +61,6 @@ public interface ArchivaAdministrationService Boolean deleteLegacyArtifactPath( @QueryParam( "path" ) String path ) throws ArchivaRestServiceException; - @Path( "getRepositoryScanning" ) - @GET - @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) - @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) - RepositoryScanning getRepositoryScanning() - throws ArchivaRestServiceException; - - @Path( "updateRepositoryScanning" ) - @POST - @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) - @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) - void updateRepositoryScanning( RepositoryScanning repositoryScanning ) - throws ArchivaRestServiceException; - @Path( "addFileTypePattern" ) @GET @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) @@ -95,7 +80,7 @@ public interface ArchivaAdministrationService @GET @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) - FileType getFileType( String fileTypeId ) + FileType getFileType( @QueryParam( "fileTypeId" ) String fileTypeId ) throws ArchivaRestServiceException; @Path( "addFileType" ) @@ -131,14 +116,14 @@ public interface ArchivaAdministrationService @GET @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) - Boolean removeKnownContentConsumer( @QueryParam( "knownContentConsumer" ) String knownContentConsumer ) + Boolean removeKnownContentConsumer( @QueryParam( "knownContentConsumer" ) String knownContentConsumer ) throws ArchivaRestServiceException; @Path( "addInvalidContentConsumer" ) @GET @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) - Boolean addInvalidContentConsumer(@QueryParam( "invalidContentConsumer" ) String invalidContentConsumer ) + Boolean addInvalidContentConsumer( @QueryParam( "invalidContentConsumer" ) String invalidContentConsumer ) throws ArchivaRestServiceException; @Path( "setInvalidContentConsumers" ) @@ -152,6 +137,27 @@ public interface ArchivaAdministrationService @GET @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) - Boolean removeInvalidContentConsumer(@QueryParam( "invalidContentConsumer" ) String invalidContentConsumer ) + Boolean removeInvalidContentConsumer( @QueryParam( "invalidContentConsumer" ) String invalidContentConsumer ) + throws ArchivaRestServiceException; + + @Path( "getFileTypes" ) + @GET + @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) + @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) + List<FileType> getFileTypes() + throws ArchivaRestServiceException; + + @Path( "getKnownContentConsumers" ) + @GET + @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) + @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) + List<String> getKnownContentConsumers() + throws ArchivaRestServiceException; + + @Path( "getInvalidContentConsumers" ) + @GET + @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) + @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) + List<String> getInvalidContentConsumers() throws ArchivaRestServiceException; } diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml index ed2191792..0f19a4681 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml @@ -43,6 +43,11 @@ </dependency> <dependency> <groupId>org.apache.archiva</groupId> + <artifactId>archiva-configuration</artifactId> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> <artifactId>audit</artifactId> </dependency> <dependency> diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaAdministrationService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaAdministrationService.java index 6aa60ea19..89ffb59b0 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaAdministrationService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaAdministrationService.java @@ -18,19 +18,18 @@ package org.apache.archiva.rest.services; * under the License. */ -import net.sf.beanlib.provider.BeanTransformer; import net.sf.beanlib.provider.replicator.BeanReplicator; import org.apache.archiva.admin.repository.RepositoryAdminException; import org.apache.archiva.admin.repository.admin.ArchivaAdministration; import org.apache.archiva.rest.api.model.FileType; import org.apache.archiva.rest.api.model.LegacyArtifactPath; -import org.apache.archiva.rest.api.model.RepositoryScanning; import org.apache.archiva.rest.api.services.ArchivaAdministrationService; import org.apache.archiva.rest.api.services.ArchivaRestServiceException; import org.springframework.stereotype.Service; import javax.inject.Inject; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -93,51 +92,6 @@ public class DefaultArchivaAdministrationService } } - public RepositoryScanning getRepositoryScanning() - throws ArchivaRestServiceException - { - try - { - BeanTransformer beanTransformer = new BeanTransformer() - { - @Override - protected <T> T createToInstance( Object from, Class<T> toClass ) - throws InstantiationException, IllegalAccessException, SecurityException, NoSuchMethodException - { - if ( from.getClass().equals( org.apache.maven.archiva.configuration.FileType.class ) ) - { - return (T) new FileType(); - } - return super.createToInstance( from, toClass ); - } - }; - BeanReplicator beanReplicator = new BeanReplicator( beanTransformer ); - - RepositoryScanning repositoryScanning = - beanReplicator.replicateBean( archivaAdministration.getRepositoryScanning(), RepositoryScanning.class ); - - return repositoryScanning; - } - catch ( RepositoryAdminException e ) - { - throw new ArchivaRestServiceException( e.getMessage() ); - } - } - - public void updateRepositoryScanning( RepositoryScanning repositoryScanning ) - throws ArchivaRestServiceException - { - try - { - archivaAdministration.updateRepositoryScanning( new BeanReplicator().replicateBean( getRepositoryScanning(), - org.apache.archiva.admin.repository.admin.RepositoryScanning.class ), - getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - throw new ArchivaRestServiceException( e.getMessage() ); - } - } public Boolean addFileTypePattern( String fileTypeId, String pattern ) throws ArchivaRestServiceException @@ -296,4 +250,54 @@ public class DefaultArchivaAdministrationService throw new ArchivaRestServiceException( e.getMessage() ); } } + + public List<FileType> getFileTypes() + throws ArchivaRestServiceException + { + try + { + List<org.apache.archiva.admin.repository.admin.FileType> modelfileTypes = + archivaAdministration.getFileTypes(); + if ( modelfileTypes == null || modelfileTypes.isEmpty() ) + { + return Collections.emptyList(); + } + List<FileType> fileTypes = new ArrayList<FileType>( modelfileTypes.size() ); + for ( org.apache.archiva.admin.repository.admin.FileType fileType : modelfileTypes ) + { + fileTypes.add( new BeanReplicator().replicateBean( fileType, FileType.class ) ); + } + return fileTypes; + } + catch ( RepositoryAdminException e ) + { + throw new ArchivaRestServiceException( e.getMessage() ); + } + } + + public List<String> getKnownContentConsumers() + throws ArchivaRestServiceException + { + try + { + return new ArrayList<String>( archivaAdministration.getKnownContentConsumers() ); + } + catch ( RepositoryAdminException e ) + { + throw new ArchivaRestServiceException( e.getMessage() ); + } + } + + public List<String> getInvalidContentConsumers() + throws ArchivaRestServiceException + { + try + { + return new ArrayList<String>( archivaAdministration.getInvalidContentConsumers() ); + } + catch ( RepositoryAdminException e ) + { + throw new ArchivaRestServiceException( e.getMessage() ); + } + } } diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java index 5bfec4d46..26048fcff 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java @@ -22,13 +22,9 @@ package org.apache.archiva.rest.services; import org.apache.archiva.admin.repository.managed.ManagedRepositoryAdmin; import org.apache.archiva.metadata.repository.RepositorySessionFactory; import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager; -import org.apache.archiva.rest.api.model.RemoteRepository; import org.apache.archiva.rest.api.services.RepositoriesService; import org.apache.archiva.scheduler.repository.RepositoryArchivaTaskScheduler; import org.apache.archiva.scheduler.repository.RepositoryTask; -import org.apache.maven.archiva.configuration.ArchivaConfiguration; -import org.apache.maven.archiva.configuration.Configuration; -import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration; import org.codehaus.plexus.redback.role.RoleManager; import org.codehaus.plexus.registry.Registry; import org.codehaus.plexus.taskqueue.TaskQueueException; @@ -39,8 +35,6 @@ import org.springframework.stereotype.Service; import javax.inject.Inject; import javax.inject.Named; import javax.ws.rs.PathParam; -import java.util.ArrayList; -import java.util.List; /** * @author Olivier Lamy @@ -53,36 +47,13 @@ public class DefaultRepositoriesService { private Logger log = LoggerFactory.getLogger( getClass() ); - // FIXME duplicate from xmlrpc - // olamy move this to a common remote services api - private static final String REPOSITORY_ID_VALID_EXPRESSION = "^[a-zA-Z0-9._-]+$"; - - private static final String REPOSITORY_NAME_VALID_EXPRESSION = "^([a-zA-Z0-9.)/_(-]|\\s)+$"; - - private static final String REPOSITORY_LOCATION_VALID_EXPRESSION = "^[-a-zA-Z0-9._/~:?!&=\\\\]+$"; - @Inject protected RoleManager roleManager; @Inject - protected ArchivaConfiguration archivaConfiguration; - - @Inject @Named( value = "archivaTaskScheduler#repository" ) private RepositoryArchivaTaskScheduler repositoryTaskScheduler; - @Inject - @Named( value = "commons-configuration" ) - private Registry registry; - - @Inject - private RepositoryStatisticsManager repositoryStatisticsManager; - - @Inject - private RepositorySessionFactory repositorySessionFactory; - - @Inject - private ManagedRepositoryAdmin managedRepositoryAdmin; // FIXME olamy move this to repository admin component ! public Boolean scanRepository( String repositoryId, boolean fullScan ) diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/ArchivaAdministrationServiceTest.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/ArchivaAdministrationServiceTest.java index 183f9fbf8..32bc95e01 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/ArchivaAdministrationServiceTest.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/ArchivaAdministrationServiceTest.java @@ -57,16 +57,21 @@ public class ArchivaAdministrationServiceTest public void addAndDeleteFileType() throws Exception { - int initialSize = getArchivaAdministrationService().getRepositoryScanning().getFileTypes().size(); + int initialSize = getArchivaAdministrationService().getFileTypes().size(); FileType fileType = new FileType(); - fileType.setId( "foo" ); + fileType.setId( "footwo" ); fileType.setPatterns( Arrays.asList( "foo", "bar" ) ); getArchivaAdministrationService().addFileType( fileType ); - assertEquals( initialSize + 1, - getArchivaAdministrationService().getRepositoryScanning().getFileTypes().size() ); + assertEquals( initialSize + 1, getArchivaAdministrationService().getFileTypes().size() ); - assertNotNull( getArchivaAdministrationService().getFileType( "foo" ) ); + assertNotNull( getArchivaAdministrationService().getFileType( "footwo" ) ); assertEquals( Arrays.asList( "foo", "bar" ), - getArchivaAdministrationService().getFileType( "foo" ).getPatterns() ); + getArchivaAdministrationService().getFileType( "footwo" ).getPatterns() ); + + getArchivaAdministrationService().removeFileType( "footwo" ); + + assertEquals( initialSize , getArchivaAdministrationService().getFileTypes().size() ); + + assertNull( getArchivaAdministrationService().getFileType( "footwo" ) ); } } diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java index 759f66930..29f122b04 100644 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java +++ b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java @@ -191,20 +191,20 @@ public class RepositoryScanningAction public void prepare() throws Exception { - RepositoryScanning reposcanning = archivaAdministration.getRepositoryScanning(); + FiletypeToMapClosure filetypeToMapClosure = new FiletypeToMapClosure(); - CollectionUtils.forAllDo( reposcanning.getFileTypes(), filetypeToMapClosure ); + CollectionUtils.forAllDo( archivaAdministration.getFileTypes(), filetypeToMapClosure ); fileTypeMap = filetypeToMapClosure.getMap(); AddAdminRepoConsumerClosure addAdminRepoConsumer = - new AddAdminRepoConsumerClosure( reposcanning.getKnownContentConsumers() ); + new AddAdminRepoConsumerClosure( archivaAdministration.getKnownContentConsumers() ); CollectionUtils.forAllDo( repoconsumerUtil.getAvailableKnownConsumers(), addAdminRepoConsumer ); this.knownContentConsumers = addAdminRepoConsumer.getList(); Collections.sort( knownContentConsumers, AdminRepositoryConsumerComparator.getInstance() ); - addAdminRepoConsumer = new AddAdminRepoConsumerClosure( reposcanning.getInvalidContentConsumers() ); + addAdminRepoConsumer = new AddAdminRepoConsumerClosure( archivaAdministration.getInvalidContentConsumers() ); CollectionUtils.forAllDo( repoconsumerUtil.getAvailableInvalidConsumers(), addAdminRepoConsumer ); this.invalidContentConsumers = addAdminRepoConsumer.getList(); Collections.sort( invalidContentConsumers, AdminRepositoryConsumerComparator.getInstance() ); @@ -229,7 +229,7 @@ public class RepositoryScanningAction try { - List<String> oldConsumers = getArchivaAdministration().getRepositoryScanning().getInvalidContentConsumers(); + List<String> oldConsumers = getArchivaAdministration().getInvalidContentConsumers(); if ( enabledInvalidContentConsumers != null ) { @@ -270,7 +270,7 @@ public class RepositoryScanningAction try { - List<String> oldConsumers = getArchivaAdministration().getRepositoryScanning().getKnownContentConsumers(); + List<String> oldConsumers = getArchivaAdministration().getKnownContentConsumers(); if ( enabledKnownContentConsumers != null ) { |