You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by gb...@apache.org on 2010/04/17 19:40:03 UTC

svn commit: r935215 - in /pivot/trunk: core/src/org/apache/pivot/io/ core/src/org/apache/pivot/util/concurrent/ web/src/org/apache/pivot/web/ wtk/src/org/apache/pivot/wtk/media/

Author: gbrown
Date: Sat Apr 17 17:40:03 2010
New Revision: 935215

URL: http://svn.apache.org/viewvc?rev=935215&view=rev
Log:
Eliminate Dispatcher class and replace with ExecutorService (resolves PIVOT-35).


Removed:
    pivot/trunk/core/src/org/apache/pivot/util/concurrent/Dispatcher.java
Modified:
    pivot/trunk/core/src/org/apache/pivot/io/IOTask.java
    pivot/trunk/core/src/org/apache/pivot/util/concurrent/Task.java
    pivot/trunk/core/src/org/apache/pivot/util/concurrent/TaskGroup.java
    pivot/trunk/core/src/org/apache/pivot/util/concurrent/TaskSequence.java
    pivot/trunk/web/src/org/apache/pivot/web/DeleteQuery.java
    pivot/trunk/web/src/org/apache/pivot/web/GetQuery.java
    pivot/trunk/web/src/org/apache/pivot/web/PostQuery.java
    pivot/trunk/web/src/org/apache/pivot/web/PutQuery.java
    pivot/trunk/web/src/org/apache/pivot/web/Query.java
    pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Image.java

Modified: pivot/trunk/core/src/org/apache/pivot/io/IOTask.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/io/IOTask.java?rev=935215&r1=935214&r2=935215&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/io/IOTask.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/io/IOTask.java Sat Apr 17 17:40:03 2010
@@ -19,12 +19,11 @@ package org.apache.pivot.io;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.util.concurrent.ExecutorService;
 
 import org.apache.pivot.util.concurrent.AbortException;
-import org.apache.pivot.util.concurrent.Dispatcher;
 import org.apache.pivot.util.concurrent.Task;
 
-
 /**
  * Abstract base class for input/output tasks.
  */
@@ -201,7 +200,7 @@ public abstract class IOTask<V> extends 
         super();
     }
 
-    public IOTask(Dispatcher dispatcher) {
-        super(dispatcher);
+    public IOTask(ExecutorService executorService) {
+        super(executorService);
     }
 }

