Author: olamy
Date: Tue Sep 13 17:30:35 2011
New Revision: 1170258
URL: http://svn.apache.org/viewvc?rev=1170258&view=rev
Log:
[MRM-1490] Expose Archiva services trough REST : search service add a method to
scan repo now useful for tests
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoriesService.java
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/SearchServiceTest.java
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoriesService.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoriesService.java?rev=1170258&r1=1170257&r2=1170258&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoriesService.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoriesService.java
Tue Sep 13 17:30:35 2011
@@ -42,19 +42,30 @@ public interface RepositoriesService
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML,
MediaType.TEXT_PLAIN } )
@RedbackAuthorization( permission =
ArchivaRoleConstants.OPERATION_RUN_INDEXER )
Boolean scanRepository( @QueryParam( "repositoryId" ) String repositoryId,
- @QueryParam( "fullScan" ) boolean fullScan );
+ @QueryParam( "fullScan" ) boolean fullScan )
+ throws ArchivaRestServiceException;
@Path( "alreadyScanning/{repositoryId}" )
@GET
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML,
MediaType.TEXT_PLAIN } )
@RedbackAuthorization( permission =
ArchivaRoleConstants.OPERATION_RUN_INDEXER )
- Boolean alreadyScanning( @PathParam( "repositoryId" ) String repositoryId
);
+ Boolean alreadyScanning( @PathParam( "repositoryId" ) String repositoryId )
+ throws ArchivaRestServiceException;
@Path( "removeScanningTaskFromQueue/{repositoryId}" )
@GET
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML,
MediaType.TEXT_PLAIN } )
@RedbackAuthorization( permission =
ArchivaRoleConstants.OPERATION_RUN_INDEXER )
- Boolean removeScanningTaskFromQueue( @PathParam( "repositoryId" ) String
repositoryId );
+ Boolean removeScanningTaskFromQueue( @PathParam( "repositoryId" ) String
repositoryId )
+ throws ArchivaRestServiceException;
+
+ @Path( "scanRepositoryNow" )
+ @GET
+ @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML,
MediaType.TEXT_PLAIN } )
+ @RedbackAuthorization( permission =
ArchivaRoleConstants.OPERATION_RUN_INDEXER )
+ Boolean scanRepositoryNow( @QueryParam( "repositoryId" ) String
repositoryId,
+ @QueryParam( "fullScan" ) boolean fullScan )
+ throws ArchivaRestServiceException;
}
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml?rev=1170258&r1=1170257&r2=1170258&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml
Tue Sep 13 17:30:35 2011
@@ -48,6 +48,10 @@
</dependency>
<dependency>
<groupId>org.apache.archiva</groupId>
+ <artifactId>archiva-scheduler-indexing</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.archiva</groupId>
<artifactId>audit</artifactId>
</dependency>
<dependency>
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java?rev=1170258&r1=1170257&r2=1170258&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
Tue Sep 13 17:30:35 2011
@@ -19,10 +19,19 @@ package org.apache.archiva.rest.services
* under the License.
*/
+import org.apache.archiva.admin.model.managed.ManagedRepository;
+import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin;
+import org.apache.archiva.common.plexusbridge.MavenIndexerUtils;
+import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
+import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
import org.apache.archiva.rest.api.services.RepositoriesService;
+import org.apache.archiva.scheduler.indexing.ArchivaIndexingTaskExecutor;
+import org.apache.archiva.scheduler.indexing.ArtifactIndexingTask;
import org.apache.archiva.scheduler.repository.RepositoryArchivaTaskScheduler;
import org.apache.archiva.scheduler.repository.RepositoryTask;
-import org.codehaus.plexus.redback.role.RoleManager;
+import org.apache.maven.index.NexusIndexer;
+import org.apache.maven.index.context.IndexCreator;
+import org.apache.maven.index.context.IndexingContext;
import org.codehaus.plexus.taskqueue.TaskQueueException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -31,6 +40,7 @@ import org.springframework.stereotype.Se
import javax.inject.Inject;
import javax.inject.Named;
import javax.ws.rs.PathParam;
+import java.util.ArrayList;
/**
* @author Olivier Lamy
@@ -44,12 +54,21 @@ public class DefaultRepositoriesService
private Logger log = LoggerFactory.getLogger( getClass() );
@Inject
- protected RoleManager roleManager;
-
- @Inject
@Named( value = "archivaTaskScheduler#repository" )
private RepositoryArchivaTaskScheduler repositoryTaskScheduler;
+ @Inject
+ @Named( value = "taskExecutor#indexing" )
+ private ArchivaIndexingTaskExecutor archivaIndexingTaskExecutor;
+
+ @Inject
+ private ManagedRepositoryAdmin managedRepositoryAdmin;
+
+ @Inject
+ private PlexusSisuBridge plexusSisuBridge;
+
+ @Inject
+ private MavenIndexerUtils mavenIndexerUtils;
// FIXME olamy move this to repository admin component !
public Boolean scanRepository( String repositoryId, boolean fullScan )
@@ -92,6 +111,32 @@ public class DefaultRepositoriesService
return false;
}
}
+
+ public Boolean scanRepositoryNow( String repositoryId, boolean fullScan )
+ throws ArchivaRestServiceException
+ {
+
+ try
+ {
+ ManagedRepository repository =
managedRepositoryAdmin.getManagedRepository( repositoryId );
+
+ IndexingContext context =
+ ArtifactIndexingTask.createContext( repository,
plexusSisuBridge.lookup( NexusIndexer.class ),
+ new
ArrayList<IndexCreator>(
+
mavenIndexerUtils.getAllIndexCreators() ) );
+ ArtifactIndexingTask task =
+ new ArtifactIndexingTask( repository, null,
ArtifactIndexingTask.Action.FINISH, context );
+ task.setExecuteOnEntireRepo( true );
+ task.setOnlyUpdate( false );
+
+ archivaIndexingTaskExecutor.executeTask( task );
+ return Boolean.TRUE;
+ }
+ catch ( Exception e )
+ {
+ throw new ArchivaRestServiceException( e.getMessage() );
+ }
+ }
}
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/SearchServiceTest.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/SearchServiceTest.java?rev=1170258&r1=1170257&r2=1170258&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/SearchServiceTest.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/SearchServiceTest.java
Tue Sep 13 17:30:35 2011
@@ -39,12 +39,6 @@ public class SearchServiceTest
throws Exception
{
- // olamy temporary disabled due to huge refactoring
- if (true)
- {
- return;
- }
-
String testRepoId = "test-repo";
// force guest user creation if not exists
if ( getUserService( authorizationHeader ).getGuestUser() == null )
@@ -52,6 +46,22 @@ public class SearchServiceTest
assertNotNull( getUserService( authorizationHeader
).createGuestUser() );
}
+ createAndIndexRepo( testRepoId );
+
+ SearchService searchService = getSearchService( authorizationHeader );
+
+ List<Artifact> artifacts = searchService.quickSearch(
"commons-logging" );
+
+ assertNotNull( artifacts );
+ assertTrue( " empty results for commons-logging search",
artifacts.size() > 0 );
+ log.info( "artifacts for commons-logginf search {}", artifacts );
+
+ deleteTestRepo( testRepoId );
+ }
+
+ private void createAndIndexRepo( String testRepoId )
+ throws Exception
+ {
File targetRepo = new File( System.getProperty( "targetDir",
"./target" ), "test-repo" );
if ( targetRepo.exists() )
@@ -67,28 +77,14 @@ public class SearchServiceTest
managedRepository.setId( testRepoId );
managedRepository.setName( "test repo" );
managedRepository.setCronExpression( "* * * * * ?" );
+ managedRepository.setScanned( false );
managedRepository.setLocation( targetRepo.getPath() );
ManagedRepositoriesService service = getManagedRepositoriesService(
authorizationHeader );
service.addManagedRepository( managedRepository );
- getRepositoriesService( authorizationHeader ).scanRepository(
testRepoId, true );
-
- while ( getRepositoriesService( authorizationHeader ).alreadyScanning(
testRepoId ) )
- {
- Thread.sleep( 1000 );
- }
-
- SearchService searchService = getSearchService( authorizationHeader );
-
- List<Artifact> artifacts = searchService.quickSearch(
"commons-logging" );
-
- assertNotNull( artifacts );
- assertTrue( " empty results for commons-logging search",
artifacts.size() > 0 );
- log.info( "artifacts for commons-logginf search {}", artifacts );
-
- deleteTestRepo( testRepoId );
+ getRepositoriesService( authorizationHeader ).scanRepositoryNow(
testRepoId, true );
}
private void deleteTestRepo( String id )