Refactor towards a Message based Continuation
Project: http://git-wip-us.apache.org/repos/asf/ode-jacob/repo Commit: http://git-wip-us.apache.org/repos/asf/ode-jacob/commit/ba74ea25 Tree: http://git-wip-us.apache.org/repos/asf/ode-jacob/tree/ba74ea25 Diff: http://git-wip-us.apache.org/repos/asf/ode-jacob/diff/ba74ea25 Branch: refs/heads/master Commit: ba74ea259455da9bdb1d69fc1f7a02012e18d946 Parents: 54b1973 Author: Hadrian Zbarcea <[email protected]> Authored: Mon Aug 5 20:01:52 2013 -0400 Committer: Hadrian Zbarcea <[email protected]> Committed: Mon Aug 5 20:01:52 2013 -0400 ---------------------------------------------------------------------- .../java/org/apache/ode/jacob/oo/ClassUtil.java | 6 +- .../org/apache/ode/jacob/soup/CommSend.java | 19 ++++--- .../org/apache/ode/jacob/soup/Continuation.java | 28 +++------- .../soup/jackson/ContinuationDeserializer.java | 21 ++++--- .../soup/jackson/ContinuationSerializer.java | 4 +- .../ode/jacob/vpu/ExecutionQueueImpl.java | 23 +++++--- .../java/org/apache/ode/jacob/vpu/JacobVPU.java | 59 +++++--------------- .../ode/jacob/soup/jackson/JacksonSoupTest.java | 16 +++--- 8 files changed, 75 insertions(+), 101 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ode-jacob/blob/ba74ea25/src/main/java/org/apache/ode/jacob/oo/ClassUtil.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/ode/jacob/oo/ClassUtil.java b/src/main/java/org/apache/ode/jacob/oo/ClassUtil.java index b16e43b..511ca73 100644 --- a/src/main/java/org/apache/ode/jacob/oo/ClassUtil.java +++ b/src/main/java/org/apache/ode/jacob/oo/ClassUtil.java @@ -55,13 +55,15 @@ public final class ClassUtil { return RUN_METHOD_SET; } - public static Message createMessage(JacobObject target, Method method, Object[] args) { + public static Message createMessage(JacobObject target, String action, Object[] args, Channel replyTo) { Message message = new Message(); message.setTo(new JacobObjectChannelRef(target)); - message.setAction(ClassUtil.getActionForMethod(method)); + message.setReplyTo(replyTo == null ? null : new ChannelChannelRef(replyTo)); + message.setAction(action); message.setBody(args); return message; } + public static String getActionForMethod(Method channelMethod) { if (channelMethod == null) { return null; http://git-wip-us.apache.org/repos/asf/ode-jacob/blob/ba74ea25/src/main/java/org/apache/ode/jacob/soup/CommSend.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/ode/jacob/soup/CommSend.java b/src/main/java/org/apache/ode/jacob/soup/CommSend.java index e3e3548..182b18a 100644 --- a/src/main/java/org/apache/ode/jacob/soup/CommSend.java +++ b/src/main/java/org/apache/ode/jacob/soup/CommSend.java @@ -20,6 +20,8 @@ package org.apache.ode.jacob.soup; import java.lang.reflect.Method; +import org.apache.ode.jacob.oo.Channel; + /** * Persistent store representation of a message (i.e. method application / * channel write) waiting for a corresponding object (i.e. channel read). This @@ -31,30 +33,32 @@ import java.lang.reflect.Method; */ public class CommSend extends Comm { - private Object[] _args; - private Method _method; + private Object[] _args; + private Channel replyChannel; protected CommSend() { } - public CommSend(CommChannel chnl, Method method, Object[] args) { + public CommSend(CommChannel chnl, Method method, Object[] args, Channel replyChannel) { super(null, chnl); - _args = args; _method = method; + _args = args; + this.replyChannel = replyChannel; } public Method getMethod() { return _method; } - /** - * Get the arguments for the method application. - */ public Object[] getArgs() { return _args; } + public Channel getReplyChannel() { + return replyChannel; + } + public String toString() { StringBuffer buf = new StringBuffer(getChannel().toString()); buf.append(" ! ").append(_method.getName()).append('('); @@ -65,4 +69,5 @@ public class CommSend extends Comm { buf.append(')'); return buf.toString(); } + } http://git-wip-us.apache.org/repos/asf/ode-jacob/blob/ba74ea25/src/main/java/org/apache/ode/jacob/soup/Continuation.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/ode/jacob/soup/Continuation.java b/src/main/java/org/apache/ode/jacob/soup/Continuation.java index 92fa7a6..eca46fb 100644 --- a/src/main/java/org/apache/ode/jacob/soup/Continuation.java +++ b/src/main/java/org/apache/ode/jacob/soup/Continuation.java @@ -20,9 +20,9 @@ package org.apache.ode.jacob.soup; import org.apache.ode.jacob.JacobObject; import org.apache.ode.jacob.Message; +import org.apache.ode.jacob.oo.Channel; import org.apache.ode.jacob.oo.ClassUtil; -import java.lang.reflect.Method; /** * DOCUMENTME. @@ -32,24 +32,11 @@ import java.lang.reflect.Method; */ public class Continuation extends ExecutionQueueObject { private final Message message; - private JacobObject _closure; - private Method _method; - private Object[] _args; + private JacobObject closure; - public Continuation(JacobObject target, Method method, Object[] args) { - _closure = target; - _method = method; - _args = args; - - message = ClassUtil.createMessage(target, method, args); - } - - public Method getMethod() { - return _method; - } - - public Object[] getArgs() { - return _args; + public Continuation(JacobObject target, String action, Object[] args, Channel replyTo) { + closure = target; + message = ClassUtil.createMessage(target, action, args, replyTo); } public Message getMessage() { @@ -59,9 +46,8 @@ public class Continuation extends ExecutionQueueObject { public String toString () { return new StringBuilder("{") .append(this.getClass().getSimpleName()) - .append(" closure=").append(_closure) - .append(", method=").append(_method.getName()) - .append(", args=").append(_args) + .append(" closure=").append(closure) + .append(", method=").append(message.getAction()) .append("}").toString(); } http://git-wip-us.apache.org/repos/asf/ode-jacob/blob/ba74ea25/src/main/java/org/apache/ode/jacob/soup/jackson/ContinuationDeserializer.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/ode/jacob/soup/jackson/ContinuationDeserializer.java b/src/main/java/org/apache/ode/jacob/soup/jackson/ContinuationDeserializer.java index 10a0a39..684c5fa 100644 --- a/src/main/java/org/apache/ode/jacob/soup/jackson/ContinuationDeserializer.java +++ b/src/main/java/org/apache/ode/jacob/soup/jackson/ContinuationDeserializer.java @@ -21,6 +21,7 @@ package org.apache.ode.jacob.soup.jackson; import java.io.IOException; import org.apache.ode.jacob.JacobObject; +import org.apache.ode.jacob.oo.Channel; import org.apache.ode.jacob.soup.Continuation; import com.fasterxml.jackson.core.JsonParser; @@ -49,8 +50,9 @@ public class ContinuationDeserializer extends StdDeserializer<Continuation> { JsonProcessingException { JacobObject target = null; - String methodName = null; + String action = null; Object[] args = null; + Channel replyTo = null; while (jp.nextToken() != JsonToken.END_OBJECT) { String fieldname = jp.getCurrentName(); @@ -62,20 +64,23 @@ public class ContinuationDeserializer extends StdDeserializer<Continuation> { if ("target".equals(fieldname)) { target = jp.readValueAs(JacobObject.class); } else if ("method".equals(fieldname)) { - methodName = jp.getText(); - } if ("args".equals(fieldname)) { + action = jp.getText(); + } else if ("args".equals(fieldname)) { args = jp.readValueAs(Object[].class); + } else if ("replyTo".equals(fieldname)) { + replyTo = jp.readValueAs(Channel.class); } } - + if (target == null) { throw ctxt.mappingException(Continuation.class); } - - if (methodName == null) { + + if (action == null) { throw ctxt.mappingException(Continuation.class); } - - return new Continuation(target, target.getMethod(methodName), args); + + // TODO: pass the replyTo channel to the Continuation + return new Continuation(target, action, args, replyTo); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ode-jacob/blob/ba74ea25/src/main/java/org/apache/ode/jacob/soup/jackson/ContinuationSerializer.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/ode/jacob/soup/jackson/ContinuationSerializer.java b/src/main/java/org/apache/ode/jacob/soup/jackson/ContinuationSerializer.java index 9a8c6ae..456a40d 100644 --- a/src/main/java/org/apache/ode/jacob/soup/jackson/ContinuationSerializer.java +++ b/src/main/java/org/apache/ode/jacob/soup/jackson/ContinuationSerializer.java @@ -65,7 +65,7 @@ public class ContinuationSerializer extends StdSerializer<Continuation> { SerializerProvider provider) throws JsonGenerationException, IOException { jgen.writeObjectField("target", ClassUtil.getMessageClosure(value.getMessage())); - jgen.writeStringField("method", value.getMethod().getName()); - jgen.writeObjectField("args", value.getArgs()); + jgen.writeStringField("method", value.getMessage().getAction()); + jgen.writeObjectField("args", value.getMessage().getBody()); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ode-jacob/blob/ba74ea25/src/main/java/org/apache/ode/jacob/vpu/ExecutionQueueImpl.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/ode/jacob/vpu/ExecutionQueueImpl.java b/src/main/java/org/apache/ode/jacob/vpu/ExecutionQueueImpl.java index 9fc1085..7240377 100644 --- a/src/main/java/org/apache/ode/jacob/vpu/ExecutionQueueImpl.java +++ b/src/main/java/org/apache/ode/jacob/vpu/ExecutionQueueImpl.java @@ -164,7 +164,7 @@ public class ExecutionQueueImpl implements ExecutionQueue { CommSend commSend = (CommSend) comm; MessageFrame mframe = new MessageFrame(commGroupFrame, chnlFrame, commSend.getMethod().getName(), - commSend.getArgs()); + commSend.getArgs(), commSend.getReplyChannel()); commGroupFrame.commFrames.add(mframe); chnlFrame.msgFrames.add(mframe); } else if (comm instanceof CommRecv) { @@ -249,7 +249,8 @@ public class ExecutionQueueImpl implements ExecutionQueue { for (int j = 0; j < numArgs; ++j) { args[j] = sis.readObject(); } - _reactions.add(new Continuation(closure, method, args)); + Channel replyTo = (Channel) sis.readObject(); + _reactions.add(new Continuation(closure, ClassUtil.getActionForMethod(method), args, replyTo)); } int numChannels = sis.readInt(); @@ -295,10 +296,12 @@ public class ExecutionQueueImpl implements ExecutionQueue { sos.writeInt(_reactions.size()); for (Continuation c : _reactions) { sos.writeObject(ClassUtil.getMessageClosure(c.getMessage())); - sos.writeUTF(c.getMethod().getName()); - sos.writeInt(c.getArgs() == null ? 0 : c.getArgs().length); - for (int j = 0; c.getArgs() != null && j < c.getArgs().length; ++j) - sos.writeObject(c.getArgs()[j]); + sos.writeUTF(c.getMessage().getAction()); + Object[] args = (Object[])c.getMessage().getBody(); + sos.writeInt(args == null ? 0 : args.length); + for (Object a : args) { + sos.writeObject(a); + } } sos.writeInt(_channels.values().size()); @@ -385,8 +388,8 @@ public class ExecutionQueueImpl implements ExecutionQueue { MessageFrame mframe = cframe.msgFrames.iterator().next(); ObjectFrame oframe = cframe.objFrames.iterator().next(); - Continuation continuation = new Continuation(oframe._continuation, oframe._continuation - .getMethod(mframe.method), mframe.args); + Continuation continuation = new Continuation(oframe._continuation, + ClassUtil.getActionForMethod(oframe._continuation.getMethod(mframe.method)), mframe.args, mframe.replyChannel); if (LOG.isInfoEnabled()) { continuation.setDescription(channel + " ? {...} | " + channel + " ! " + mframe.method + "(...)"); } @@ -612,15 +615,17 @@ public class ExecutionQueueImpl implements ExecutionQueue { String method; Object[] args; + Channel replyChannel; // Used for deserialization public MessageFrame() { } - public MessageFrame(CommGroupFrame commFrame, ChannelFrame channelFrame, String method, Object[] args) { + public MessageFrame(CommGroupFrame commFrame, ChannelFrame channelFrame, String method, Object[] args, Channel replyChannel) { super(commFrame, channelFrame); this.method = method; this.args = args == null ? new Class[]{} : args; + this.replyChannel = replyChannel; } public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { http://git-wip-us.apache.org/repos/asf/ode-jacob/blob/ba74ea25/src/main/java/org/apache/ode/jacob/vpu/JacobVPU.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/ode/jacob/vpu/JacobVPU.java b/src/main/java/org/apache/ode/jacob/vpu/JacobVPU.java index bad5aa3..0e3a081 100644 --- a/src/main/java/org/apache/ode/jacob/vpu/JacobVPU.java +++ b/src/main/java/org/apache/ode/jacob/vpu/JacobVPU.java @@ -144,10 +144,10 @@ public final class JacobVPU { /** * Add an item to the run queue. */ - public void addReaction(JacobObject jo, Method method, Object[] args, String desc) { - LOG.trace(">> addReaction (jo={}, method={}, args={}, desc={})", jo, method, args, desc); + public void addReaction(JacobObject jo, String action, Object[] args, String desc) { + LOG.trace(">> addReaction (jo={}, method={}, args={}, desc={})", jo, action, args, desc); - Continuation continuation = new Continuation(jo, method, args); + Continuation continuation = new Continuation(jo, action, args, null); continuation.setDescription(desc); _executionQueue.enqueueReaction(continuation); ++_statistics.runQueueEntries; @@ -169,7 +169,7 @@ public final class JacobVPU { */ public void inject(Runnable concretion) { LOG.debug("injecting {}", concretion); - addReaction((JacobObject)concretion, ClassUtil.RUN_METHOD, new Class[]{}, + addReaction((JacobObject)concretion, ClassUtil.RUN_METHOD_ACTION, new Class[]{}, (LOG.isInfoEnabled() ? concretion.toString() : null)); } @@ -234,10 +234,7 @@ public final class JacobVPU { private class JacobThreadImpl implements Runnable, JacobThread { private final JacobObject _methodBody; - - private final Object[] _args; - - private final Method _method; + private final Message message; /** Text string identifying the left side of the reduction (for debug). */ private String _source; @@ -249,23 +246,16 @@ public final class JacobVPU { assert rqe != null; _methodBody = ClassUtil.getMessageClosure(rqe.getMessage()); - _args = rqe.getArgs(); + message = rqe.getMessage(); _source = rqe.getDescription(); - _method = rqe.getMethod(); - - if (LOG.isDebugEnabled()) { - StringBuffer buf = new StringBuffer(_methodBody.getClass().getName()); - buf.append('.'); - buf.append(rqe.getMethod()); - _targetStr = buf.toString(); - } + _targetStr = rqe.getMessage().getAction(); } public void instance(Runnable template) { LOG.trace(">> [{}] : {}", _cycle, template); _statistics.numReductionsStruct++; - addReaction((JacobObject)template, ClassUtil.RUN_METHOD, new Class[]{}, + addReaction((JacobObject)template, ClassUtil.RUN_METHOD_ACTION, new Class[]{}, LOG.isInfoEnabled() ? template.toString() : null); } @@ -282,15 +272,11 @@ public final class JacobVPU { throw new IllegalStateException( "Channel method '" + method + "' must only return void or Synch"); } - replyChannel = (Synch) newChannel(Synch.class, "", "Reply Channel"); - Object[] newArgs = new Object[args.length + 1]; - System.arraycopy(args, 0, newArgs, 0, args.length); - newArgs[args.length] = replyChannel; - args = newArgs; + replyChannel = (Synch)newChannel(Synch.class, "", "Reply Channel"); } CommChannel chnl = (CommChannel) ChannelFactory.getBackend((Channel)channel); CommGroup grp = new CommGroup(false); - CommSend send = new CommSend(chnl, method, args); + CommSend send = new CommSend(chnl, method, args, replyChannel); grp.add(send); _executionQueue.add(grp); return replyChannel; @@ -407,36 +393,21 @@ public final class JacobVPU { } public void run() { - assert _methodBody != null; - assert _method != null; - // assert _method.getDeclaringClass().isAssignableFrom(_methodBody.getClass()); - LOG.trace(">> [{}] : {}", _cycle, _source); - Object[] args; - Synch synchChannel; - if (_method.getReturnType() != void.class) { - args = new Object[_args.length - 1]; - System.arraycopy(_args, 0, args, 0, args.length); - synchChannel = (Synch)_args[args.length]; - } else { - args = _args; - synchChannel = null; - } stackThread(); + Synch replyTo = (Synch)ClassUtil.target().evaluate(message, Channel.class); + long ctime = System.currentTimeMillis(); try { if (_methodBody instanceof ReceiveProcess) { - Message msg = new Message(null, null, ClassUtil.getActionForMethod(_method)); - msg.setBody(args); - - ((ReceiveProcess)_methodBody).onMessage(msg); + ((ReceiveProcess)_methodBody).onMessage(message); // _method.invoke(((ReceiveProcess)_methodBody).getReceiver(), args); } else { ((Runnable)_methodBody).run(); } - if (synchChannel != null) { - synchChannel.ret(); + if (replyTo != null) { + replyTo.ret(); } /* } catch (IllegalAccessException iae) { http://git-wip-us.apache.org/repos/asf/ode-jacob/blob/ba74ea25/src/test/java/org/apache/ode/jacob/soup/jackson/JacksonSoupTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/ode/jacob/soup/jackson/JacksonSoupTest.java b/src/test/java/org/apache/ode/jacob/soup/jackson/JacksonSoupTest.java index a0521d9..6fc3ca0 100644 --- a/src/test/java/org/apache/ode/jacob/soup/jackson/JacksonSoupTest.java +++ b/src/test/java/org/apache/ode/jacob/soup/jackson/JacksonSoupTest.java @@ -53,14 +53,14 @@ public class JacksonSoupTest { queue = new JacksonExecutionQueueImpl(); - fixtures.add("{\"objIdCounter\":2,\"currentCycle\":1,\"continuations\":[{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess\",\"@id\":1,\"_in\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":1}},\"method\":\"run\",\"args\":[]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess\",\"@id\":1,\"in\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":2},\"out\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":1}},\"method\":\"run\",\"args\":[]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$StringEmitterProcess\",\"@id\":1,\"str\":\"Hello\",\"to\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":2}},\"method\":\"run\",\"args\":[]},{\"target\" :{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$StringEmitterProcess\",\"@id\":1,\"str\":\"World\",\"to\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":2}},\"method\":\"run\",\"args\":[]}],\"channels\":[{\"@id\":1,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":1,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":false,\"objFrames\":[],\"msgFrames\":[],\"description\":\"simpleHelloWorld-out\"},{\"@id\":2,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":2,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":false,\"objFrames\":[],\"msgFrames\":[],\"description\":\"simpleHelloWorld-x\"}],\"global\":null}"); - fixtures.add("{\"objIdCounter\":2,\"currentCycle\":2,\"continuations\":[{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess\",\"@id\":1,\"in\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":2},\"out\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":1}},\"method\":\"run\",\"args\":[]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$StringEmitterProcess\",\"@id\":1,\"str\":\"Hello\",\"to\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":2}},\"method\":\"run\",\"args\":[]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$StringEmitterProcess\",\"@id\":1,\"str\":\"World\",\"to\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":2}},\"method\":\"run\",\ "args\":[]}],\"channels\":[{\"@id\":1,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":1,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":true,\"objFrames\":[{\"@id\":2,\"commGroupFrame\":{\"@id\":3,\"replicated\":true,\"commFrames\":[2]},\"channelFrame\":1,\"_continuation\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessReceiveProcess\",\"@id\":4,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}}}],\"msgFrames\":[],\"description\":\"simpleHelloWorld-out\"},{\"@id\":5,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":2,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":false,\"objFrames\":[],\"msgFrames\":[],\"description\":\"simpleHelloWorld-x\"}],\"global\":null}"); - fixtures.add("{\"objIdCounter\":2,\"currentCycle\":3,\"continuations\":[{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$StringEmitterProcess\",\"@id\":1,\"str\":\"Hello\",\"to\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":2}},\"method\":\"run\",\"args\":[]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$StringEmitterProcess\",\"@id\":1,\"str\":\"World\",\"to\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":2}},\"method\":\"run\",\"args\":[]}],\"channels\":[{\"@id\":1,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":1,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":true,\"objFrames\":[{\"@id\":2,\"commGroupFrame\":{\"@id\":3,\"replicated\":true,\"commFrames\":[2]},\"channelFrame\":1,\"_continuation\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$Printer ProcessReceiveProcess\",\"@id\":4,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}}}],\"msgFrames\":[],\"description\":\"simpleHelloWorld-out\"},{\"@id\":5,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":2,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":true,\"objFrames\":[{\"@id\":6,\"commGroupFrame\":{\"@id\":7,\"replicated\":true,\"commFrames\":[6]},\"channelFrame\":5,\"_continuation\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessReceiveProcess\",\"@id\":8,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessVal\",\"@id\":9,\"out\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":1}}}}],\"msgFrames\":[],\"description\":\"simpleHelloWorld-x\"}],\"global\":null}"); - fixtures.add("{\"objIdCounter\":2,\"currentCycle\":4,\"continuations\":[{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$StringEmitterProcess\",\"@id\":1,\"str\":\"World\",\"to\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":2}},\"method\":\"run\",\"args\":[]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessReceiveProcess\",\"@id\":1,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessVal\",\"@id\":2,\"out\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":1}}},\"method\":\"val\",\"args\":[\"Hello\"]}],\"channels\":[{\"@id\":1,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":1,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":true,\"objFrames\":[{\"@id\":2,\"commGroupFrame\":{\"@id\":3,\"replicated\":tr ue,\"commFrames\":[2]},\"channelFrame\":1,\"_continuation\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessReceiveProcess\",\"@id\":4,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}}}],\"msgFrames\":[],\"description\":\"simpleHelloWorld-out\"},{\"@id\":5,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":2,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":true,\"objFrames\":[{\"@id\":6,\"commGroupFrame\":{\"@id\":7,\"replicated\":true,\"commFrames\":[6]},\"channelFrame\":5,\"_continuation\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessReceiveProcess\",\"@id\":8,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessVal\",\"@id\":9,\"out\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":1}}}}],\"msg Frames\":[],\"description\":\"simpleHelloWorld-x\"}],\"global\":null}"); - fixtures.add("{\"objIdCounter\":2,\"currentCycle\":5,\"continuations\":[{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessReceiveProcess\",\"@id\":1,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessVal\",\"@id\":2,\"out\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":1}}},\"method\":\"val\",\"args\":[\"Hello\"]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessReceiveProcess\",\"@id\":1,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessVal\",\"@id\":2,\"out\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":1}}},\"method\":\"val\",\"args\":[\"World\"]}],\"channels\":[{\"@id\":1,\"type\":\"org.apache.ode.jacob.oo.Val\ ",\"id\":1,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":true,\"objFrames\":[{\"@id\":2,\"commGroupFrame\":{\"@id\":3,\"replicated\":true,\"commFrames\":[2]},\"channelFrame\":1,\"_continuation\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessReceiveProcess\",\"@id\":4,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}}}],\"msgFrames\":[],\"description\":\"simpleHelloWorld-out\"}],\"global\":null}"); - fixtures.add("{\"objIdCounter\":2,\"currentCycle\":6,\"continuations\":[{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessReceiveProcess\",\"@id\":1,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessVal\",\"@id\":2,\"out\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":1}}},\"method\":\"val\",\"args\":[\"World\"]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessReceiveProcess\",\"@id\":1,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}},\"method\":\"val\",\"args\":[\"Hello\"]}],\"channels\":[{\"@id\":1,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":1,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":true,\"objFrames\":[{\"@id\":2,\"commGroupFrame\":{\"@id\":3,\"re plicated\":true,\"commFrames\":[2]},\"channelFrame\":1,\"_continuation\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessReceiveProcess\",\"@id\":4,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}}}],\"msgFrames\":[],\"description\":\"simpleHelloWorld-out\"}],\"global\":null}"); - fixtures.add("{\"objIdCounter\":2,\"currentCycle\":7,\"continuations\":[{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessReceiveProcess\",\"@id\":1,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}},\"method\":\"val\",\"args\":[\"Hello\"]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessReceiveProcess\",\"@id\":1,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}},\"method\":\"val\",\"args\":[\"World\"]}],\"channels\":[],\"global\":null}"); - fixtures.add("{\"objIdCounter\":2,\"currentCycle\":8,\"continuations\":[{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessReceiveProcess\",\"@id\":1,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}},\"method\":\"val\",\"args\":[\"World\"]}],\"channels\":[],\"global\":null}"); + fixtures.add("{\"objIdCounter\":2,\"currentCycle\":1,\"continuations\":[{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess\",\"@id\":1,\"_in\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":1}},\"method\":\"java.lang.Runnable#run\",\"args\":[]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess\",\"@id\":1,\"in\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":2},\"out\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":1}},\"method\":\"java.lang.Runnable#run\",\"args\":[]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$StringEmitterProcess\",\"@id\":1,\"str\":\"Hello\",\"to\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":2}},\"met hod\":\"java.lang.Runnable#run\",\"args\":[]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$StringEmitterProcess\",\"@id\":1,\"str\":\"World\",\"to\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":2}},\"method\":\"java.lang.Runnable#run\",\"args\":[]}],\"channels\":[{\"@id\":1,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":1,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":false,\"objFrames\":[],\"msgFrames\":[],\"description\":\"simpleHelloWorld-out\"},{\"@id\":2,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":2,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":false,\"objFrames\":[],\"msgFrames\":[],\"description\":\"simpleHelloWorld-x\"}],\"global\":null}"); + fixtures.add("{\"objIdCounter\":2,\"currentCycle\":2,\"continuations\":[{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess\",\"@id\":1,\"in\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":2},\"out\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":1}},\"method\":\"java.lang.Runnable#run\",\"args\":[]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$StringEmitterProcess\",\"@id\":1,\"str\":\"Hello\",\"to\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":2}},\"method\":\"java.lang.Runnable#run\",\"args\":[]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$StringEmitterProcess\",\"@id\":1,\"str\":\"World\",\"to\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\", \"channelId\":2}},\"method\":\"java.lang.Runnable#run\",\"args\":[]}],\"channels\":[{\"@id\":1,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":1,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":true,\"objFrames\":[{\"@id\":2,\"commGroupFrame\":{\"@id\":3,\"replicated\":true,\"commFrames\":[2]},\"channelFrame\":1,\"_continuation\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessReceiveProcess\",\"@id\":4,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}}}],\"msgFrames\":[],\"description\":\"simpleHelloWorld-out\"},{\"@id\":5,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":2,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":false,\"objFrames\":[],\"msgFrames\":[],\"description\":\"simpleHelloWorld-x\"}],\"global\":null}"); + fixtures.add("{\"objIdCounter\":2,\"currentCycle\":3,\"continuations\":[{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$StringEmitterProcess\",\"@id\":1,\"str\":\"Hello\",\"to\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":2}},\"method\":\"java.lang.Runnable#run\",\"args\":[]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$StringEmitterProcess\",\"@id\":1,\"str\":\"World\",\"to\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":2}},\"method\":\"java.lang.Runnable#run\",\"args\":[]}],\"channels\":[{\"@id\":1,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":1,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":true,\"objFrames\":[{\"@id\":2,\"commGroupFrame\":{\"@id\":3,\"replicated\":true,\"commFrames\":[2]},\"channelFrame\":1,\"_continuation\":{\"@class\":\"org.apache.ode.jacob.examples.hellow orld.HelloWorld$PrinterProcess$PrinterProcessReceiveProcess\",\"@id\":4,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}}}],\"msgFrames\":[],\"description\":\"simpleHelloWorld-out\"},{\"@id\":5,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":2,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":true,\"objFrames\":[{\"@id\":6,\"commGroupFrame\":{\"@id\":7,\"replicated\":true,\"commFrames\":[6]},\"channelFrame\":5,\"_continuation\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessReceiveProcess\",\"@id\":8,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessVal\",\"@id\":9,\"out\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":1}}}}],\"msgFrames\":[],\"description\":\"simpleHelloWorld-x\"}],\"global\":null}"); + fixtures.add("{\"objIdCounter\":2,\"currentCycle\":4,\"continuations\":[{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$StringEmitterProcess\",\"@id\":1,\"str\":\"World\",\"to\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":2}},\"method\":\"java.lang.Runnable#run\",\"args\":[]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessReceiveProcess\",\"@id\":1,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessVal\",\"@id\":2,\"out\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":1}}},\"method\":\"org.apache.ode.jacob.oo.Val#val\",\"args\":[\"Hello\"]}],\"channels\":[{\"@id\":1,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":1,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":true,\"objFrames\":[{\"@id\":2, \"commGroupFrame\":{\"@id\":3,\"replicated\":true,\"commFrames\":[2]},\"channelFrame\":1,\"_continuation\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessReceiveProcess\",\"@id\":4,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}}}],\"msgFrames\":[],\"description\":\"simpleHelloWorld-out\"},{\"@id\":5,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":2,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":true,\"objFrames\":[{\"@id\":6,\"commGroupFrame\":{\"@id\":7,\"replicated\":true,\"commFrames\":[6]},\"channelFrame\":5,\"_continuation\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessReceiveProcess\",\"@id\":8,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessVal\",\"@id\":9,\"out\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apach e.ode.jacob.oo.Val\",\"channelId\":1}}}}],\"msgFrames\":[],\"description\":\"simpleHelloWorld-x\"}],\"global\":null}"); + fixtures.add("{\"objIdCounter\":2,\"currentCycle\":5,\"continuations\":[{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessReceiveProcess\",\"@id\":1,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessVal\",\"@id\":2,\"out\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":1}}},\"method\":\"org.apache.ode.jacob.oo.Val#val\",\"args\":[\"Hello\"]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessReceiveProcess\",\"@id\":1,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessVal\",\"@id\":2,\"out\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":1}}},\"method\":\"org.apache.ode.jacob.oo.Val#val\",\"args\":[\"World\"]}],\"channe ls\":[{\"@id\":1,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":1,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":true,\"objFrames\":[{\"@id\":2,\"commGroupFrame\":{\"@id\":3,\"replicated\":true,\"commFrames\":[2]},\"channelFrame\":1,\"_continuation\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessReceiveProcess\",\"@id\":4,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}}}],\"msgFrames\":[],\"description\":\"simpleHelloWorld-out\"}],\"global\":null}"); + fixtures.add("{\"objIdCounter\":2,\"currentCycle\":6,\"continuations\":[{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessReceiveProcess\",\"@id\":1,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$ForwarderProcess$ForwarderProcessVal\",\"@id\":2,\"out\":{\"@class\":\"org.apache.ode.jacob.oo.Val\",\"channelType\":\"org.apache.ode.jacob.oo.Val\",\"channelId\":1}}},\"method\":\"org.apache.ode.jacob.oo.Val#val\",\"args\":[\"World\"]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessReceiveProcess\",\"@id\":1,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}},\"method\":\"org.apache.ode.jacob.oo.Val#val\",\"args\":[\"Hello\"]}],\"channels\":[{\"@id\":1,\"type\":\"org.apache.ode.jacob.oo.Val\",\"id\":1,\"refCount\":0,\"replicatedSend\":false,\"replicatedRecv\":true,\"ob jFrames\":[{\"@id\":2,\"commGroupFrame\":{\"@id\":3,\"replicated\":true,\"commFrames\":[2]},\"channelFrame\":1,\"_continuation\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessReceiveProcess\",\"@id\":4,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}}}],\"msgFrames\":[],\"description\":\"simpleHelloWorld-out\"}],\"global\":null}"); + fixtures.add("{\"objIdCounter\":2,\"currentCycle\":7,\"continuations\":[{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessReceiveProcess\",\"@id\":1,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}},\"method\":\"org.apache.ode.jacob.oo.Val#val\",\"args\":[\"Hello\"]},{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessReceiveProcess\",\"@id\":1,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}},\"method\":\"org.apache.ode.jacob.oo.Val#val\",\"args\":[\"World\"]}],\"channels\":[],\"global\":null}"); + fixtures.add("{\"objIdCounter\":2,\"currentCycle\":8,\"continuations\":[{\"target\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessReceiveProcess\",\"@id\":1,\"receiver\":{\"@class\":\"org.apache.ode.jacob.examples.helloworld.HelloWorld$PrinterProcess$PrinterProcessVal\"}},\"method\":\"org.apache.ode.jacob.oo.Val#val\",\"args\":[\"World\"]}],\"channels\":[],\"global\":null}"); fixtures.add("{\"objIdCounter\":2,\"currentCycle\":9,\"continuations\":[],\"channels\":[],\"global\":null}"); }