Modified: pivot/trunk/core/src/org/apache/pivot/util/concurrent/Task.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/util/concurrent/Task.java?rev=935215&r1=935214&r2=935215&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/util/concurrent/Task.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/util/concurrent/Task.java Sat Apr 17 17:40:03 2010
@@ -16,17 +16,20 @@
  */
 package org.apache.pivot.util.concurrent;
 
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
 /**
  * Abstract base class for "tasks". A task is an asynchronous operation that
  * may optionally return a value.
  *
- * @param V
+ * @param <V>
  * The type of the value returned by the operation. May be {@link Void} to
  * indicate that the task does not return a value.
  */
 public abstract class Task<V> {
     /**
-     * Task execution callback that is posted to the dispatcher queue.
+     * Task execution callback that is posted to the executor service.
      */
     private class ExecuteCallback implements Runnable {
         @Override
@@ -61,7 +64,7 @@ public abstract class Task<V> {
         }
     }
 
-    private Dispatcher dispatcher = null;
+    private ExecutorService executorService;
 
     private V result = null;
     private Exception fault = null;
@@ -70,20 +73,22 @@ public abstract class Task<V> {
     protected volatile long timeout = Long.MAX_VALUE;
     protected volatile boolean abort = false;
 
-    private ExecuteCallback executeCallback = null;
+    public static final ExecutorService DEFAULT_EXECUTOR_SERVICE;
 
-    private static Dispatcher DEFAULT_DISPATCHER = new Dispatcher();
+    static {
+        DEFAULT_EXECUTOR_SERVICE = Executors.newCachedThreadPool();
+    }
 
     public Task() {
-        this(DEFAULT_DISPATCHER);
+        this(DEFAULT_EXECUTOR_SERVICE);
     }
 
-    public Task(Dispatcher dispatcher) {
-        if (dispatcher == null) {
-            throw new IllegalArgumentException("dispatcher is null.");
+    public Task(ExecutorService executorService) {
+        if (executorService == null) {
+            throw new IllegalArgumentException("executorService is null.");
         }
 
-        this.dispatcher = dispatcher;
+        this.executorService = executorService;
     }
 
     /**
@@ -121,16 +126,16 @@ public abstract class Task<V> {
         fault = null;
         abort = false;
 
-        // Create a new execute callback and post it to the dispatcher
-        executeCallback = new ExecuteCallback();
-        dispatcher.getPendingQueue().enqueue(executeCallback);
+        // Create a new execute callback and post it to the executor service
+        ExecuteCallback executeCallback = new ExecuteCallback();
+        executorService.submit(executeCallback);
     }
 
     /**
-     * Returns the dispatcher used to execute this task.
+     * Returns the executor service used to execute this task.
      */
-    public Dispatcher getDispatcher() {
-        return dispatcher;
+    public ExecutorService getExecutorService() {
+        return executorService;
     }
 
     /**

Modified: pivot/trunk/core/src/org/apache/pivot/util/concurrent/TaskGroup.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/util/concurrent/TaskGroup.java?rev=935215&r1=935214&r2=935215&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/util/concurrent/TaskGroup.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/util/concurrent/TaskGroup.java Sat Apr 17 17:40:03 2010
@@ -17,6 +17,7 @@
 package org.apache.pivot.util.concurrent;
 
 import java.util.Iterator;
+import java.util.concurrent.ExecutorService;
 
 import org.apache.pivot.collections.Group;
 import org.apache.pivot.collections.HashSet;
@@ -33,11 +34,11 @@ public class TaskGroup extends Task<Void
     private int complete = 0;
 
     public TaskGroup() {
-        super();
+        this(DEFAULT_EXECUTOR_SERVICE);
     }
 
-    public TaskGroup(Dispatcher dispatcher) {
-        super(dispatcher);
+    public TaskGroup(ExecutorService executorService) {
+        super(executorService);
     }
 
     @Override

Modified: pivot/trunk/core/src/org/apache/pivot/util/concurrent/TaskSequence.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/util/concurrent/TaskSequence.java?rev=935215&r1=935214&r2=935215&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/util/concurrent/TaskSequence.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/util/concurrent/TaskSequence.java Sat Apr 17 17:40:03 2010
@@ -17,6 +17,7 @@
 package org.apache.pivot.util.concurrent;
 
 import java.util.Iterator;
+import java.util.concurrent.ExecutorService;
 
 import org.apache.pivot.collections.ArrayList;
 import org.apache.pivot.collections.Sequence;
@@ -33,11 +34,11 @@ public class TaskSequence extends Task<V
     private int complete = 0;
 
     public TaskSequence() {
-        super();
+        this(DEFAULT_EXECUTOR_SERVICE);
     }
 
-    public TaskSequence(Dispatcher dispatcher) {
-        super(dispatcher);
+    public TaskSequence(ExecutorService executorService) {
+        super(executorService);
     }
 
     @Override

Modified: pivot/trunk/web/src/org/apache/pivot/web/DeleteQuery.java
URL: http://svn.apache.org/viewvc/pivot/trunk/web/src/org/apache/pivot/web/DeleteQuery.java?rev=935215&r1=935214&r2=935215&view=diff
==============================================================================
--- pivot/trunk/web/src/org/apache/pivot/web/DeleteQuery.java (original)
+++ pivot/trunk/web/src/org/apache/pivot/web/DeleteQuery.java Sat Apr 17 17:40:03 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.pivot.web;
 
+import java.util.concurrent.ExecutorService;
+
 /**
  * Executes an HTTP DELETE operation.
  */
@@ -27,7 +29,12 @@ public class DeleteQuery extends Query<V
     }
 
     public DeleteQuery(String hostname, int port, String path, boolean secure) {
-        super(hostname, port, path, secure);
+        this(hostname, port, path, secure, DEFAULT_EXECUTOR_SERVICE);
+    }
+
+    public DeleteQuery(String hostname, int port, String path, boolean secure,
+        ExecutorService executorService) {
+        super(hostname, port, path, secure, executorService);
     }
 
     @Override

Modified: pivot/trunk/web/src/org/apache/pivot/web/GetQuery.java
URL: http://svn.apache.org/viewvc/pivot/trunk/web/src/org/apache/pivot/web/GetQuery.java?rev=935215&r1=935214&r2=935215&view=diff
==============================================================================
--- pivot/trunk/web/src/org/apache/pivot/web/GetQuery.java (original)
+++ pivot/trunk/web/src/org/apache/pivot/web/GetQuery.java Sat Apr 17 17:40:03 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.pivot.web;
 
+import java.util.concurrent.ExecutorService;
+
 /**
  * Executes an HTTP GET operation.
  */
@@ -27,7 +29,12 @@ public class GetQuery extends Query<Obje
     }
 
     public GetQuery(String hostname, int port, String path, boolean secure) {
-        super(hostname, port, path, secure);
+        this(hostname, port, path, secure, DEFAULT_EXECUTOR_SERVICE);
+    }
+
+    public GetQuery(String hostname, int port, String path, boolean secure,
+        ExecutorService executorService) {
+        super(hostname, port, path, secure, executorService);
     }
 
     @Override

Modified: pivot/trunk/web/src/org/apache/pivot/web/PostQuery.java
URL: http://svn.apache.org/viewvc/pivot/trunk/web/src/org/apache/pivot/web/PostQuery.java?rev=935215&r1=935214&r2=935215&view=diff
==============================================================================
--- pivot/trunk/web/src/org/apache/pivot/web/PostQuery.java (original)
+++ pivot/trunk/web/src/org/apache/pivot/web/PostQuery.java Sat Apr 17 17:40:03 2010
@@ -18,6 +18,7 @@ package org.apache.pivot.web;
 
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.concurrent.ExecutorService;
 
 /**
  * Executes an HTTP POST operation.
@@ -32,7 +33,12 @@ public class PostQuery extends Query<URL
     }
 
     public PostQuery(String hostname, int port, String path, boolean secure) {
-        super(hostname, port, path, secure);
+        this(hostname, port, path, secure, DEFAULT_EXECUTOR_SERVICE);
+    }
+
+    public PostQuery(String hostname, int port, String path, boolean secure,
+        ExecutorService executorService) {
+        super(hostname, port, path, secure, executorService);
     }
 
     @Override

Modified: pivot/trunk/web/src/org/apache/pivot/web/PutQuery.java
URL: http://svn.apache.org/viewvc/pivot/trunk/web/src/org/apache/pivot/web/PutQuery.java?rev=935215&r1=935214&r2=935215&view=diff
==============================================================================
--- pivot/trunk/web/src/org/apache/pivot/web/PutQuery.java (original)
+++ pivot/trunk/web/src/org/apache/pivot/web/PutQuery.java Sat Apr 17 17:40:03 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.pivot.web;
 
+import java.util.concurrent.ExecutorService;
+
 /**
  * Executes an HTTP PUT operation.
  */
@@ -29,7 +31,12 @@ public class PutQuery extends Query<Bool
     }
 
     public PutQuery(String hostname, int port, String path, boolean secure) {
-        super(hostname, port, path, secure);
+        this(hostname, port, path, secure, DEFAULT_EXECUTOR_SERVICE);
+    }
+
+    public PutQuery(String hostname, int port, String path, boolean secure,
+        ExecutorService executorService) {
+        super(hostname, port, path, secure, executorService);
     }
 
     @Override

Modified: pivot/trunk/web/src/org/apache/pivot/web/Query.java
URL: http://svn.apache.org/viewvc/pivot/trunk/web/src/org/apache/pivot/web/Query.java?rev=935215&r1=935214&r2=935215&view=diff
==============================================================================
--- pivot/trunk/web/src/org/apache/pivot/web/Query.java (original)
+++ pivot/trunk/web/src/org/apache/pivot/web/Query.java Sat Apr 17 17:40:03 2010
@@ -25,6 +25,7 @@ import java.net.MalformedURLException;
 import java.net.Proxy;
 import java.net.URL;
 import java.net.URLEncoder;
+import java.util.concurrent.ExecutorService;
 
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.HttpsURLConnection;
@@ -34,8 +35,6 @@ import org.apache.pivot.serialization.JS
 import org.apache.pivot.serialization.SerializationException;
 import org.apache.pivot.serialization.Serializer;
 import org.apache.pivot.util.ListenerList;
-import org.apache.pivot.util.concurrent.Dispatcher;
-
 
 /**
  * Abstract base class for web queries. A web query is an asynchronous operation
@@ -151,7 +150,6 @@ public abstract class Query<V> extends I
     private QueryListenerList<V> queryListeners = new QueryListenerList<V>();
 
     public static final int DEFAULT_PORT = -1;
-    public static final Dispatcher DEFAULT_DISPATCHER = new Dispatcher();
 
     private static final String HTTP_PROTOCOL = "http";
     private static final String HTTPS_PROTOCOL = "https";
@@ -175,8 +173,9 @@ public abstract class Query<V> extends I
      * @param path
      * @param secure
      */
-    public Query(String hostname, int port, String path, boolean secure) {
-        super(DEFAULT_DISPATCHER);
+    public Query(String hostname, int port, String path, boolean secure,
+        ExecutorService executorService) {
+        super(executorService);
 
         try {
             locationContext = new URL(secure ? HTTPS_PROTOCOL : HTTP_PROTOCOL,
@@ -184,7 +183,6 @@ public abstract class Query<V> extends I
         } catch (MalformedURLException exception) {
             throw new IllegalArgumentException("Unable to construct context URL.", exception);
         }
-
     }
 
     public abstract Method getMethod();

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Image.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Image.java?rev=935215&r1=935214&r2=935215&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Image.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Image.java Sat Apr 17 17:40:03 2010
@@ -21,11 +21,11 @@ import java.io.BufferedInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
+import java.util.concurrent.ExecutorService;
 
 import org.apache.pivot.io.IOTask;
 import org.apache.pivot.serialization.SerializationException;
 import org.apache.pivot.util.ListenerList;
-import org.apache.pivot.util.concurrent.Dispatcher;
 import org.apache.pivot.util.concurrent.TaskExecutionException;
 import org.apache.pivot.util.concurrent.TaskListener;
 import org.apache.pivot.wtk.Dimensions;
@@ -70,14 +70,12 @@ public abstract class Image implements V
     public static class LoadTask extends IOTask<Image> {
         private URL location = null;
 
-        private static Dispatcher DEFAULT_DISPATCHER = new Dispatcher();
-
         public LoadTask(URL location) {
-            this(location, DEFAULT_DISPATCHER);
+            this(location, DEFAULT_EXECUTOR_SERVICE);
         }
 
-        public LoadTask(URL location, Dispatcher dispatcher) {
-            super(dispatcher);
+        public LoadTask(URL location, ExecutorService executorService) {
+            super(executorService);
             this.location = location;
         }