You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by oc...@apache.org on 2009/05/23 09:28:13 UTC

svn commit: r777816 [2/2] - in /archiva/trunk: ./ archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/ archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/mai...

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResource.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResource.java?rev=777816&r1=777815&r2=777816&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResource.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResource.java Sat May 23 07:28:12 2009
@@ -53,20 +53,15 @@
 import org.apache.jackrabbit.webdav.property.DavPropertySet;
 import org.apache.jackrabbit.webdav.property.DefaultDavProperty;
 import org.apache.jackrabbit.webdav.property.ResourceType;
-import org.apache.maven.archiva.common.ArchivaException;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.maven.archiva.repository.audit.AuditEvent;
 import org.apache.maven.archiva.repository.audit.AuditListener;
-import org.apache.maven.archiva.repository.scanner.RepositoryContentConsumers;
 import org.apache.maven.archiva.scheduled.ArchivaTaskScheduler;
-import org.apache.maven.archiva.scheduled.DefaultArchivaTaskScheduler;
-import org.apache.maven.archiva.scheduled.executors.ArchivaRepositoryScanningTaskExecutor;
-import org.apache.maven.archiva.scheduled.tasks.ArchivaTask;
 import org.apache.maven.archiva.scheduled.tasks.RepositoryTask;
+import org.apache.maven.archiva.scheduled.tasks.TaskCreator;
 import org.apache.maven.archiva.webdav.util.IndexWriter;
 import org.apache.maven.archiva.webdav.util.MimeTypes;
 import org.codehaus.plexus.taskqueue.TaskQueueException;
-import org.codehaus.plexus.taskqueue.execution.TaskExecutor;
 import org.joda.time.DateTime;
 import org.joda.time.format.DateTimeFormatter;
 import org.joda.time.format.ISODateTimeFormat;
@@ -98,8 +93,6 @@
 
     private final ManagedRepositoryConfiguration repository;
 
-    private final RepositoryContentConsumers consumers;
-
     private final MimeTypes mimeTypes;
 
     private List<AuditListener> auditListeners;
@@ -110,14 +103,12 @@
     
     private ArchivaTaskScheduler scheduler;
     
-    private ArchivaRepositoryScanningTaskExecutor taskExecutor;
-    
     private Logger log = LoggerFactory.getLogger( ArchivaDavResource.class );
 
     public ArchivaDavResource( String localResource, String logicalResource, ManagedRepositoryConfiguration repository,
                                DavSession session, ArchivaDavResourceLocator locator, DavResourceFactory factory,
                                MimeTypes mimeTypes, List<AuditListener> auditListeners,
-                               RepositoryContentConsumers consumers, ArchivaTaskScheduler scheduler, TaskExecutor taskExecutor )
+                               ArchivaTaskScheduler scheduler )
     {
         this.localResource = new File( localResource ); 
         this.logicalResource = logicalResource;
@@ -129,20 +120,18 @@
         this.repository = repository;
         
         // TODO: these should be pushed into the repository layer, along with the physical file operations in this class
-        this.mimeTypes = mimeTypes;
-        this.consumers = consumers;
+        this.mimeTypes = mimeTypes;        
         this.auditListeners = auditListeners;
         this.scheduler = scheduler;
-        this.taskExecutor = ( ArchivaRepositoryScanningTaskExecutor ) taskExecutor;
     }
 
     public ArchivaDavResource( String localResource, String logicalResource, ManagedRepositoryConfiguration repository,
                                String remoteAddr, String principal, DavSession session, ArchivaDavResourceLocator locator,
                                DavResourceFactory factory, MimeTypes mimeTypes, List<AuditListener> auditListeners,
-                               RepositoryContentConsumers consumers, ArchivaTaskScheduler scheduler, TaskExecutor taskExecutor )
+                               ArchivaTaskScheduler scheduler )
     {
         this( localResource, logicalResource, repository, session, locator, factory, mimeTypes, auditListeners,
-              consumers, scheduler, taskExecutor );
+              scheduler );
 
         this.remoteAddr = remoteAddr;
         this.principal = principal;
@@ -322,7 +311,7 @@
                     inputContext.getContentLength() + " but was " + localFile.length() );
             }
             
-            executeConsumers( localFile );            
+            queueRepositoryTask( localFile );           
             
             triggerAuditEvent( resource, exists ? AuditEvent.MODIFY_FILE : AuditEvent.CREATE_FILE );
         }
@@ -642,50 +631,18 @@
         }
     }
     
