[jboss-svn-commits] JBL Code SVN: r25809 - labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Mar 24 22:09:35 EDT 2009


Author: stampy88
Date: 2009-03-24 22:09:35 -0400 (Tue, 24 Mar 2009)
New Revision: 25809

Modified:
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskEventSupport.java
Log:
Refactored rest of event support classes per JBRULES-2028

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskEventSupport.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskEventSupport.java	2009-03-25 01:53:31 UTC (rev 25808)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/event/TaskEventSupport.java	2009-03-25 02:09:35 UTC (rev 25809)
@@ -16,101 +16,64 @@
  * limitations under the License.
  */
 
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
+import org.drools.event.AbstractEventSupport;
 
+import java.util.Iterator;
 
-public class TaskEventSupport implements Externalizable {
+/**
+ * @author <a href="mailto:stampy88 at yahoo.com">dave sinclair</a>
+ */
+public class TaskEventSupport extends AbstractEventSupport<TaskEventListener> {
 
-    private static final long serialVersionUID = 400L;
+    public void fireTaskClaimed(final long taskId, final String userId) {
+        final Iterator<TaskEventListener> iter = getEventListenersIterator();
 
-    private List<TaskEventListener> listeners = new CopyOnWriteArrayList<TaskEventListener>();
+        if (iter.hasNext()) {
+            final TaskClaimedEvent event = new TaskClaimedEvent(taskId, userId);
 
-    @SuppressWarnings("unchecked")
-	public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-        listeners = (List<TaskEventListener>)in.readObject();
-    }
-
-    public void writeExternal(ObjectOutput out) throws IOException {
-        out.writeObject(listeners);
-    }
-
-    public void addEventListener(final TaskEventListener listener) {
-        if ( !this.listeners.contains( listener ) ) {
-            this.listeners.add( listener );
+            do {
+                iter.next().taskClaimed(event);
+            } while (iter.hasNext());
         }
     }
 
-    public void removeEventListener(final TaskEventListener listener) {
-        this.listeners.remove( listener );
-    }
+    public void fireTaskCompleted(final long taskId, final String userId) {
+        final Iterator<TaskEventListener> iter = getEventListenersIterator();
 
-    public List<TaskEventListener> getEventListeners() {
-        return Collections.unmodifiableList( this.listeners );
-    }
+        if (iter.hasNext()) {
+            final TaskCompletedEvent event = new TaskCompletedEvent(taskId, userId);
 
-    public int size() {
-        return this.listeners.size();
+            do {
+                iter.next().taskCompleted(event);
+            } while (iter.hasNext());
+        }
     }
 
-    public boolean isEmpty() {
-        return this.listeners.isEmpty();
-    }
-    
-    public void fireTaskClaimed(final long taskId, final String userId) {
-        if (this.listeners.isEmpty()) {
-			return;
-		}
+    public void fireTaskFailed(final long taskId, final String userId) {
+        final Iterator<TaskEventListener> iter = getEventListenersIterator();
 
-		final TaskClaimedEvent event = new TaskClaimedEvent(taskId, userId);
+        if (iter.hasNext()) {
+            final TaskFailedEvent event = new TaskFailedEvent(taskId, userId);
 
-		for (TaskEventListener listener : listeners) {
-			listener.taskClaimed(event);
-		}
-    }    
-
-    public void fireTaskCompleted(final long taskId, final String userId) {
-        if ( this.listeners.isEmpty() ) {
-            return;
+            do {
+                iter.next().taskFailed(event);
+            } while (iter.hasNext());
         }
+    }
 
-        final TaskCompletedEvent event = new TaskCompletedEvent( taskId, userId );
-        
-        for ( TaskEventListener listener: listeners) {
-            listener.taskCompleted( event );
-        }
-    } 
-    
-    public void fireTaskFailed(final long taskId, final String userId) {
-        if ( this.listeners.isEmpty() ) {
-            return;
-        }
-
-        final TaskFailedEvent event = new TaskFailedEvent( taskId, userId );
-        
-        for ( TaskEventListener listener: listeners) {
-            listener.taskFailed( event );
-        }
-    } 
-    
     public void fireTaskSkipped(final long taskId, final String userId) {
-        if ( this.listeners.isEmpty() ) {
-            return;
-        }
+        final Iterator<TaskEventListener> iter = getEventListenersIterator();
 
-        final TaskSkippedEvent event = new TaskSkippedEvent( taskId, userId );
-        
-        for ( TaskEventListener listener: listeners) {
-            listener.taskSkipped( event );
+        if (iter.hasNext()) {
+            final TaskSkippedEvent event = new TaskSkippedEvent(taskId, userId);
+
+            do {
+                iter.next().taskSkipped(event);
+            } while (iter.hasNext());
         }
-    } 
-    
+    }
+
     public void reset() {
-        this.listeners.clear();
+        this.clear();
     }
 }
\ No newline at end of file




More information about the jboss-svn-commits mailing list