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