-    private void executeConsumers( File localFile )
+    private void queueRepositoryTask(  File localFile )
     {
+        RepositoryTask task = TaskCreator.createRepositoryTask( repository.getId(), localFile.getName(), localFile );
+        
         try
         {
-            RepositoryTask currentTaskInExecution = ( RepositoryTask ) taskExecutor.getCurrentTaskInExecution();
-            if( currentTaskInExecution != null || scheduler.isProcessingAnyRepositoryTask() )
-            {   
-                // check if the repository is already queued to be scanned
-                if( scheduler.isProcessingRepositoryTaskWithName( DefaultArchivaTaskScheduler.REPOSITORY_JOB + ":" + repository.getId() )
-                        || scheduler.isProcessingRepositoryTaskWithName( DefaultArchivaTaskScheduler.REPOSITORY_JOB + ":" + repository.getId() + ":" + localFile.getName() ) )
-                {
-                    // no need to execute the consumers since repo is already queued
-                    return;
-                }
-                else
-                {
-                    // schedule the task
-                    RepositoryTask task = new RepositoryTask();
-                    task.setRepositoryId( repository.getId() );
-                    task.setName( DefaultArchivaTaskScheduler.REPOSITORY_JOB + ":" + repository.getId() + ":" + localFile.getName() );
-                    task.setQueuePolicy( ArchivaTask.QUEUE_POLICY_WAIT );
-                    task.setResourceFile( localFile );
-                    
-                    try
-                    {
-                        scheduler.queueRepositoryTask( task );
-                    }
-                    catch ( TaskQueueException e )
-                    {
-                        log.error( "Unable to queue repository task to execute consumers on resource file ['" +
-                            localFile.getName() + "']." );
-                    }
-                }
-            }
-            else
-            {
-                // Just-in-time update of the index and database by executing the consumers for this artifact
-                consumers.executeConsumers( repository, localFile );
-            }
+            scheduler.queueRepositoryTask( task );
         }
-        catch ( ArchivaException e )
+        catch ( TaskQueueException e )
         {
             log.error( "Unable to queue repository task to execute consumers on resource file ['" +
-                       localFile.getName() + "']." );
+                localFile.getName() + "']." );
         }
     }
 }

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceFactory.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceFactory.java?rev=777816&r1=777815&r2=777816&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceFactory.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceFactory.java Sat May 23 07:28:12 2009
@@ -83,6 +83,7 @@
 import org.codehaus.plexus.redback.users.User;
 import org.codehaus.plexus.redback.users.UserManager;
 import org.codehaus.plexus.taskqueue.execution.TaskExecutor;
+import org.codehaus.plexus.taskqueue.execution.TaskQueueExecutor;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 import org.codehaus.redback.integration.filter.authentication.HttpAuthenticator;
 import org.slf4j.Logger;
@@ -179,6 +180,11 @@
      * @plexus.requirement
      */
     private ArchivaTaskScheduler scheduler;
+    
+    /**
+     * @plexus.requirement role-hint="repository-scanning"
+     */
+    private TaskQueueExecutor repoScanningTaskQueueExecutor;
 
     public DavResource createResource( final DavResourceLocator locator, final DavServletRequest request,
                                        final DavServletResponse response )
@@ -271,7 +277,7 @@
                             new ArchivaDavResource( metadataChecksum.getAbsolutePath(), logicalResource.getPath(),
                                                     null, request.getRemoteAddr(), activePrincipal,
                                                     request.getDavSession(), archivaLocator, this, mimeTypes,
-                                                    auditListeners, consumers, scheduler, taskExecutor );
+                                                    auditListeners, scheduler );
                     }
                 }
                 else
