You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ep...@apache.org on 2006/10/25 08:17:38 UTC
svn commit: r467569 - in
/maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler:
DefaultRepositoryTaskScheduler.java RepositoryTaskJob.java
task/IndexerTask.java task/RepositoryTask.java
Author: epunzalan
Date: Tue Oct 24 23:17:38 2006
New Revision: 467569
URL: http://svn.apache.org/viewvc?view=rev&rev=467569
Log:
PR: MRM-139
Enabled task scheduler policy for queueing: wait, and skip.
Modified:
maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/DefaultRepositoryTaskScheduler.java
maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTaskJob.java
maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexerTask.java
maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/RepositoryTask.java
Modified: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/DefaultRepositoryTaskScheduler.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/DefaultRepositoryTaskScheduler.java?view=diff&rev=467569&r1=467568&r2=467569
==============================================================================
--- maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/DefaultRepositoryTaskScheduler.java (original)
+++ maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/DefaultRepositoryTaskScheduler.java Tue Oct 24 23:17:38 2006
@@ -27,6 +27,7 @@
import org.apache.maven.archiva.indexer.RepositoryIndexException;
import org.apache.maven.archiva.scheduler.executors.IndexerTaskExecutor;
import org.apache.maven.archiva.scheduler.task.IndexerTask;
+import org.apache.maven.archiva.scheduler.task.RepositoryTask;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Startable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.StartingException;
@@ -143,6 +144,7 @@
JobDataMap dataMap = new JobDataMap();
dataMap.put( RepositoryTaskJob.TASK_QUEUE, indexerQueue );
+ dataMap.put( RepositoryTaskJob.TASK_QUEUE_POLICY, RepositoryTask.QUEUE_POLICY_SKIP );
jobDetail.setJobDataMap( dataMap );
return jobDetail;
Modified: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTaskJob.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTaskJob.java?view=diff&rev=467569&r1=467568&r2=467569
==============================================================================
--- maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTaskJob.java (original)
+++ maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTaskJob.java Tue Oct 24 23:17:38 2006
@@ -17,6 +17,7 @@
*/
import org.apache.maven.archiva.scheduler.task.IndexerTask;
+import org.apache.maven.archiva.scheduler.task.RepositoryTask;
import org.codehaus.plexus.scheduler.AbstractJob;
import org.codehaus.plexus.taskqueue.TaskQueue;
import org.codehaus.plexus.taskqueue.TaskQueueException;
@@ -34,12 +35,13 @@
static final String TASK_QUEUE = "TASK_QUEUE";
+ static final String TASK_QUEUE_POLICY = "TASK_QUEUE_POLICY";
+
/**
* Execute the discoverer and the indexer.
*
* @param context
* @throws org.quartz.JobExecutionException
- *
*/
public void execute( JobExecutionContext context )
throws JobExecutionException
@@ -48,18 +50,32 @@
setJobDataMap( dataMap );
TaskQueue indexerQueue = (TaskQueue) dataMap.get( TASK_QUEUE );
+ String queuePolicy = dataMap.get( TASK_QUEUE_POLICY ).toString();
- IndexerTask task = new IndexerTask();
+ RepositoryTask task = new IndexerTask();
task.setJobName( context.getJobDetail().getName() );
try
{
- indexerQueue.put( task );
+ if ( indexerQueue.getQueueSnapshot().size() == 0 )
+ {
+ indexerQueue.put( task );
+ }
+ else
+ {
+ if ( RepositoryTask.QUEUE_POLICY_WAIT.equals( queuePolicy ) )
+ {
+ indexerQueue.put( task );
+ }
+ else if ( RepositoryTask.QUEUE_POLICY_SKIP.equals( queuePolicy ) )
+ {
+ //do not queue anymore, policy is to skip
+ }
+ }
}
catch ( TaskQueueException e )
{
throw new JobExecutionException( e );
}
}
-
}
Modified: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexerTask.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexerTask.java?view=diff&rev=467569&r1=467568&r2=467569
==============================================================================
--- maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexerTask.java (original)
+++ maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexerTask.java Tue Oct 24 23:17:38 2006
@@ -16,18 +16,18 @@
* limitations under the License.
*/
-import org.codehaus.plexus.taskqueue.Task;
-
/**
* Task for discovering changes in the repository and updating the index accordingly.
*
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
*/
public class IndexerTask
- implements Task
+ implements RepositoryTask
{
private String jobName;
+ private String policy;
+
public long getMaxExecutionTime()
{
return 0;
@@ -38,8 +38,20 @@
return jobName;
}
+ public String getQueuePolicy()
+ {
+ return policy;
+ }
+
+ public void setQueuePolicy( String policy )
+ {
+ this.policy = policy;
+ }
+
public void setJobName( String jobName )
{
this.jobName = jobName;
}
+
+
}
Modified: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/RepositoryTask.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/RepositoryTask.java?view=diff&rev=467569&r1=467568&r2=467569
==============================================================================
--- maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/RepositoryTask.java (original)
+++ maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/RepositoryTask.java Tue Oct 24 23:17:38 2006
@@ -16,7 +16,6 @@
* limitations under the License.
*/
-import org.apache.maven.archiva.scheduler.TaskExecutionException;
import org.codehaus.plexus.taskqueue.Task;
/**
@@ -27,15 +26,29 @@
public interface RepositoryTask
extends Task
{
+ String QUEUE_POLICY_WAIT = "wait";
+
+ String QUEUE_POLICY_SKIP = "skip";
+
+ /**
+ * Gets the queue policy for this task.
+ *
+ * @return Queue policy for this task
+ */
+ String getQueuePolicy();
+
/**
- * Execute the task.
+ * Sets the queue policy for this task.
+ *
+ * @param policy
*/
- void execute()
- throws TaskExecutionException;
+ void setQueuePolicy( String policy );
/**
- * Execute the task now if needed because the target doesn't exist.
+ * Sets the job name to represent a group of similar / identical job tasks. Can be used to check the
+ * task queue for similar / identical job tasks.
*/
- void executeNowIfNeeded()
- throws TaskExecutionException;
+ void setJobName( String jobName );
+
+ String getJobName();
}