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+"]");