Author: olegk
Date: Sun Nov  2 12:12:49 2008
New Revision: 709918

URL: http://svn.apache.org/viewvc?rev=709918&view=rev
Log:
Fixed the use of generics in the Droids public API and some impl classes

Modified:
    incubator/droids/trunk/src/java/org/apache/droids/AbstractDroid.java
    incubator/droids/trunk/src/java/org/apache/droids/api/Droid.java
    incubator/droids/trunk/src/java/org/apache/droids/api/TaskMaster.java
    incubator/droids/trunk/src/java/org/apache/droids/api/TaskQueue.java
    incubator/droids/trunk/src/java/org/apache/droids/api/TaskValidator.java
    
incubator/droids/trunk/src/java/org/apache/droids/exception/InvalidTaskException.java
    
incubator/droids/trunk/src/java/org/apache/droids/helper/factories/DroidFactory.java
    
incubator/droids/trunk/src/java/org/apache/droids/impl/MultiThreadedTaskMaster.java
    incubator/droids/trunk/src/java/org/apache/droids/impl/SimpleTaskQueue.java
    
incubator/droids/trunk/src/java/org/apache/droids/impl/SimpleTaskQueueWithHistory.java
    
incubator/droids/trunk/src/java/org/apache/droids/impl/SimpleTaskValidator.java

Modified: incubator/droids/trunk/src/java/org/apache/droids/AbstractDroid.java
URL: 
http://svn.apache.org/viewvc/incubator/droids/trunk/src/java/org/apache/droids/AbstractDroid.java?rev=709918&r1=709917&r2=709918&view=diff
==============================================================================
--- incubator/droids/trunk/src/java/org/apache/droids/AbstractDroid.java 
(original)
+++ incubator/droids/trunk/src/java/org/apache/droids/AbstractDroid.java Sun 
Nov  2 12:12:49 2008
@@ -21,12 +21,12 @@
 /**
  * Manage common tasks in standard Droids
  */
