|
From: <ha...@us...> - 2007-03-11 19:41:32
|
Revision: 1603
http://svn.sourceforge.net/cogkit/?rev=1603&view=rev
Author: hategan
Date: 2007-03-11 12:41:26 -0700 (Sun, 11 Mar 2007)
Log Message:
-----------
interesting logic there
Modified Paths:
--------------
trunk/current/src/cog/modules/abstraction-common/src/org/globus/cog/abstraction/impl/common/task/FileOperationTaskHandler.java
Modified: trunk/current/src/cog/modules/abstraction-common/src/org/globus/cog/abstraction/impl/common/task/FileOperationTaskHandler.java
===================================================================
--- trunk/current/src/cog/modules/abstraction-common/src/org/globus/cog/abstraction/impl/common/task/FileOperationTaskHandler.java 2007-03-11 19:38:27 UTC (rev 1602)
+++ trunk/current/src/cog/modules/abstraction-common/src/org/globus/cog/abstraction/impl/common/task/FileOperationTaskHandler.java 2007-03-11 19:41:26 UTC (rev 1603)
@@ -44,16 +44,15 @@
}
String provider = task.getService(0).getProvider().toLowerCase();
TaskHandler taskHandler = (TaskHandler) this.mapping.get(provider);
- if (taskHandler != null) {
- taskHandler.submit(task);
- } else {
+ if (taskHandler == null) {
try {
taskHandler = createTaskHandler(provider);
} catch (InvalidProviderException ipe) {
throw new TaskSubmissionException("Cannot submit task", ipe);
}
- taskHandler.submit(task);
}
+
+ taskHandler.submit(task);
}
public void suspend(Task task) throws InvalidSecurityContextException,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ha...@us...> - 2007-03-12 02:08:25
|
Revision: 1625
http://svn.sourceforge.net/cogkit/?rev=1625&view=rev
Author: hategan
Date: 2007-03-11 19:08:19 -0700 (Sun, 11 Mar 2007)
Log Message:
-----------
cleaned up and fixed get*Tasks()
Modified Paths:
--------------
trunk/current/src/cog/modules/abstraction-common/src/org/globus/cog/abstraction/impl/common/task/FileOperationTaskHandler.java
Modified: trunk/current/src/cog/modules/abstraction-common/src/org/globus/cog/abstraction/impl/common/task/FileOperationTaskHandler.java
===================================================================
--- trunk/current/src/cog/modules/abstraction-common/src/org/globus/cog/abstraction/impl/common/task/FileOperationTaskHandler.java 2007-03-11 22:47:29 UTC (rev 1624)
+++ trunk/current/src/cog/modules/abstraction-common/src/org/globus/cog/abstraction/impl/common/task/FileOperationTaskHandler.java 2007-03-12 02:08:19 UTC (rev 1625)
@@ -8,22 +8,21 @@
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.List;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
import org.globus.cog.abstraction.impl.common.AbstractionFactory;
import org.globus.cog.abstraction.impl.common.ProviderMethodException;
-import org.globus.cog.abstraction.interfaces.Status;
import org.globus.cog.abstraction.interfaces.Task;
import org.globus.cog.abstraction.interfaces.TaskHandler;
public class FileOperationTaskHandler implements TaskHandler {
- private Hashtable mapping;
+ private Map mapping;
private int type;
public FileOperationTaskHandler() {
- this.mapping = new Hashtable();
+ this.mapping = new HashMap();
this.type = TaskHandler.FILE_OPERATION;
}
@@ -35,171 +34,177 @@
return this.type;
}
- public void submit(Task task) throws IllegalSpecException,
- InvalidSecurityContextException, InvalidServiceContactException,
- TaskSubmissionException {
+ protected TaskHandler getHandler(Task task) throws TaskSubmissionException {
if (task.getType() != Task.FILE_OPERATION) {
throw new TaskSubmissionException(
"File operation handler can only handle file operation tasks");
}
String provider = task.getService(0).getProvider().toLowerCase();
- TaskHandler taskHandler = (TaskHandler) this.mapping.get(provider);
- if (taskHandler == null) {
- try {
- taskHandler = createTaskHandler(provider);
- } catch (InvalidProviderException ipe) {
- throw new TaskSubmissionException("Cannot submit task", ipe);
- }
+ TaskHandler th = null;
+ synchronized (this.mapping) {
+ th = (TaskHandler) this.mapping.get(provider);
}
-
- taskHandler.submit(task);
+ if (th == null) {
+ throw new TaskSubmissionException("Provider " + provider
+ + " unknown");
+ }
+ else {
+ return th;
+ }
}
- public void suspend(Task task) throws InvalidSecurityContextException,
- TaskSubmissionException {
+ protected TaskHandler getOrCreateHandler(Task task)
+ throws TaskSubmissionException, InvalidProviderException {
if (task.getType() != Task.FILE_OPERATION) {
throw new TaskSubmissionException(
"File operation handler can only handle file operation tasks");
}
String provider = task.getService(0).getProvider().toLowerCase();
- TaskHandler taskHandler = (TaskHandler) this.mapping.get(provider);
- if (taskHandler != null) {
- taskHandler.suspend(task);
- } else {
- throw new TaskSubmissionException("Provider " + provider
- + " unknown");
+ synchronized (this.mapping) {
+ TaskHandler th = (TaskHandler) this.mapping.get(provider);
+ if (th == null) {
+ th = createTaskHandler(task);
+ }
+ return th;
}
}
- public void resume(Task task) throws InvalidSecurityContextException,
+ public void submit(Task task) throws IllegalSpecException,
+ InvalidSecurityContextException, InvalidServiceContactException,
TaskSubmissionException {
- if (task.getType() != Task.FILE_OPERATION) {
- throw new TaskSubmissionException(
- "File operation handler can only handle file operation tasks");
+ TaskHandler taskHandler;
+ try {
+ taskHandler = getOrCreateHandler(task);
}
- String provider = task.getService(0).getProvider().toLowerCase();
- TaskHandler taskHandler = (TaskHandler) this.mapping.get(provider);
- if (taskHandler != null) {
- taskHandler.resume(task);
- } else {
- throw new TaskSubmissionException("Provider " + provider
- + " unknown");
+ catch (InvalidProviderException ipe) {
+ throw new TaskSubmissionException("Cannot submit task", ipe);
}
+ taskHandler.submit(task);
}
+ public void suspend(Task task) throws InvalidSecurityContextException,
+ TaskSubmissionException {
+ getHandler(task).suspend(task);
+ }
+
+ public void resume(Task task) throws InvalidSecurityContextException,
+ TaskSubmissionException {
+ getHandler(task).suspend(task);
+ }
+
public void cancel(Task task) throws InvalidSecurityContextException,
TaskSubmissionException {
- if (task.getType() != Task.FILE_OPERATION) {
- throw new TaskSubmissionException(
- "File operation handler can only handle file operation tasks");
- }
- String provider = task.getService(0).getProvider().toLowerCase();
- TaskHandler taskHandler = (TaskHandler) this.mapping.get(provider);
- if (taskHandler != null) {
- taskHandler.cancel(task);
- } else {
- task.setStatus(Status.CANCELED);
- }
+ getHandler(task).cancel(task);
}
public void remove(Task task) throws ActiveTaskException {
- String provider = task.getService(0).getProvider().toLowerCase();
+ String provider = task.getService(0).getProvider().toLowerCase();
TaskHandler taskHandler = (TaskHandler) this.mapping.get(provider);
if (taskHandler != null) {
taskHandler.remove(task);
}
}
+ private static interface Collector {
+ Collection collect(TaskHandler th);
+ }
+
+ public static final Collector COLLECTOR_ALL = new Collector() {
+ public Collection collect(TaskHandler th) {
+ return th.getAllTasks();
+ }
+ };
+
+ public static final Collector COLLECTOR_ACTIVE = new Collector() {
+ public Collection collect(TaskHandler th) {
+ return th.getActiveTasks();
+ }
+ };
+
+ public static final Collector COLLECTOR_SUSPENDED = new Collector() {
+ public Collection collect(TaskHandler th) {
+ return th.getSuspendedTasks();
+ }
+ };
+
+ public static final Collector COLLECTOR_RESUMED = new Collector() {
+ public Collection collect(TaskHandler th) {
+ return th.getResumedTasks();
+ }
+ };
+
+ public static final Collector COLLECTOR_COMPLETED = new Collector() {
+ public Collection collect(TaskHandler th) {
+ return th.getCompletedTasks();
+ }
+ };
+
+ public static final Collector COLLECTOR_FAILED = new Collector() {
+ public Collection collect(TaskHandler th) {
+ return th.getFailedTasks();
+ }
+ };
+
+ public static final Collector COLLECTOR_CANCELED = new Collector() {
+ public Collection collect(TaskHandler th) {
+ return th.getCanceledTasks();
+ }
+ };
+
public Collection getAllTasks() {
- // extract all the tasks from various TaskHandlers
- List list = new ArrayList();
- Enumeration e1 = this.mapping.elements();
- TaskHandler handler;
- while (e1.hasMoreElements()) {
- handler = (TaskHandler) e1.nextElement();
- list.addAll(handler.getAllTasks());
+ return getTasks(COLLECTOR_ALL);
+ }
+
+ private Collection getTasks(final Collector collector) {
+ // extract tasks from various TaskHandlers
+ ArrayList list = new ArrayList();
+ Iterator i = this.mapping.values().iterator();
+ while (i.hasNext()) {
+ TaskHandler handler = (TaskHandler) i.next();
+ list.addAll(collector.collect(handler));
}
return list;
}
public Collection getActiveTasks() {
// extract all the active tasks from various TaskHandlers
- List list = new ArrayList();
- Enumeration e1 = this.mapping.elements();
- TaskHandler handler;
- while (e1.hasMoreElements()) {
- handler = (TaskHandler) e1.nextElement();
- list.addAll(handler.getAllTasks());
- }
- return list;
+ return getTasks(COLLECTOR_ACTIVE);
}
public Collection getFailedTasks() {
// extract all the failed tasks from various TaskHandlers
- List list = new ArrayList();
- Enumeration e1 = this.mapping.elements();
- TaskHandler handler;
- while (e1.hasMoreElements()) {
- handler = (TaskHandler) e1.nextElement();
- list.addAll(handler.getAllTasks());
- }
- return list;
+ return getTasks(COLLECTOR_FAILED);
}
public Collection getCompletedTasks() {
// extract all the tasks from various TaskHandlers
- List list = new ArrayList();
- Enumeration e1 = this.mapping.elements();
- TaskHandler handler;
- while (e1.hasMoreElements()) {
- handler = (TaskHandler) e1.nextElement();
- list.addAll(handler.getAllTasks());
- }
- return list;
+ return getTasks(COLLECTOR_COMPLETED);
}
public Collection getSuspendedTasks() {
// extract all the tasks from various TaskHandlers
- List list = new ArrayList();
- Enumeration e1 = this.mapping.elements();
- TaskHandler handler;
- while (e1.hasMoreElements()) {
- handler = (TaskHandler) e1.nextElement();
- list.addAll(handler.getAllTasks());
- }
- return list;
+ return getTasks(COLLECTOR_SUSPENDED);
}
public Collection getResumedTasks() {
// extract all the tasks from various TaskHandlers
- List list = new ArrayList();
- Enumeration e1 = this.mapping.elements();
- TaskHandler handler;
- while (e1.hasMoreElements()) {
- handler = (TaskHandler) e1.nextElement();
- list.addAll(handler.getAllTasks());
- }
- return list;
+ return getTasks(COLLECTOR_RESUMED);
}
public Collection getCanceledTasks() {
// extract all the tasks from various TaskHandlers
- List list = new ArrayList();
- Enumeration e1 = this.mapping.elements();
- TaskHandler handler;
- while (e1.hasMoreElements()) {
- handler = (TaskHandler) e1.nextElement();
- list.addAll(handler.getAllTasks());
- }
- return list;
+ return getTasks(COLLECTOR_CANCELED);
}
- private TaskHandler createTaskHandler(String provider)
+ private TaskHandler createTaskHandler(Task task)
throws InvalidProviderException {
+ String provider = task.getService(0).getProvider().toLowerCase();
TaskHandler taskHandler;
try {
- taskHandler = AbstractionFactory.newFileOperationTaskHandler(provider);
- } catch (ProviderMethodException e) {
+ taskHandler = AbstractionFactory
+ .newFileOperationTaskHandler(provider);
+ }
+ catch (ProviderMethodException e) {
throw new InvalidProviderException(
"Cannot create new task handler for provider " + provider,
e);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ha...@us...> - 2008-02-12 17:04:08
|
Revision: 1883
http://cogkit.svn.sourceforge.net/cogkit/?rev=1883&view=rev
Author: hategan
Date: 2008-02-12 09:04:05 -0800 (Tue, 12 Feb 2008)
Log Message:
-----------
added status
Modified Paths:
--------------
trunk/current/src/cog/modules/abstraction-common/src/org/globus/cog/abstraction/impl/common/task/FileOperationTaskHandler.java
Modified: trunk/current/src/cog/modules/abstraction-common/src/org/globus/cog/abstraction/impl/common/task/FileOperationTaskHandler.java
===================================================================
--- trunk/current/src/cog/modules/abstraction-common/src/org/globus/cog/abstraction/impl/common/task/FileOperationTaskHandler.java 2008-02-12 17:00:38 UTC (rev 1882)
+++ trunk/current/src/cog/modules/abstraction-common/src/org/globus/cog/abstraction/impl/common/task/FileOperationTaskHandler.java 2008-02-12 17:04:05 UTC (rev 1883)
@@ -14,6 +14,7 @@
import org.globus.cog.abstraction.impl.common.AbstractionFactory;
import org.globus.cog.abstraction.impl.common.ProviderMethodException;
+import org.globus.cog.abstraction.interfaces.Status;
import org.globus.cog.abstraction.interfaces.Task;
import org.globus.cog.abstraction.interfaces.TaskHandler;
@@ -73,6 +74,7 @@
InvalidSecurityContextException, InvalidServiceContactException,
TaskSubmissionException {
TaskHandler taskHandler;
+ task.setStatus(Status.SUBMITTING);
try {
taskHandler = getOrCreateHandler(task);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|