You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by ha...@apache.org on 2014/01/16 19:00:41 UTC
[03/10] git commit: Minor refactoring around channel identity
Minor refactoring around channel identity
Project: http://git-wip-us.apache.org/repos/asf/ode-jacob/repo
Commit: http://git-wip-us.apache.org/repos/asf/ode-jacob/commit/9fe2dea2
Tree: http://git-wip-us.apache.org/repos/asf/ode-jacob/tree/9fe2dea2
Diff: http://git-wip-us.apache.org/repos/asf/ode-jacob/diff/9fe2dea2
Branch: refs/heads/master
Commit: 9fe2dea23a44bb384f62956e40760dd4beab3061
Parents: 91885ee
Author: Hadrian Zbarcea <hz...@gmail.com>
Authored: Sun Jan 12 15:31:51 2014 -0500
Committer: Hadrian Zbarcea <hz...@gmail.com>
Committed: Sun Jan 12 15:31:51 2014 -0500
----------------------------------------------------------------------
.../org/apache/ode/jacob/oo/ProcessUtil.java | 4 +-
.../soup/jackson/ChannelProxySerializer.java | 2 +-
.../soup/jackson/JacobTypeResolverBuilder.java | 2 +-
.../apache/ode/jacob/vpu/ChannelFactory.java | 2 +-
.../ode/jacob/vpu/ExecutionQueueImpl.java | 2 +-
.../java/org/apache/ode/jacob/vpu/JacobVPU.java | 31 +++++++------
.../apache/ode/jacob/oo/JacobChannelsTest.java | 46 ++++++++++++++++++++
7 files changed, 69 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ode-jacob/blob/9fe2dea2/src/main/java/org/apache/ode/jacob/oo/ProcessUtil.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/ode/jacob/oo/ProcessUtil.java b/src/main/java/org/apache/ode/jacob/oo/ProcessUtil.java
index 3d11f77..f32c0f0 100644
--- a/src/main/java/org/apache/ode/jacob/oo/ProcessUtil.java
+++ b/src/main/java/org/apache/ode/jacob/oo/ProcessUtil.java
@@ -43,8 +43,8 @@ public final class ProcessUtil {
}
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
+ // TODO: NOTE: this *only* works when the listener doesn't need to be Serializable really
+ // because we cannot declare a static serialVersionUID like this
// once we fix serialization, this can be simplified significantly via a dsl
return new ReceiveProcess().setChannel(proxy).setReceiver(listener);
}
http://git-wip-us.apache.org/repos/asf/ode-jacob/blob/9fe2dea2/src/main/java/org/apache/ode/jacob/soup/jackson/ChannelProxySerializer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/ode/jacob/soup/jackson/ChannelProxySerializer.java b/src/main/java/org/apache/ode/jacob/soup/jackson/ChannelProxySerializer.java
index 95948db..8a6725c 100644
--- a/src/main/java/org/apache/ode/jacob/soup/jackson/ChannelProxySerializer.java
+++ b/src/main/java/org/apache/ode/jacob/soup/jackson/ChannelProxySerializer.java
@@ -72,7 +72,7 @@ public class ChannelProxySerializer extends StdSerializer<ChannelProxy>{
private void serializeContents(ChannelProxy value, JsonGenerator jgen,
SerializerProvider provider) throws JsonGenerationException, IOException {
- CommChannel commChannel = (CommChannel) ChannelFactory.getBackend((Channel)value);
+ CommChannel commChannel = ChannelFactory.getBackend((Channel)value);
ClassNameIdResolver idResolver = new ClassNameIdResolver(provider.constructType(commChannel.getType()), provider.getTypeFactory());
Integer cid = (Integer)commChannel.getId();
jgen.writeStringField("channelType", idResolver.idFromBaseType());
http://git-wip-us.apache.org/repos/asf/ode-jacob/blob/9fe2dea2/src/main/java/org/apache/ode/jacob/soup/jackson/JacobTypeResolverBuilder.java
----------------------------------------------------------------------
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 399be8f..0f55403 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
@@ -123,7 +123,7 @@ public class JacobTypeResolverBuilder extends StdTypeResolverBuilder {
public String idFromValue(Object value) {
if (value instanceof ChannelProxy) {
- CommChannel commChannel = (CommChannel) ChannelFactory.getBackend((Channel)value);
+ CommChannel commChannel = ChannelFactory.getBackend((Channel)value);
return commChannel.getType().getName();
}
http://git-wip-us.apache.org/repos/asf/ode-jacob/blob/9fe2dea2/src/main/java/org/apache/ode/jacob/vpu/ChannelFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/ode/jacob/vpu/ChannelFactory.java b/src/main/java/org/apache/ode/jacob/vpu/ChannelFactory.java
index ab5743d..6fdbf14 100644
--- a/src/main/java/org/apache/ode/jacob/vpu/ChannelFactory.java
+++ b/src/main/java/org/apache/ode/jacob/vpu/ChannelFactory.java
@@ -37,7 +37,7 @@ public class ChannelFactory {
}
}
- public static Object getBackend(Channel channel) {
+ public static CommChannel getBackend(Channel channel) {
ChannelInvocationHandler cih = (ChannelInvocationHandler) Proxy.getInvocationHandler(channel);
return cih._backend;
}
http://git-wip-us.apache.org/repos/asf/ode-jacob/blob/9fe2dea2/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 bb38f89..7520f90 100644
--- a/src/main/java/org/apache/ode/jacob/vpu/ExecutionQueueImpl.java
+++ b/src/main/java/org/apache/ode/jacob/vpu/ExecutionQueueImpl.java
@@ -662,7 +662,7 @@ public class ExecutionQueueImpl implements ExecutionQueue {
}
if (obj instanceof org.apache.ode.jacob.oo.ChannelProxy) {
- CommChannel commChannel = (CommChannel) ChannelFactory.getBackend((Channel)obj);
+ CommChannel commChannel = ChannelFactory.getBackend((Channel)obj);
_serializedChannels.add(commChannel.getId());
return new ChannelRef(commChannel.getType(), (Integer) commChannel.getId());
} else if (_replacementMap != null && _replacementMap.isReplaceable(obj)) {
http://git-wip-us.apache.org/repos/asf/ode-jacob/blob/9fe2dea2/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 d70afd8..f93d0bd 100644
--- a/src/main/java/org/apache/ode/jacob/vpu/JacobVPU.java
+++ b/src/main/java/org/apache/ode/jacob/vpu/JacobVPU.java
@@ -149,6 +149,18 @@ public final class JacobVPU {
++_statistics.runQueueEntries;
}
+ public Channel newChannel(Class<?> channelType, String description) {
+ CommChannel chnl = new CommChannel(channelType);
+ chnl.setDescription(description);
+ _executionQueue.add(chnl);
+
+ Channel ret = ChannelFactory.createChannel(chnl, channelType);
+ LOG.trace(">> [{}] : new {}", _cycle, ret);
+
+ _statistics.channelsCreated++;
+ return ret;
+ }
+
/**
* Get the active Jacob thread, i.e. the one associated with the current Java thread.
*/
@@ -265,10 +277,10 @@ public final class JacobVPU {
"Channel method '" + method + "' must only return void or an implementation of " + Channel.class.getName());
}
replyChannel = newChannel(method.getReturnType(), "Reply Channel");
- replyCommChannel = (CommChannel) ChannelFactory.getBackend((Channel)replyChannel);
+ replyCommChannel = ChannelFactory.getBackend((Channel)replyChannel);
}
- CommChannel chnl = (CommChannel) ChannelFactory.getBackend((Channel)channel);
+ CommChannel chnl = ChannelFactory.getBackend((Channel)channel);
Message msg = ClassUtil.createMessage(chnl, ClassUtil.getActionForMethod(method), args, replyCommChannel);
sendMessage(msg);
@@ -288,15 +300,7 @@ public final class JacobVPU {
}
public Channel newChannel(Class<?> channelType, String description) {
- CommChannel chnl = new CommChannel(channelType);
- chnl.setDescription(description);
- _executionQueue.add(chnl);
-
- Channel ret = ChannelFactory.createChannel(chnl, channelType);
- LOG.trace(">> [{}] : new {}", _cycle, ret);
-
- _statistics.channelsCreated++;
- return ret;
+ return JacobVPU.this.newChannel(channelType, description);
}
public ChannelRef newCommChannel(String description) {
@@ -313,7 +317,7 @@ public final class JacobVPU {
public String exportChannel(Channel channel) {
LOG.trace(">> [{}] : export<{}>", _cycle, channel);
- CommChannel chnl = (CommChannel)ChannelFactory.getBackend((Channel)channel);
+ CommChannel chnl = ChannelFactory.getBackend((Channel)channel);
return _executionQueue.createExport(chnl);
}
@@ -432,8 +436,7 @@ public final class JacobVPU {
addCommChannel(group, r);
}
} else if (receiver instanceof ReceiveProcess) {
- CommChannel chnl = (CommChannel)ChannelFactory.getBackend(
- ((ReceiveProcess)receiver).getChannel());
+ CommChannel chnl = ChannelFactory.getBackend(((ReceiveProcess)receiver).getChannel());
// TODO see below..
// oframe.setDebugInfo(fillDebugInfo());
CommRecv recv = new CommRecv(chnl, receiver);
http://git-wip-us.apache.org/repos/asf/ode-jacob/blob/9fe2dea2/src/test/java/org/apache/ode/jacob/oo/JacobChannelsTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/ode/jacob/oo/JacobChannelsTest.java b/src/test/java/org/apache/ode/jacob/oo/JacobChannelsTest.java
new file mode 100644
index 0000000..7bf6506
--- /dev/null
+++ b/src/test/java/org/apache/ode/jacob/oo/JacobChannelsTest.java
@@ -0,0 +1,46 @@
+/*
+ * 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
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.ode.jacob.oo;
+
+
+import org.apache.ode.jacob.soup.CommChannel;
+import org.apache.ode.jacob.vpu.ChannelFactory;
+import org.apache.ode.jacob.vpu.ExecutionQueueImpl;
+import org.apache.ode.jacob.vpu.JacobVPU;
+import org.junit.Assert;
+import org.junit.Test;
+
+
+public class JacobChannelsTest {
+
+ @Test
+ public void testMultipleSameTypeChannels() {
+ JacobVPU vpu = new JacobVPU();
+ ExecutionQueueImpl queue = new ExecutionQueueImpl();
+ vpu.setContext(queue);
+
+ Channel one = vpu.newChannel(Val.class, "");
+ Channel two = vpu.newChannel(Val.class, "");
+ CommChannel back1 = ChannelFactory.getBackend(one);
+ CommChannel back2 = ChannelFactory.getBackend(two);
+ Assert.assertEquals(back1.getType(), back2.getType());
+ Assert.assertNotEquals(back1.getId(), back2.getId());
+ }
+
+}