-public abstract class AbstractDroid implements Droid 
+public abstract class AbstractDroid<T extends Task> implements Droid<T> 
 {
-  protected final TaskQueue queue;
-  protected final TaskMaster taskMaster;
+  protected final TaskQueue<T> queue;
+  protected final TaskMaster<T> taskMaster;
   
-  public AbstractDroid( TaskQueue queue, TaskMaster taskMaster )
+  public AbstractDroid( TaskQueue<T> queue, TaskMaster<T> taskMaster )
   {
     this.queue = queue;
     this.taskMaster = taskMaster;
@@ -42,11 +42,11 @@
     System.out.println( "FINISHED!!!" );
   }
 
-  public final TaskQueue getQueue() {
+  public final TaskQueue<T> getQueue() {
     return queue;
   }
 
-  public final TaskMaster getTaskMaster() {
+  public final TaskMaster<T> getTaskMaster() {
     return taskMaster;
   }
 }

Modified: incubator/droids/trunk/src/java/org/apache/droids/api/Droid.java
URL: 
http://svn.apache.org/viewvc/incubator/droids/trunk/src/java/org/apache/droids/api/Droid.java?rev=709918&r1=709917&r2=709918&view=diff
==============================================================================
--- incubator/droids/trunk/src/java/org/apache/droids/api/Droid.java (original)
+++ incubator/droids/trunk/src/java/org/apache/droids/api/Droid.java Sun Nov  2 
12:12:49 2008
@@ -28,7 +28,7 @@
  * 
  * @version 1.0
  */
-public interface Droid {
+public interface Droid<T extends Task> {
 
   /**
    * Initialize the queue. Can have different implementation but the main 
groups
@@ -55,10 +55,10 @@
   /**
    * Ask the droid for a new worker
    */
-  public Worker getNewWorker();
+  public Worker<T> getNewWorker();
   
   /**
    * Get the task master
    */
-  public TaskMaster getTaskMaster();
+  public TaskMaster<T> getTaskMaster();
 }

Modified: incubator/droids/trunk/src/java/org/apache/droids/api/TaskMaster.java
URL: 
http://svn.apache.org/viewvc/incubator/droids/trunk/src/java/org/apache/droids/api/TaskMaster.java?rev=709918&r1=709917&r2=709918&view=diff
==============================================================================
--- incubator/droids/trunk/src/java/org/apache/droids/api/TaskMaster.java 
(original)
+++ incubator/droids/trunk/src/java/org/apache/droids/api/TaskMaster.java Sun 
Nov  2 12:12:49 2008
@@ -23,8 +23,8 @@
 /**
  * Responsible for running all the tasks
  */
-public interface TaskMaster {
-  void processAllTasks( final TaskQueue queue, final Droid droid );
+public interface TaskMaster<T extends Task> {
+  void processAllTasks( final TaskQueue<T> queue, final Droid<T> droid );
 
   Date getStartTime();
 
@@ -32,5 +32,5 @@
 
   int getCompletedTasks();
 
-  Task getLastCompletedTask();
+  T getLastCompletedTask();
 }

Modified: incubator/droids/trunk/src/java/org/apache/droids/api/TaskQueue.java
URL: 
http://svn.apache.org/viewvc/incubator/droids/trunk/src/java/org/apache/droids/api/TaskQueue.java?rev=709918&r1=709917&r2=709918&view=diff
==============================================================================
--- incubator/droids/trunk/src/java/org/apache/droids/api/TaskQueue.java 
(original)
+++ incubator/droids/trunk/src/java/org/apache/droids/api/TaskQueue.java Sun 
Nov  2 12:12:49 2008
@@ -31,7 +31,7 @@
  * @version 1.0
  * 
  */
-public interface TaskQueue {
+public interface TaskQueue<T extends Task> {
   /**
    * Return the task that is identified with the given id
    * 
@@ -39,7 +39,7 @@
    *                of the task we want
    * @return the task idenfied by the given id
    */
-  Task getTask(String id);
+  T getTask(String id);
 
   /**
    * Do we have more task waiting for service
@@ -53,7 +53,7 @@
    * 
    * @return next task in line.
    */
-  Task next();
+  T next();
 
   /**
    * Add a Task to the queue...
@@ -61,7 +61,7 @@
    * @param task  task to add to the Queue
    * @throws InvalidTaskException 
    */
-  void merge(Task task) throws InvalidTaskException;
+  void merge(T task) throws InvalidTaskException;
   
   /**
    * Merge a given list of tasks with the current queue. Whether or not we
@@ -71,7 +71,7 @@
    *                the list of task that we want to add to the queue
    * @throws InvalidTaskException 
    */
-  void merge(Collection<? extends Task> tasks) throws InvalidTaskException;
+  void merge(Collection<? extends T> tasks) throws InvalidTaskException;
 
   /**
    * How many task do we have <em>left</em> in the queue.

Modified: 
incubator/droids/trunk/src/java/org/apache/droids/api/TaskValidator.java
URL: 
http://svn.apache.org/viewvc/incubator/droids/trunk/src/java/org/apache/droids/api/TaskValidator.java?rev=709918&r1=709917&r2=709918&view=diff
==============================================================================
--- incubator/droids/trunk/src/java/org/apache/droids/api/TaskValidator.java 
(original)
+++ incubator/droids/trunk/src/java/org/apache/droids/api/TaskValidator.java 
Sun Nov  2 12:12:49 2008
@@ -22,7 +22,7 @@
  * 
  * @since 1.0
  */
-public interface TaskValidator {
+public interface TaskValidator<T extends Task> {
   /**
    * This will take a task and make sure it is valid.  It <b>may</b>
    * modify the task so it is valid.  For example, a URL may be normalized
@@ -30,5 +30,5 @@
    * 
    * @throws InvalidTaskException
    */
-  public Task validateTask( Task task ) throws InvalidTaskException;
+  public T validateTask( T task ) throws InvalidTaskException;
 }

Modified: 
incubator/droids/trunk/src/java/org/apache/droids/exception/InvalidTaskException.java
URL: 
http://svn.apache.org/viewvc/incubator/droids/trunk/src/java/org/apache/droids/exception/InvalidTaskException.java?rev=709918&r1=709917&r2=709918&view=diff
==============================================================================
--- 
incubator/droids/trunk/src/java/org/apache/droids/exception/InvalidTaskException.java
 (original)
+++ 
incubator/droids/trunk/src/java/org/apache/droids/exception/InvalidTaskException.java
 Sun Nov  2 12:12:49 2008
@@ -23,7 +23,9 @@
  */
 public class InvalidTaskException extends DroidsException 
 {
-  /**
+  private static final long serialVersionUID = -3786805476765424195L;
+
+/**
    * @param msg
    *                error message
    */

Modified: 
incubator/droids/trunk/src/java/org/apache/droids/helper/factories/DroidFactory.java
URL: 
http://svn.apache.org/viewvc/incubator/droids/trunk/src/java/org/apache/droids/helper/factories/DroidFactory.java?rev=709918&r1=709917&r2=709918&view=diff
==============================================================================
--- 
incubator/droids/trunk/src/java/org/apache/droids/helper/factories/DroidFactory.java
 (original)
+++ 
incubator/droids/trunk/src/java/org/apache/droids/helper/factories/DroidFactory.java
 Sun Nov  2 12:12:49 2008
@@ -17,6 +17,7 @@
 package org.apache.droids.helper.factories;
 
 import org.apache.droids.api.Droid;
+import org.apache.droids.api.Task;
 
 /**
  * Factory that will lookup a droid by its name and returns it.
@@ -24,7 +25,7 @@
  * @version 1.0
  * 
  */
-public class DroidFactory extends GenericFactory<Droid> {
+public class DroidFactory<T extends Task> extends GenericFactory<Droid<T>> {
 
   /**
    * Lookup a droid by its name and return it.
@@ -33,7 +34,7 @@
    *                the droid we want to use
    * @return the droid registered for the given name
    */
-  public Droid getDroid(String name) {
+  public Droid<T> getDroid(String name) {
     return getMap().get(name);
   }
 

Modified: 
incubator/droids/trunk/src/java/org/apache/droids/impl/MultiThreadedTaskMaster.java
URL: 
http://svn.apache.org/viewvc/incubator/droids/trunk/src/java/org/apache/droids/impl/MultiThreadedTaskMaster.java?rev=709918&r1=709917&r2=709918&view=diff
==============================================================================
--- 
incubator/droids/trunk/src/java/org/apache/droids/impl/MultiThreadedTaskMaster.java
 (original)
+++ 
incubator/droids/trunk/src/java/org/apache/droids/impl/MultiThreadedTaskMaster.java
 Sun Nov  2 12:12:49 2008
@@ -25,26 +25,26 @@
 import org.apache.droids.SimpleThreads;
 import org.apache.droids.api.*;
 
-public class MultiThreadedTaskMaster implements TaskMaster 
+public class MultiThreadedTaskMaster<T extends Task> implements TaskMaster<T> 
 {
   private static final long KEEP_ALIVE = 50000L;
   
   private ThreadPoolExecutor pool = null;
   private ConcurrentHashMap<Long, WorkerRunner> runningWorker = null;
   private int maxThreads = 0;
-  private TaskQueue queue = null;
-  private Droid droid = null;
+  private TaskQueue<T> queue = null;
+  private Droid<T> droid = null;
   private DelayTimer delayTimer = null;
 
   private Date startedWorking = null;
   private Date finishedWorking = null;
   private int completedTask = 0;
-  private Task lastCompletedTask = null;
+  private T lastCompletedTask = null;
   
   /**
    * The queue has been initialized
    */
-  public void processAllTasks(final TaskQueue queue, final Droid droid) 
+  public void processAllTasks(final TaskQueue<T> queue, final Droid<T> droid) 
   {
     // TODO Auto-generated method stub
     this.queue = queue;
@@ -177,7 +177,7 @@
    */
   class WorkerRunner extends Thread {
     
-    Task task;
+    T task;
     
     @Override
     public void run() {
@@ -194,7 +194,7 @@
             }
           }
 
-          Worker worker = droid.getNewWorker();
+          Worker<T> worker = droid.getNewWorker();
           worker.execute( task );
         }
       }
@@ -212,7 +212,7 @@
     return finishedWorking;
   }
 
-  public Task getLastCompletedTask() {
+  public T getLastCompletedTask() {
     return lastCompletedTask;
   }
 

Modified: 
incubator/droids/trunk/src/java/org/apache/droids/impl/SimpleTaskQueue.java
URL: 
http://svn.apache.org/viewvc/incubator/droids/trunk/src/java/org/apache/droids/impl/SimpleTaskQueue.java?rev=709918&r1=709917&r2=709918&view=diff
==============================================================================
--- incubator/droids/trunk/src/java/org/apache/droids/impl/SimpleTaskQueue.java 
(original)
+++ incubator/droids/trunk/src/java/org/apache/droids/impl/SimpleTaskQueue.java 
Sun Nov  2 12:12:49 2008
@@ -28,25 +28,25 @@
 /**
  * A simple 
  */
-public class SimpleTaskQueue implements TaskQueue, TaskValidator {
-  private final Queue<Task> queue;
-  private final Map<String,Task> taskMap;
+public class SimpleTaskQueue<T extends Task> implements TaskQueue<T>, 
TaskValidator<T> {
+  private final Queue<T> queue;
+  private final Map<String,T> taskMap;
   
-  private TaskValidator taskValidator;
+  private TaskValidator<T> taskValidator;
   private int maxSize = 0;
 
   /**
    * Simple queue constructor.
    */
   public SimpleTaskQueue() {
-    queue = new ConcurrentLinkedQueue<Task>();
-    taskMap = new ConcurrentHashMap<String, Task>();
+    queue = new ConcurrentLinkedQueue<T>();
+    taskMap = new ConcurrentHashMap<String, T>();
   }
 
   /*
    * @see org.apache.droids.api.Queue#getTask(java.lang.String)
    */
-  public Task getTask(String id) {
+  public T getTask(String id) {
     return taskMap.get(id);
   }
 
@@ -62,7 +62,7 @@
     return !queue.isEmpty();
   }
 
-  public void merge(Task task) throws InvalidTaskException {
+  public void merge(T task) throws InvalidTaskException {
     // if we alreay have the id in our map, then don't add it to the queue...
     synchronized( taskMap ) {
       task = this.validateTask( task );
@@ -78,14 +78,14 @@
    * Tasks with duplicate keys will be overwritten
    * @throws InvalidTaskException 
    */
-  public void merge(Collection<? extends Task> tasks) throws 
InvalidTaskException {
-    for( Task task : tasks ) {
+  public void merge(Collection<? extends T> tasks) throws InvalidTaskException 
{
+    for( T task : tasks ) {
       merge( task );
     }
   }
 
-  public Task next() {
-    Task task = queue.poll();
+  public T next() {
+    T task = queue.poll();
     if( task != null ) {
       taskMap.remove( task.getId() );
     }
@@ -100,7 +100,7 @@
     }
   }
   
-  public Task validateTask(Task task) throws InvalidTaskException {
+  public T validateTask(T task) throws InvalidTaskException {
     if( taskValidator != null ) {
       task = taskValidator.validateTask( task );
     }
@@ -113,11 +113,11 @@
   //------------------------------------------------------
   //------------------------------------------------------
 
-  public TaskValidator getTaskValidator() {
+  public TaskValidator<T> getTaskValidator() {
     return taskValidator;
   }
 
-  public void setTaskValidator(TaskValidator taskValidator) {
+  public void setTaskValidator(TaskValidator<T> taskValidator) {
     this.taskValidator = taskValidator;
   }
 

Modified: 
incubator/droids/trunk/src/java/org/apache/droids/impl/SimpleTaskQueueWithHistory.java
URL: 
http://svn.apache.org/viewvc/incubator/droids/trunk/src/java/org/apache/droids/impl/SimpleTaskQueueWithHistory.java?rev=709918&r1=709917&r2=709918&view=diff
==============================================================================
--- 
incubator/droids/trunk/src/java/org/apache/droids/impl/SimpleTaskQueueWithHistory.java
 (original)
+++ 
incubator/droids/trunk/src/java/org/apache/droids/impl/SimpleTaskQueueWithHistory.java
 Sun Nov  2 12:12:49 2008
@@ -25,7 +25,7 @@
 /**
  * Extend the task queue to ignore any tasks we have already seen
  */
-public class SimpleTaskQueueWithHistory extends SimpleTaskQueue {
+public class SimpleTaskQueueWithHistory<T extends Task> extends 
SimpleTaskQueue<T> {
   private final java.util.Set<String> previous;
 
   /**
@@ -37,7 +37,7 @@
   }
 
   @Override
-  public void merge(Task task) throws InvalidTaskException {
+  public void merge(T task) throws InvalidTaskException {
     // only add it if we have not seen the taskId before...
     if( previous.add( task.getId() ) ) {
       super.merge( task );

Modified: 
incubator/droids/trunk/src/java/org/apache/droids/impl/SimpleTaskValidator.java
URL: 
http://svn.apache.org/viewvc/incubator/droids/trunk/src/java/org/apache/droids/impl/SimpleTaskValidator.java?rev=709918&r1=709917&r2=709918&view=diff
==============================================================================
--- 
incubator/droids/trunk/src/java/org/apache/droids/impl/SimpleTaskValidator.java 
(original)
+++ 
incubator/droids/trunk/src/java/org/apache/droids/impl/SimpleTaskValidator.java 
Sun Nov  2 12:12:49 2008
@@ -22,7 +22,7 @@
 /**
  * A simple 
  */
-public class SimpleTaskValidator implements TaskValidator {
+public class SimpleTaskValidator<T extends Task> implements TaskValidator<T> {
   private int maxDepth = -1;
 
   public SimpleTaskValidator() {
@@ -33,7 +33,7 @@
     this.maxDepth = maxDepth;
   }
 
-  public Task validateTask(Task task) throws InvalidTaskException {
+  public T validateTask(T task) throws InvalidTaskException {
     if( maxDepth > 0 && task.getDepth() > maxDepth ) {
       throw new InvalidTaskException( 
           "task exceeds maximum depth: ["+task.getDepth() +" > "+ 
maxDepth+"]");


Reply via email to