@@ -306,7 +312,7 @@
                                 new ArchivaDavResource( resourceFile.getAbsolutePath(), logicalResource.getPath(),
                                                         null, request.getRemoteAddr(), activePrincipal,
                                                         request.getDavSession(), archivaLocator, this, mimeTypes,
-                                                        auditListeners, consumers, scheduler, taskExecutor );
+                                                        auditListeners, scheduler );
                         }
                         catch ( RepositoryMetadataException r )
                         {
@@ -411,7 +417,7 @@
                 new ArchivaDavResource( resourceFile.getAbsolutePath(), logicalResource.getPath(),
                                         managedRepository.getRepository(), request.getRemoteAddr(), activePrincipal,
                                         request.getDavSession(), archivaLocator, this, mimeTypes, auditListeners,
-                                        consumers, scheduler, taskExecutor );
+                                        scheduler );
 
             if ( WebdavMethodUtil.isReadMethod( request.getMethod() ) )
             {
@@ -442,7 +448,7 @@
                                 new ArchivaDavResource( resourceFile.getAbsolutePath(), logicalResource.getPath(),
                                                         managedRepository.getRepository(), request.getRemoteAddr(),
                                                         activePrincipal, request.getDavSession(), archivaLocator, this,
-                                                        mimeTypes, auditListeners, consumers, scheduler, taskExecutor );
+                                                        mimeTypes, auditListeners, scheduler );
                         }
                         catch ( LayoutException e )
                         {
@@ -517,7 +523,7 @@
         File resourceFile = new File( managedRepository.getRepoRoot(), logicalResource );
         DavResource resource =
             new ArchivaDavResource( resourceFile.getAbsolutePath(), logicalResource, managedRepository.getRepository(),
-                                    davSession, archivaLocator, this, mimeTypes, auditListeners, consumers, scheduler, taskExecutor );
+                                    davSession, archivaLocator, this, mimeTypes, auditListeners, scheduler );
 
         resource.addLockManager( lockManager );
         return resource;

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/DavResourceTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/DavResourceTest.java?rev=777816&r1=777815&r2=777816&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/DavResourceTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/DavResourceTest.java Sat May 23 07:28:12 2009
@@ -42,6 +42,7 @@
 import org.apache.maven.archiva.webdav.util.MimeTypes;
 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
 import org.codehaus.plexus.spring.PlexusToSpringUtils;
+import org.codehaus.plexus.taskqueue.execution.TaskQueueExecutor;
 
 public class DavResourceTest
     extends PlexusInSpringTestCase
@@ -67,6 +68,8 @@
     private RepositoryContentConsumers consumers;
 
     private ManagedRepositoryConfiguration repository = new ManagedRepositoryConfiguration();
+    
+    private TaskQueueExecutor repoScanningTaskQueueExecutor;
 
     @Override
     protected void setUp()
@@ -100,8 +103,7 @@
     private DavResource getDavResource( String logicalPath, File file )
     {
         return new ArchivaDavResource( file.getAbsolutePath(), logicalPath, repository, session, resourceLocator,
-                                       resourceFactory, mimeTypes, Collections.<AuditListener> emptyList(), consumers,
-                                       null, null );
+                                       resourceFactory, mimeTypes, Collections.<AuditListener> emptyList(), null );
     }
 
     public void testDeleteNonExistantResourceShould404()
@@ -308,7 +310,7 @@
         {
             return new ArchivaDavResource( baseDir.getAbsolutePath(), "/", repository, session, resourceLocator,
                                            resourceFactory, mimeTypes, Collections.<AuditListener> emptyList(),
-                                           consumers, null, null );
+                                           null );
         }
     }
 }

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java?rev=777816&r1=777815&r2=777816&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java Sat May 23 07:28:12 2009
@@ -55,6 +55,7 @@
 import org.apache.maven.archiva.scheduled.tasks.ArchivaTask;
 import org.apache.maven.archiva.scheduled.tasks.DatabaseTask;
 import org.apache.maven.archiva.scheduled.tasks.RepositoryTask;
+import org.apache.maven.archiva.scheduled.tasks.TaskCreator;
 import org.codehaus.plexus.registry.RegistryException;
 
 /**
@@ -312,10 +313,7 @@
             }
         }
 
-        RepositoryTask task = new RepositoryTask();
-        task.setRepositoryId( repoId );
-        task.setName( DefaultArchivaTaskScheduler.REPOSITORY_JOB + ":" + repoId );
-        task.setQueuePolicy( ArchivaTask.QUEUE_POLICY_WAIT );
+        RepositoryTask task = TaskCreator.createRepositoryTask( repoId, "" );
 
         taskScheduler.queueRepositoryTask( task );          
         

Modified: archiva/trunk/pom.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/pom.xml?rev=777816&r1=777815&r2=777816&view=diff
==============================================================================
--- archiva/trunk/pom.xml (original)
+++ archiva/trunk/pom.xml Sat May 23 07:28:12 2009
@@ -253,7 +253,7 @@
       <dependency>
         <groupId>org.sonatype.nexus</groupId>
         <artifactId>nexus-indexer</artifactId>
-        <version>1.1.1</version>
+        <version>2.0.0</version>
         <exclusions>
           <exclusion>
             <groupId>org.codehaus.plexus</groupId>