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>