You are viewing a plain text version of this content. The canonical link for it is here.
Posted to droids-commits@incubator.apache.org by bc...@apache.org on 2011/04/13 08:03:12 UTC

svn commit: r1091681 - in /incubator/droids/trunk: droids-core/src/main/java/org/apache/droids/api/ droids-core/src/main/java/org/apache/droids/impl/ droids-core/src/main/java/org/apache/droids/robot/walker/ droids-core/src/test/java/org/apache/droids/...

Author: bchapuis
Date: Wed Apr 13 08:03:11 2011
New Revision: 1091681

URL: http://svn.apache.org/viewvc?rev=1091681&view=rev
Log:
DROIDS-56: Restored the SequentialTaskMaster.

Added:
    incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/impl/MultiThreadedTaskMaster.java
    incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/impl/SequentialTaskMaster.java
Removed:
    incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/impl/TaskMasterImpl.java
Modified:
    incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/api/   (props changed)
    incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/api/TaskMaster.java
    incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/impl/   (props changed)
    incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/robot/walker/SimpleWalkingDroid.java
    incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/DroidsFactory.java
    incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/examples/FileRenameDroid.java
    incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/examples/SimpleRuntime.java
    incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/impl/   (props changed)
    incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/impl/TestSimpleDroid.java
    incubator/droids/trunk/droids-spring/src/main/resources/org/apache/droids/dynamic/   (props changed)
    incubator/droids/trunk/droids-spring/src/main/resources/org/apache/droids/dynamic/droids-core-context.xml
    incubator/droids/trunk/droids-spring/src/test/resources/   (props changed)
    incubator/droids/trunk/droids-spring/src/test/resources/droids-core-test-context.xml
    incubator/droids/trunk/droids-wicket/src/main/java/org/apache/droids/wicket/component/   (props changed)
    incubator/droids/trunk/droids-wicket/src/main/java/org/apache/droids/wicket/component/DroidPanel.java
    incubator/droids/trunk/droids-wicket/src/main/resources/   (props changed)
    incubator/droids/trunk/droids-wicket/src/main/resources/applicationContext.xml

Propchange: incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/api/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Apr 13 08:03:11 2011
@@ -0,0 +1 @@
+TaskMaster.java.original~

