Author: hadrian
Date: Fri Jan 18 14:48:11 2013
New Revision: 1435167

URL: http://svn.apache.org/viewvc?rev=1435167&view=rev
Log:
ODE-987. Add convient method for creating listeners

Modified:
    ode/trunk/jacob/src/main/java/org/apache/ode/jacob/ProcessUtil.java
    ode/trunk/jacob/src/main/java/org/apache/ode/jacob/ReceiveProcess.java
    
ode/trunk/jacob/src/test/java/org/apache/ode/jacob/examples/cell/JacobCellTest.java
    
ode/trunk/jacob/src/test/java/org/apache/ode/jacob/examples/synch/SynchPrinter.java

Modified: ode/trunk/jacob/src/main/java/org/apache/ode/jacob/ProcessUtil.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/ProcessUtil.java?rev=1435167&r1=1435166&r2=1435167&view=diff
==============================================================================
--- ode/trunk/jacob/src/main/java/org/apache/ode/jacob/ProcessUtil.java 
(original)
+++ ode/trunk/jacob/src/main/java/org/apache/ode/jacob/ProcessUtil.java Fri Jan 
18 14:48:11 2013
@@ -36,4 +36,14 @@ public final class ProcessUtil {
         throw new IllegalArgumentException("Invalid proxy type: "
            + channel == null ? "<null>" : channel.getClass().toString());
     }
+    
+    @SuppressWarnings("serial")
+       public static <T extends Channel> ChannelListener receive(T proxy, T 
listener) {
+       // TODO: NOTE: this *only* works when the listnere doesn't need to be 
Serialiazble really
+       //  because we cannot declare a staic serialVersionUID like this
+       //  once we fix serialization, this can be simplified significantly via 
a dsl
+       return new ReceiveProcess<T>(proxy, listener) {
+               // private static final long serialVersionUID = 
1024137371118887935L;
+        };
+    }
 }

Modified: ode/trunk/jacob/src/main/java/org/apache/ode/jacob/ReceiveProcess.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/ReceiveProcess.java?rev=1435167&r1=1435166&r2=1435167&view=diff
==============================================================================
--- ode/trunk/jacob/src/main/java/org/apache/ode/jacob/ReceiveProcess.java 
(original)
+++ ode/trunk/jacob/src/main/java/org/apache/ode/jacob/ReceiveProcess.java Fri 
Jan 18 14:48:11 2013
@@ -25,16 +25,16 @@ import java.util.Set;
 
 
 @SuppressWarnings("serial")
-public abstract class ReceiveProcess<R> extends ChannelListener {
+public abstract class ReceiveProcess<T extends Channel> extends 
ChannelListener {
     private transient Set<Method> _implementedMethods;
-    private R receiver;
+    private T receiver;
     
-    protected ReceiveProcess(Channel channel, R receiver) throws 
IllegalStateException {
+    protected ReceiveProcess(T channel, T receiver) throws 
IllegalStateException {
         super(channel);
         this.receiver = receiver;
     }
 
-    public R receiver() {
+    public T receiver() {
         return receiver;
     }
 

Modified: 
ode/trunk/jacob/src/test/java/org/apache/ode/jacob/examples/cell/JacobCellTest.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/jacob/src/test/java/org/apache/ode/jacob/examples/cell/JacobCellTest.java?rev=1435167&r1=1435166&r2=1435167&view=diff
==============================================================================
--- 
ode/trunk/jacob/src/test/java/org/apache/ode/jacob/examples/cell/JacobCellTest.java
 (original)
+++ 
ode/trunk/jacob/src/test/java/org/apache/ode/jacob/examples/cell/JacobCellTest.java
 Fri Jan 18 14:48:11 2013
@@ -29,6 +29,8 @@ import org.apache.ode.jacob.Val;
 import org.apache.ode.jacob.vpu.ExecutionQueueImpl;
 import org.apache.ode.jacob.vpu.JacobVPU;
 
+import static org.apache.ode.jacob.ProcessUtil.receive;
+
 
 public class JacobCellTest extends TestCase {
   private static Object _val;
@@ -63,11 +65,11 @@ public class JacobCellTest extends TestC
             Val ret = newChannel(Val.class, "val");
 
             instance(new CELL_<String>(cell, "foo"));
-            object(new ReceiveProcess<Val>(ret, new Val() {
+            object(receive(ret, new Val() {
                 public void val(Object retVal) {
                     _val = retVal;
                 }
-            }) {});
+            }));
             cell.read(ret);
         }
     }

Modified: 
ode/trunk/jacob/src/test/java/org/apache/ode/jacob/examples/synch/SynchPrinter.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/jacob/src/test/java/org/apache/ode/jacob/examples/synch/SynchPrinter.java?rev=1435167&r1=1435166&r2=1435167&view=diff
==============================================================================
--- 
ode/trunk/jacob/src/test/java/org/apache/ode/jacob/examples/synch/SynchPrinter.java
 (original)
+++ 
ode/trunk/jacob/src/test/java/org/apache/ode/jacob/examples/synch/SynchPrinter.java
 Fri Jan 18 14:48:11 2013
@@ -24,6 +24,8 @@ import org.apache.ode.jacob.Synch;
 import org.apache.ode.jacob.vpu.ExecutionQueueImpl;
 import org.apache.ode.jacob.vpu.JacobVPU;
 
+import static org.apache.ode.jacob.ProcessUtil.receive;
+
 /**
  * Example JACOB process illustrating the use of {@link SynchPrint}
  *
@@ -59,18 +61,18 @@ public class SynchPrinter {
         public void run() {
             final SynchPrint p = newChannel(SynchPrint.class);
             instance(new SystemPrinter(p));
-            object(new ReceiveProcess<Synch>(p.print("1"), new Synch() {
+            object(receive(p.print("1"), new Synch() {
                 public void ret() {
-                    object(new ReceiveProcess<Synch>(p.print("2"), new Synch() 
{
+                    object(receive(p.print("2"), new Synch() {
                         public void ret() {
-                            object(new ReceiveProcess<Synch>(p.print("3"), new 
Synch() {
+                            object(receive(p.print("3"), new Synch() {
                                 public void ret() {
                                 }
-                            }) {});
+                            }));
                         }
-                    }) {});
+                    }));
                 }
-            }) {});
+            }));
         }
     }
 


Reply via email to