Return-Path: X-Original-To: apmail-archiva-commits-archive@www.apache.org Delivered-To: apmail-archiva-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 11C0D85DF for ; Tue, 13 Sep 2011 17:30:58 +0000 (UTC) Received: (qmail 25032 invoked by uid 500); 13 Sep 2011 17:30:58 -0000 Delivered-To: apmail-archiva-commits-archive@archiva.apache.org Received: (qmail 24999 invoked by uid 500); 13 Sep 2011 17:30:57 -0000 Mailing-List: contact commits-help@archiva.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@archiva.apache.org Delivered-To: mailing list commits@archiva.apache.org Received: (qmail 24977 invoked by uid 99); 13 Sep 2011 17:30:57 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 13 Sep 2011 17:30:57 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 13 Sep 2011 17:30:56 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 2DD032388A02 for ; Tue, 13 Sep 2011 17:30:36 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1170258 - in /archiva/trunk/archiva-modules/archiva-web/archiva-rest: archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ archiva-rest-services/ archiva-rest-services/src/main/java/org/apache/archiva/rest/services/ archiva... Date: Tue, 13 Sep 2011 17:30:35 -0000 To: commits@archiva.apache.org From: olamy@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110913173036.2DD032388A02@eris.apache.org> 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 @@ org.apache.archiva + archiva-scheduler-indexing + + + org.apache.archiva audit 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( + 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 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 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 )