Modified: incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/api/TaskMaster.java
URL: http://svn.apache.org/viewvc/incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/api/TaskMaster.java?rev=1091681&r1=1091680&r2=1091681&view=diff
==============================================================================
--- incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/api/TaskMaster.java (original)
+++ incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/api/TaskMaster.java Wed Apr 13 08:03:11 2011
@@ -28,22 +28,17 @@ public interface TaskMaster<T extends Ta
 
   public enum ExecutionState
   {
-    RUNNING, STOPPED, COMPLETED
+    INITIALIZED, RUNNING, STOPPED, COMPLETED
   };
 
   /**
    * Start the process of running tasks.
-   * l
+   * 
    * @param droid
    */
   void start(final Queue<T> queue, final Droid<T> droid);
 
   /**
-   * Stops the process of running tasks.
-   */
-  void stop();
-
-  /**
    * Blocks until all tasks have completed execution.
    *
    * @param timeout

Propchange: incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/impl/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Apr 13 08:03:11 2011
@@ -1 +1,2 @@
 SequentialTaskMaster.java.original~
+TaskMasterImpl.java.original~

Added: incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/impl/MultiThreadedTaskMaster.java
URL: http://svn.apache.org/viewvc/incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/impl/MultiThreadedTaskMaster.java?rev=1091681&view=auto
==============================================================================
--- incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/impl/MultiThreadedTaskMaster.java (added)
+++ incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/impl/MultiThreadedTaskMaster.java Wed Apr 13 08:03:11 2011
@@ -0,0 +1,384 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.droids.impl;
+
+import java.util.Date;
+import java.util.Queue;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
+import org.apache.droids.AbstractDroid;
+import org.apache.droids.api.DelayTimer;
+import org.apache.droids.api.Droid;
+import org.apache.droids.api.Task;
+import org.apache.droids.api.TaskExceptionHandler;
+import org.apache.droids.api.TaskExceptionResult;
+import org.apache.droids.api.TaskMaster;
+import org.apache.droids.api.TaskMaster.ExecutionState;
+import org.apache.droids.api.WorkMonitor;
+import org.apache.droids.api.Worker;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Responsible for running all the tasks
+ */
+public class MultiThreadedTaskMaster<T extends Task> implements TaskMaster<T>
+{
+
+  protected final Logger log = LoggerFactory.getLogger(AbstractDroid.class);
+  private final long TICKLE_TIME = 250L;
+  /**
+   * The execution state
+   */
+  protected volatile ExecutionState state = ExecutionState.STOPPED;
+  /**
+   * The delay timer
+   */
+  protected DelayTimer delayTimer;
+  /**
+   * The start time
+   */
+  protected Date startTime;
+  /**
+   * The end time
+   */
+  protected Date endTime;
+  /**
+   * The last completed task
+   */
+  protected T lastCompletedTask;
+  /**
+   * The completed task counter
+   */
+  protected AtomicLong completedTasks = new AtomicLong();
+  /**
+   * The monitor that that records the processing of tasks
+   */
+  protected WorkMonitor<T> monitor;
+  /**
+   * The task exception handler
+   */
+  protected TaskExceptionHandler exceptionHandler;
+
+  /*
+   * The pool size
+   */
+  private int poolSize = 1;
+  /**
+   * The pool
+   */
+  private TaskExecutorPool pool;
+
+  @Override
+  public void start(Queue<T> queue, Droid<T> droid)
+  {
+    if (log.isInfoEnabled()) {
+      log.info("Start the executor service.");
+    }
+
+    state = ExecutionState.RUNNING;
+
+    if (pool == null) {
+      this.pool = new TaskExecutorPool();
+    }
+
+    for (int i = 0; i < poolSize; i++) {
+      pool.execute(new TaskExecutor(droid));
+    }
+  }
+
+  /**
+   * Stops the TaskMaster
+   */
+  public void stop()
+  {
+    // debug
+    if (log.isInfoEnabled()) {
+      log.info("Stop the executor service.");
+    }
+
+    state = ExecutionState.STOPPED;
+
+    // Disable new tasks from being submitted
+    pool.shutdown();
+
+    // Wait a while for existing tasks to terminate
+    try {
+      if (!pool.awaitTermination(1, TimeUnit.SECONDS)) {
+
+        // Cancel currently executing tasks
+        pool.shutdownNow();
+
+        // Wait a while for to respond to being canceled
+        if (!pool.awaitTermination(1, TimeUnit.SECONDS)) {
+          if (log.isInfoEnabled()) {
+            log.info("Scheduler did not stop.");
+          }
+        }
+      }
+    } catch (InterruptedException ex) {
+
+      if (log.isInfoEnabled()) {
+        log.info("Force scheduler to stop.");
+      }
+
+      // (Re-)Cancel if current thread also interrupted
+      pool.shutdownNow();
+
+      // Preserve interrupt status
+      Thread.currentThread().interrupt();
+    }
+
+    // debug
+    if (log.isInfoEnabled()) {
+      log.info("Scheduler stopped.");
+    }
+
+  }
+
+  @Override
+  public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException
+  {
+    return pool.awaitTermination(timeout, unit);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  @Override
+  public ExecutionState getExecutionState()
+  {
+    return state;
+  }
+
+  /**
+   * @return
+   * @inheritDoc
+   */
+  public WorkMonitor<T> getMonitor()
+  {
+    return monitor;
+  }
+
+  /**
+   * @param monitor
+   * @inheritDoc
+   */
+  public void setMonitor(WorkMonitor<T> monitor)
+  {
+    if (state == ExecutionState.RUNNING) {
+      throw new IllegalStateException("The TaskMaster must be stopped to set a Monitor.");
+    }
+    this.monitor = monitor;
+  }
+
+  @Override
+  public void setExceptionHandler(TaskExceptionHandler exceptionHandler)
+  {
+    this.exceptionHandler = exceptionHandler;
+  }
+
+  @Override
+  public void setDelayTimer(DelayTimer delayTimer)
+  {
+    this.delayTimer = delayTimer;
+  }
+
+  @Override
+  public Date getFinishedWorking()
+  {
+    return endTime;
+  }
+
+  @Override
+  public T getLastCompletedTask()
+  {
+    return lastCompletedTask;
+  }
+
+  @Override
+  public long getCompletedTasks()
+  {
+    return completedTasks.get();
+  }
+
+  @Override
+  public Date getStartTime()
+  {
+    return startTime;
+  }
+
+  /**
+   * Sets the pool size
+   *
+   * @return
+   */
+  public int getPoolSize()
+  {
+    return poolSize;
+  }
+
+  /**
+   * Returns the size of the pool
+   *
+   * @param poolSize
+   */
+  public void setPoolSize(int poolSize)
+  {
+    pool.setCorePoolSize(this.poolSize = poolSize);
+  }
+
+  private class TaskExecutorPool extends ThreadPoolExecutor
+  {
+
+    private static final long KEEP_ALIVE = 50000L;
+
+    public TaskExecutorPool()
+    {
+      super(poolSize, poolSize, KEEP_ALIVE, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
+      this.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardPolicy());
+    }
+
+    @Override
+    protected void afterExecute(Runnable r, Throwable thrwbl)
+    {
+      super.afterExecute(r, thrwbl);
+
+      // try to reexecute the task runner while
+      // the task queue is not empty and while the pool
+      // is still completing the execution of tasks.
+      TaskExecutor taskExecutor = (TaskExecutor) r;
+      while (taskExecutor.getQueue().size() > 0 || getQueue().size() > 0) {
+        if (taskExecutor.getQueue().size() > 0) {
+          execute(r);
+          return;
+        }
+        try {
+          Thread.sleep(TICKLE_TIME);
+        } catch (InterruptedException e) {
+          log.error("", e);
+        }
+      }
+
+      taskExecutor.getDroid().finished();
+      state = ExecutionState.COMPLETED;
+      shutdownNow();
+
+    }
+  }
+
+  private class TaskExecutor implements Runnable
+  {
+
+    private final Droid<T> droid;
+    private final Queue<T> queue;
+    private final Worker<T> worker;
+
+    public TaskExecutor(Droid<T> droid)
+    {
+      this.droid = droid;
+      this.queue = droid.getQueue();
+      this.worker = droid.getNewWorker();
+    }
+
+    public Droid<T> getDroid()
+    {
+      return droid;
+    }
+
+    public Queue<T> getQueue()
+    {
+      return queue;
+    }
+
+    public Worker getWorker()
+    {
+      return worker;
+    }
+
+    @Override
+    public void run()
+    {
+      // poll the last task
+      T task = queue.poll();
+
+      // execute the task
+      if (task != null) {
+        try {
+          // monitor the execution of the task
+          if (monitor != null) {
+            monitor.beforeExecute(task, worker);
+          }
+
+          // debug
+          if (log.isDebugEnabled()) {
+            log.debug("Worker [" + worker + "] execute task [" + task + "].");
+          }
+
+          // execute the task
+          worker.execute(task);
+
+          // debug
+          if (log.isDebugEnabled()) {
+            log.debug("Worker [" + worker + "] executed task [" + task + "] with success.");
+          }
+
+          // monitor the execution of the task
+          if (monitor != null) {
+            monitor.afterExecute(task, worker, null);
+          }
+
+          // set the monitored variables
+          completedTasks.incrementAndGet();
+          lastCompletedTask = task;
+
+        } catch (Exception ex) {
+          // debug
+          if (log.isDebugEnabled()) {
+            log.debug("Worker [" + worker + "] executed task [" + task + "] without success.");
+          }
+
+          // debug
+          if (log.isErrorEnabled()) {
+            log.error("", ex);
+          }
+
+          // monitor the exception
+          if (monitor != null) {
+            monitor.afterExecute(task, worker, ex);
+          }
+
+          // handler the exception
+          if (ex != null) {
+            TaskExceptionResult result = exceptionHandler.handleException(ex);
+
+            // stop the execution in case of a fatal exception
+            if (TaskExceptionResult.FATAL.equals(result)) {
+              state = ExecutionState.STOPPED;
+            }
+
+            droid.finished();
+            pool.shutdownNow();
+
+          }
+        }
+      }
+    }
+  }
+}

Added: incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/impl/SequentialTaskMaster.java
URL: http://svn.apache.org/viewvc/incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/impl/SequentialTaskMaster.java?rev=1091681&view=auto
==============================================================================
--- incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/impl/SequentialTaskMaster.java (added)
+++ incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/impl/SequentialTaskMaster.java Wed Apr 13 08:03:11 2011
@@ -0,0 +1,169 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.droids.impl;
+
+import java.util.Date;
+import java.util.Queue;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.droids.api.DelayTimer;
+import org.apache.droids.api.Droid;
+import org.apache.droids.api.Task;
+import org.apache.droids.api.TaskExceptionHandler;
+import org.apache.droids.api.TaskExceptionResult;
+import org.apache.droids.api.TaskMaster;
+import org.apache.droids.api.Worker;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class SequentialTaskMaster<T extends Task> implements TaskMaster<T>
+{
+
+  private final Logger log = LoggerFactory.getLogger(SequentialTaskMaster.class);
+  private final Object mutex;
+  private volatile boolean completed;
+  private volatile Date startedWorking = null;
+  private volatile Date finishedWorking = null;
+  private volatile int completedTask = 0;
+  private volatile T lastCompletedTask = null;
+  private volatile ExecutionState state = ExecutionState.INITIALIZED;
+  private DelayTimer delayTimer = null;
+  private TaskExceptionHandler exHandler = null;
+
+  public SequentialTaskMaster() {
+    super();
+    this.mutex = new Object();
+  }
+
+  /**
+   * The queue has been initialized
+   */
+  @Override
+  public synchronized void start(final Queue<T> queue, final Droid<T> droid) {
+    this.completed = false;
+    this.startedWorking = new Date();
+    this.finishedWorking = null;
+    this.completedTask = 0;
+    this.state = ExecutionState.RUNNING;
+
+    boolean terminated = false;
+    while (!terminated) {
+      T task = queue.poll();
+      if (task == null) {
+        break;
+      }
+      if (delayTimer != null) {
+        long delay = delayTimer.getDelayMillis();
+        if (delay > 0) {
+          try {
+            Thread.sleep(delay);
+          } catch (InterruptedException e) {
+          }
+        }
+      }
+      Worker<T> worker = droid.getNewWorker();
+      try {
+        if (!task.isAborted()) {
+          worker.execute(task);
+        }
+        completedTask++;
+        lastCompletedTask = task;
+      } catch (Exception ex) {
+        TaskExceptionResult result = TaskExceptionResult.WARN;
+        if (exHandler != null) {
+          result = exHandler.handleException(ex);
+        }
+        switch (result) {
+          case WARN:
+            log.warn(ex.toString());
+            break;
+          case FATAL:
+            log.warn(ex.getMessage(), ex);
+            terminated = true;
+            break;
+        }
+      }
+    }
+    finishedWorking = new Date();
+    this.state = ExecutionState.STOPPED;
+    droid.finished();
+    synchronized (mutex) {
+      completed = true;
+      mutex.notifyAll();
+    }
+  }
+
+  @Override
+  public final void setExceptionHandler(TaskExceptionHandler exHandler) {
+    this.exHandler = exHandler;
+  }
+
+  @Override
+  public final void setDelayTimer(DelayTimer delayTimer) {
+    this.delayTimer = delayTimer;
+  }
+
+  public boolean isWorking() {
+    return startedWorking != null && finishedWorking == null;
+  }
+
+  @Override
+  public Date getStartTime() {
+    return startedWorking;
+  }
+
+  @Override
+  public Date getFinishedWorking() {
+    return finishedWorking;
+  }
+
+  @Override
+  public long getCompletedTasks() {
+    return completedTask;
+  }
+
+  @Override
+  public T getLastCompletedTask() {
+    return lastCompletedTask;
+  }
+
+  @Override
+  public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {
+    if (timeout < 0) {
+      timeout = 0;
+    }
+    synchronized (this.mutex) {
+      long deadline = System.currentTimeMillis() + unit.toMillis(timeout);
+      long remaining = timeout;
+      while (!completed) {
+        this.mutex.wait(remaining);
+        if (timeout >= 0) {
+          remaining = deadline - System.currentTimeMillis();
+          if (remaining <= 0) {
+            return false; // Reach if timeout is over and no finish.
+          }
+        }
+      }
+    }
+    return true;
+  }
+
+  @Override
+  public ExecutionState getExecutionState() {
+    return state;
+  }
+}

Modified: incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/robot/walker/SimpleWalkingDroid.java
URL: http://svn.apache.org/viewvc/incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/robot/walker/SimpleWalkingDroid.java?rev=1091681&r1=1091680&r2=1091681&view=diff
==============================================================================
--- incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/robot/walker/SimpleWalkingDroid.java (original)
+++ incubator/droids/trunk/droids-core/src/main/java/org/apache/droids/robot/walker/SimpleWalkingDroid.java Wed Apr 13 08:03:11 2011
@@ -28,7 +28,7 @@ import java.util.Queue;
 import org.apache.droids.AbstractDroid;
 import org.apache.droids.exception.InvalidTaskException;
 import org.apache.droids.api.*;
-import org.apache.droids.impl.TaskMasterImpl;
+import org.apache.droids.impl.MultiThreadedTaskMaster;
 
 public class SimpleWalkingDroid extends AbstractDroid<FileTask> implements WalkingDroid
 {
@@ -72,7 +72,7 @@ public class SimpleWalkingDroid extends 
   //------------------------------------------------------------------
   public static void main(String[] args) throws Exception
   {
-    TaskMasterImpl<FileTask> taskMaster = new TaskMasterImpl<FileTask>();
+    MultiThreadedTaskMaster<FileTask> taskMaster = new MultiThreadedTaskMaster<FileTask>();
     taskMaster.setPoolSize(3);
 
     Queue<FileTask> queue = new LinkedList<FileTask>();

Modified: incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/DroidsFactory.java
URL: http://svn.apache.org/viewvc/incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/DroidsFactory.java?rev=1091681&r1=1091680&r2=1091681&view=diff
==============================================================================
--- incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/DroidsFactory.java (original)
+++ incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/DroidsFactory.java Wed Apr 13 08:03:11 2011
@@ -35,10 +35,11 @@ import org.apache.droids.helper.factorie
 import org.apache.droids.helper.factories.ProtocolFactory;
 import org.apache.droids.helper.factories.URLFiltersFactory;
 import org.apache.droids.impl.DefaultTaskExceptionHandler;
-import org.apache.droids.impl.TaskMasterImpl;
+import org.apache.droids.impl.MultiThreadedTaskMaster;
 import org.apache.droids.impl.ExceptionCrawlingDroid;
 import org.apache.droids.impl.ReportCrawlingDroid;
 import org.apache.droids.impl.SaveCrawlingDroid;
+import org.apache.droids.impl.SequentialTaskMaster;
 import org.apache.droids.impl.SimpleTaskQueueWithHistory;
 import org.apache.droids.parse.html.HtmlParser;
 import org.apache.droids.protocol.http.HttpProtocol;
@@ -102,7 +103,7 @@ public class DroidsFactory
     
     SimpleTaskQueueWithHistory<Link> simpleQueue = new SimpleTaskQueueWithHistory<Link>(); 
 
-    TaskMasterImpl<Link> taskMaster = new TaskMasterImpl<Link>();
+    SequentialTaskMaster<Link> taskMaster = new SequentialTaskMaster<Link>();
     taskMaster.setDelayTimer( simpleDelayTimer );
     taskMaster.setExceptionHandler(new DefaultTaskExceptionHandler());
     
@@ -126,8 +127,7 @@ public class DroidsFactory
     SimpleDelayTimer simpleDelayTimer = new SimpleDelayTimer();
     simpleDelayTimer.setDelayMillis(100);
 
-//    SequentialTaskMaster<Link> taskMaster = new SequentialTaskMaster<Link>();
-    TaskMasterImpl<Link> taskMaster = new TaskMasterImpl<Link>();
+    SequentialTaskMaster<Link> taskMaster = new SequentialTaskMaster<Link>();
 //    MultiThreadedTaskMaster<Link> taskMaster = new MultiThreadedTaskMaster<Link>();
     taskMaster.setDelayTimer( simpleDelayTimer );
     taskMaster.setExceptionHandler(new DefaultTaskExceptionHandler());
@@ -156,8 +156,7 @@ public class DroidsFactory
     
     Queue<Link> queue = new LinkedList<Link>();
     
-//    SequentialTaskMaster<Link> taskMaster = new SequentialTaskMaster<Link>();
-    TaskMasterImpl<Link> taskMaster = new TaskMasterImpl<Link>();
+    SequentialTaskMaster<Link> taskMaster = new SequentialTaskMaster<Link>();
 //    MultiThreadedTaskMaster<Link> taskMaster = new MultiThreadedTaskMaster<Link>();
     taskMaster.setDelayTimer( simpleDelayTimer );
     taskMaster.setExceptionHandler(new DefaultTaskExceptionHandler());

Modified: incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/examples/FileRenameDroid.java
URL: http://svn.apache.org/viewvc/incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/examples/FileRenameDroid.java?rev=1091681&r1=1091680&r2=1091681&view=diff
==============================================================================
--- incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/examples/FileRenameDroid.java (original)
+++ incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/examples/FileRenameDroid.java Wed Apr 13 08:03:11 2011
@@ -28,7 +28,7 @@ import java.util.Queue;
 import org.apache.droids.AbstractDroid;
 import org.apache.droids.api.*;
 import org.apache.droids.robot.walker.FileTask;
-import org.apache.droids.impl.TaskMasterImpl;
+import org.apache.droids.impl.MultiThreadedTaskMaster;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -128,7 +128,7 @@ public class FileRenameDroid extends Abs
   //------------------------------------------------------------------
   public static void main(String[] args)
   {
-    TaskMasterImpl<FileTask> taskMaster = new TaskMasterImpl<FileTask>();
+    MultiThreadedTaskMaster<FileTask> taskMaster = new MultiThreadedTaskMaster<FileTask>();
     taskMaster.setPoolSize(3);
 
     Queue<FileTask> queue = new LinkedList<FileTask>();

Modified: incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/examples/SimpleRuntime.java
URL: http://svn.apache.org/viewvc/incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/examples/SimpleRuntime.java?rev=1091681&r1=1091680&r2=1091681&view=diff
==============================================================================
--- incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/examples/SimpleRuntime.java (original)
+++ incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/examples/SimpleRuntime.java Wed Apr 13 08:03:11 2011
@@ -33,7 +33,7 @@ import org.apache.droids.helper.factorie
 import org.apache.droids.helper.factories.ProtocolFactory;
 import org.apache.droids.helper.factories.URLFiltersFactory;
 import org.apache.droids.impl.DefaultTaskExceptionHandler;
-import org.apache.droids.impl.TaskMasterImpl;
+import org.apache.droids.impl.SequentialTaskMaster;
 import org.apache.droids.impl.SysoutCrawlingDroid;
 import org.apache.droids.net.RegexURLFilter;
 import org.apache.droids.parse.html.HtmlParser;
@@ -127,7 +127,7 @@ public class SimpleRuntime {
     
     Queue<Link> simpleQueue = new LinkedList<Link>();
 
-    TaskMasterImpl<Link> taskMaster = new TaskMasterImpl<Link>();
+    SequentialTaskMaster<Link> taskMaster = new SequentialTaskMaster<Link>();
     taskMaster.setDelayTimer( simpleDelayTimer );
     taskMaster.setExceptionHandler( new DefaultTaskExceptionHandler() );
     

Propchange: incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/impl/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Apr 13 08:03:11 2011
@@ -0,0 +1 @@
+TestSimpleDroid.java.original~

Modified: incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/impl/TestSimpleDroid.java
URL: http://svn.apache.org/viewvc/incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/impl/TestSimpleDroid.java?rev=1091681&r1=1091680&r2=1091681&view=diff
==============================================================================
--- incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/impl/TestSimpleDroid.java (original)
+++ incubator/droids/trunk/droids-core/src/test/java/org/apache/droids/impl/TestSimpleDroid.java Wed Apr 13 08:03:11 2011
@@ -26,6 +26,7 @@ import org.apache.droids.api.Droid;
 import org.apache.droids.api.Link;
 import org.apache.droids.api.TaskExceptionHandler;
 import org.apache.droids.api.TaskExceptionResult;
+import org.apache.droids.api.TaskMaster;
 import org.apache.droids.examples.handler.ReportHandler;
 import org.apache.droids.localserver.LocalHttpServer;
 import org.apache.droids.localserver.ResourceHandler;
@@ -88,7 +89,7 @@ public class TestSimpleDroid
     Droid<Link> droid = DroidsFactory.createSimpleExceptionCrawlingDroid(
         targetURI);    
     
-    TaskMasterImpl<Link> taskMaster = (TaskMasterImpl<Link>) droid.getTaskMaster();
+    TaskMaster<Link> taskMaster = (TaskMaster<Link>) droid.getTaskMaster();
     taskMaster.setExceptionHandler(new TaskExceptionHandler() {
 
       public TaskExceptionResult handleException(Exception ex) {

Propchange: incubator/droids/trunk/droids-spring/src/main/resources/org/apache/droids/dynamic/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Apr 13 08:03:11 2011
@@ -0,0 +1 @@
+droids-core-context.xml.original~

Modified: incubator/droids/trunk/droids-spring/src/main/resources/org/apache/droids/dynamic/droids-core-context.xml
URL: http://svn.apache.org/viewvc/incubator/droids/trunk/droids-spring/src/main/resources/org/apache/droids/dynamic/droids-core-context.xml?rev=1091681&r1=1091680&r2=1091681&view=diff
==============================================================================
--- incubator/droids/trunk/droids-spring/src/main/resources/org/apache/droids/dynamic/droids-core-context.xml (original)
+++ incubator/droids/trunk/droids-spring/src/main/resources/org/apache/droids/dynamic/droids-core-context.xml Wed Apr 13 08:03:11 2011
@@ -44,7 +44,7 @@
   </bean>
   
   <bean name="taskMaster"
-    class="org.apache.droids.impl.TaskMasterImpl">
+    class="org.apache.droids.impl.MultiThreadedTaskMaster">
     <property name="exceptionHandler" ref="taskExceptionHandler" />
     <property name="delayTimer" ref="org.apache.droids.delay.SimpleDelayTimer"/>
     <!--<property name="maxThreads" value="${droids.maxThreads}"/>-->

Propchange: incubator/droids/trunk/droids-spring/src/test/resources/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Apr 13 08:03:11 2011
@@ -0,0 +1 @@
+droids-core-test-context.xml.original~

Modified: incubator/droids/trunk/droids-spring/src/test/resources/droids-core-test-context.xml
URL: http://svn.apache.org/viewvc/incubator/droids/trunk/droids-spring/src/test/resources/droids-core-test-context.xml?rev=1091681&r1=1091680&r2=1091681&view=diff
==============================================================================
--- incubator/droids/trunk/droids-spring/src/test/resources/droids-core-test-context.xml (original)
+++ incubator/droids/trunk/droids-spring/src/test/resources/droids-core-test-context.xml Wed Apr 13 08:03:11 2011
@@ -44,7 +44,7 @@
   </bean>
   
   <bean name="taskMaster"
-    class="org.apache.droids.impl.TaskMasterImpl">
+    class="org.apache.droids.impl.MultiThreadedTaskMaster">
     <property name="exceptionHandler" ref="taskExceptionHandler" />
     <property name="delayTimer" ref="org.apache.droids.delay.SimpleDelayTimer"/>
     <!--<property name="maxThreads" value="${droids.maxThreads}"/>-->

Propchange: incubator/droids/trunk/droids-wicket/src/main/java/org/apache/droids/wicket/component/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Apr 13 08:03:11 2011
@@ -0,0 +1 @@
+DroidPanel.java.original~

Modified: incubator/droids/trunk/droids-wicket/src/main/java/org/apache/droids/wicket/component/DroidPanel.java
URL: http://svn.apache.org/viewvc/incubator/droids/trunk/droids-wicket/src/main/java/org/apache/droids/wicket/component/DroidPanel.java?rev=1091681&r1=1091680&r2=1091681&view=diff
==============================================================================
--- incubator/droids/trunk/droids-wicket/src/main/java/org/apache/droids/wicket/component/DroidPanel.java (original)
+++ incubator/droids/trunk/droids-wicket/src/main/java/org/apache/droids/wicket/component/DroidPanel.java Wed Apr 13 08:03:11 2011
@@ -24,7 +24,7 @@ import java.util.Queue;
 
 import org.apache.droids.api.Droid;
 import org.apache.droids.api.Task;
-import org.apache.droids.impl.TaskMasterImpl;
+import org.apache.droids.impl.MultiThreadedTaskMaster;
 import org.apache.droids.monitor.SimpleWorkMonitor;
 import org.apache.droids.monitor.WorkBean;
 import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
@@ -54,7 +54,7 @@ public class DroidPanel extends Panel
   Queue taskQueue;
   
   @SpringBean( name="taskMaster" )
-  TaskMasterImpl taskMaster;
+  MultiThreadedTaskMaster taskMaster;
   
   @SpringBean( name="runningMonitor" )
   SimpleWorkMonitor monitor;

Propchange: incubator/droids/trunk/droids-wicket/src/main/resources/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Apr 13 08:03:11 2011
@@ -0,0 +1 @@
+applicationContext.xml.original~

Modified: incubator/droids/trunk/droids-wicket/src/main/resources/applicationContext.xml
URL: http://svn.apache.org/viewvc/incubator/droids/trunk/droids-wicket/src/main/resources/applicationContext.xml?rev=1091681&r1=1091680&r2=1091681&view=diff
==============================================================================
--- incubator/droids/trunk/droids-wicket/src/main/resources/applicationContext.xml (original)
+++ incubator/droids/trunk/droids-wicket/src/main/resources/applicationContext.xml Wed Apr 13 08:03:11 2011
@@ -35,7 +35,7 @@
 
   <!-- DROIDS -->
   <bean name="taskMaster"
-    class="org.apache.droids.impl.TaskMasterImpl">
+    class="org.apache.droids.impl.MultiThreadedTaskMaster">
     <!-- 
     <property name="delayTimer" ref="org.apache.droids.delay.SimpleDelayTimer"/>
      -->