ODE-987. Add convient method for creating listeners
git-svn-id: https://svn.apache.org/repos/asf/ode/trunk@1435167 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/ode/jacob/ProcessUtil.java b/src/main/java/org/apache/ode/jacob/ProcessUtil.java
index fb1f196..50c84d8 100644
--- a/src/main/java/org/apache/ode/jacob/ProcessUtil.java
+++ b/src/main/java/org/apache/ode/jacob/ProcessUtil.java
@@ -36,4 +36,14 @@
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;
+ };
+ }
}
diff --git a/src/main/java/org/apache/ode/jacob/ReceiveProcess.java b/src/main/java/org/apache/ode/jacob/ReceiveProcess.java
index 9b53b3e..002aee3 100644
--- a/src/main/java/org/apache/ode/jacob/ReceiveProcess.java
+++ b/src/main/java/org/apache/ode/jacob/ReceiveProcess.java
@@ -25,16 +25,16 @@
@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;
}
diff --git a/src/test/java/org/apache/ode/jacob/examples/cell/JacobCellTest.java b/src/test/java/org/apache/ode/jacob/examples/cell/JacobCellTest.java
index 2da21ba..0f9d171 100644
--- a/src/test/java/org/apache/ode/jacob/examples/cell/JacobCellTest.java
+++ b/src/test/java/org/apache/ode/jacob/examples/cell/JacobCellTest.java
@@ -29,6 +29,8 @@
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 @@
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);
}
}
diff --git a/src/test/java/org/apache/ode/jacob/examples/synch/SynchPrinter.java b/src/test/java/org/apache/ode/jacob/examples/synch/SynchPrinter.java
index 426411e..eeb291a 100644
--- a/src/test/java/org/apache/ode/jacob/examples/synch/SynchPrinter.java
+++ b/src/test/java/org/apache/ode/jacob/examples/synch/SynchPrinter.java
@@ -24,6 +24,8 @@
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 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() {
}
- }) {});
+ }));
}
- }) {});
+ }));
}
- }) {});
+ }));
}
}