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();
 }