summaryrefslogtreecommitdiffstats
path: root/archiva-modules/archiva-web
diff options
context:
space:
mode:
authorOlivier Lamy <olamy@apache.org>2011-09-09 14:41:04 +0000
committerOlivier Lamy <olamy@apache.org>2011-09-09 14:41:04 +0000
commitb31467ae8de9ccf3f435459c834167b307cf2093 (patch)
tree1225445c33b6da860ae272047525d43e445e8f03 /archiva-modules/archiva-web
parent97de6d311871bf0576c083c2228175ef14268bea (diff)
downloadarchiva-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')
-rw-r--r--archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaAdministrationService.java44
-rw-r--r--archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml5
-rw-r--r--archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaAdministrationService.java98
-rw-r--r--archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java29
-rw-r--r--archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/ArchivaAdministrationServiceTest.java17
-rw-r--r--archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java12
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._/~:?!&amp;=\\\\]+$";
-
@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 )
{