Removing JacobObject to a minimum.
It's only purpose is now to have an abstract class that combines Serializable and Runnable.
diff --git a/src/main/java/org/apache/ode/jacob/JacobObject.java b/src/main/java/org/apache/ode/jacob/JacobObject.java
index cdad900..5dab505 100644
--- a/src/main/java/org/apache/ode/jacob/JacobObject.java
+++ b/src/main/java/org/apache/ode/jacob/JacobObject.java
@@ -19,10 +19,6 @@
package org.apache.ode.jacob;
import java.io.Serializable;
-import java.lang.reflect.Method;
-import java.util.Set;
-
-import org.apache.ode.jacob.oo.ClassUtil;
/**
* Base class for constructs which rely on a Java method body to represent some
@@ -30,20 +26,6 @@
*/
@SuppressWarnings("serial")
public abstract class JacobObject implements Serializable {
- public Set<Method> getImplementedMethods() {
- return null;
- }
-
- public Method getMethod(String methodName) {
- Set<Method> implementedMethods = getImplementedMethods();
- implementedMethods = implementedMethods == null ? ClassUtil.runMethodSet() : implementedMethods;
- for (Method m : implementedMethods) {
- if (m.getName().equals(methodName)) {
- return m;
- }
- }
- throw new IllegalArgumentException("No such method \"" + methodName + "\"!");
- }
public String toString() {
return "<JacobObject:" + getClass().getSimpleName() + ">";
diff --git a/src/main/java/org/apache/ode/jacob/MessageListener.java b/src/main/java/org/apache/ode/jacob/MessageListener.java
index 5e5282a..629cf43 100644
--- a/src/main/java/org/apache/ode/jacob/MessageListener.java
+++ b/src/main/java/org/apache/ode/jacob/MessageListener.java
@@ -18,11 +18,13 @@
*/
package org.apache.ode.jacob;
+import java.io.Serializable;
+
/**
* TODO: Document...
*/
-public interface MessageListener {
+public interface MessageListener extends Serializable {
void onMessage(Message msg);
}
diff --git a/src/main/java/org/apache/ode/jacob/oo/ChannelListener.java b/src/main/java/org/apache/ode/jacob/oo/ChannelListener.java
index d863f31..3cd6916 100644
--- a/src/main/java/org/apache/ode/jacob/oo/ChannelListener.java
+++ b/src/main/java/org/apache/ode/jacob/oo/ChannelListener.java
@@ -20,8 +20,8 @@
import java.lang.reflect.Method;
+import java.util.Set;
-import org.apache.ode.jacob.JacobObject;
import org.apache.ode.jacob.Message;
import org.apache.ode.jacob.MessageListener;
@@ -31,7 +31,7 @@
* class <em>and</em> implement one <code>Channel</code> interface.
*/
@SuppressWarnings("serial")
-public abstract class ChannelListener extends JacobObject implements MessageListener {
+public abstract class ChannelListener implements MessageListener {
public void onMessage(Message msg) {
Method action = ClassUtil.findActionMethod(getImplementedMethods()).evaluate(msg, Method.class);
@@ -44,5 +44,9 @@
e.printStackTrace();
}
}
+
+ public Set<Method> getImplementedMethods() {
+ return null;
+ }
}
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 e1336ee..24d6701 100644
--- a/src/main/java/org/apache/ode/jacob/oo/ClassUtil.java
+++ b/src/main/java/org/apache/ode/jacob/oo/ClassUtil.java
@@ -24,7 +24,6 @@
import org.apache.ode.jacob.ChannelRef;
import org.apache.ode.jacob.Expression;
-import org.apache.ode.jacob.JacobObject;
import org.apache.ode.jacob.Message;
import org.apache.ode.jacob.soup.CommChannel;
import org.slf4j.Logger;
@@ -57,7 +56,7 @@
return RUN_METHOD_SET;
}
- public static Message createMessage(JacobObject target, String action, Object[] args, Channel replyTo) {
+ public static Message createMessage(Runnable target, String action, Object[] args, Channel replyTo) {
Message message = new Message();
message.setTo(new ChannelRef(target));
message.setReplyTo(replyTo == null ? null : new ChannelRef(replyTo));
diff --git a/src/main/java/org/apache/ode/jacob/soup/jackson/JacobTypeResolverBuilder.java b/src/main/java/org/apache/ode/jacob/soup/jackson/JacobTypeResolverBuilder.java
index c2e36ee..399be8f 100644
--- a/src/main/java/org/apache/ode/jacob/soup/jackson/JacobTypeResolverBuilder.java
+++ b/src/main/java/org/apache/ode/jacob/soup/jackson/JacobTypeResolverBuilder.java
@@ -1,5 +1,5 @@
/*
- * Licensed to the Apache Software Foundation (ASF) under one
+R * Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
@@ -21,7 +21,6 @@
import java.util.Collection;
import org.apache.ode.jacob.ChannelRef;
-import org.apache.ode.jacob.JacobObject;
import org.apache.ode.jacob.MessageListener;
import org.apache.ode.jacob.oo.Channel;
import org.apache.ode.jacob.oo.ChannelProxy;
@@ -83,7 +82,7 @@
}
private boolean useForType(JavaType t) {
- if (JacobObject.class.isAssignableFrom(t.getRawClass())) {
+ if (Runnable.class.isAssignableFrom(t.getRawClass())) {
return true;
}
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 5b8a07d..ae4db3a 100644
--- a/src/main/java/org/apache/ode/jacob/vpu/JacobVPU.java
+++ b/src/main/java/org/apache/ode/jacob/vpu/JacobVPU.java
@@ -24,7 +24,6 @@
import java.util.Stack;
import org.apache.ode.jacob.ChannelRef;
-import org.apache.ode.jacob.JacobObject;
import org.apache.ode.jacob.JacobThread;
import org.apache.ode.jacob.Message;
import org.apache.ode.jacob.MessageListener;
@@ -143,7 +142,7 @@
/**
* Add an item to the run queue.
*/
- public void addReaction(JacobObject jo, String action, Object[] args, String desc) {
+ public void addReaction(Runnable jo, String action, Object[] args, String desc) {
LOG.trace(">> addReaction (jo={}, method={}, args={}, desc={})", jo, action, args, desc);
_executionQueue.enqueueMessage(ClassUtil.createMessage(jo, action, args, null));
@@ -166,7 +165,7 @@
*/
public void inject(Runnable concretion) {
LOG.debug("injecting {}", concretion);
- addReaction((JacobObject)concretion, ClassUtil.RUN_METHOD_ACTION, new Class[]{},
+ addReaction(concretion, ClassUtil.RUN_METHOD_ACTION, new Class[]{},
(LOG.isInfoEnabled() ? concretion.toString() : null));
}
@@ -252,7 +251,7 @@
LOG.trace(">> [{}] : {}", _cycle, template);
_statistics.numReductionsStruct++;
- addReaction((JacobObject)template, ClassUtil.RUN_METHOD_ACTION, new Class[]{},
+ addReaction(template, ClassUtil.RUN_METHOD_ACTION, new Class[]{},
LOG.isInfoEnabled() ? template.toString() : null);
}
@@ -300,8 +299,8 @@
return ret;
}
- public ChannelRef newCommChannel(Class<?> channelType, String creator, String description) {
- CommChannel chnl = new CommChannel(channelType);
+ public ChannelRef newCommChannel(String description) {
+ CommChannel chnl = new CommChannel();
chnl.setDescription(description);
_executionQueue.add(chnl);
@@ -477,8 +476,8 @@
switch (message.getTo().getType()) {
case CHANNEL:
throw new UnsupportedOperationException();
- case JACOB_OBJECT:
- JacobObject target = message.getTo().getEndpoint(JacobObject.class);
+ case RUNNABLE:
+ Runnable target = message.getTo().getEndpoint(Runnable.class);
if (target instanceof ReceiveProcess) {
((ReceiveProcess)target).onMessage(message);
} else {