From 99f2ab7790003138124a5791d624ed5651e4908c Mon Sep 17 00:00:00 2001 From: Bryan Duxbury Date: Tue, 13 Jul 2010 23:11:04 +0000 Subject: [PATCH] THRIFT-818. java: Async client doesn't send method args This patch amends the tests and fixes the bug. git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@963901 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/org/apache/thrift/async/TAsyncClientManager.java | 4 +++- lib/java/src/org/apache/thrift/async/TAsyncMethodCall.java | 5 ++--- .../org/apache/thrift/async/TestTAsyncClientManager.java | 5 +++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/java/src/org/apache/thrift/async/TAsyncClientManager.java b/lib/java/src/org/apache/thrift/async/TAsyncClientManager.java index 8636bc8f..b659f7cb 100644 --- a/lib/java/src/org/apache/thrift/async/TAsyncClientManager.java +++ b/lib/java/src/org/apache/thrift/async/TAsyncClientManager.java @@ -25,6 +25,7 @@ import java.nio.channels.spi.SelectorProvider; import java.util.Iterator; import java.util.concurrent.ConcurrentLinkedQueue; +import org.apache.thrift.TException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,7 +43,8 @@ public class TAsyncClientManager { selectThread.start(); } - public void call(TAsyncMethodCall method) { + public void call(TAsyncMethodCall method) throws TException { + method.prepareMethodCall(); pendingCalls.add(method); selectThread.getSelector().wakeup(); } diff --git a/lib/java/src/org/apache/thrift/async/TAsyncMethodCall.java b/lib/java/src/org/apache/thrift/async/TAsyncMethodCall.java index e1300878..7273b5b2 100644 --- a/lib/java/src/org/apache/thrift/async/TAsyncMethodCall.java +++ b/lib/java/src/org/apache/thrift/async/TAsyncMethodCall.java @@ -62,7 +62,7 @@ public abstract class TAsyncMethodCall { private ByteBuffer frameBuffer; private State state; - protected TAsyncMethodCall(TAsyncClient client, TProtocolFactory protocolFactory, TNonblockingTransport transport, AsyncMethodCallback callback, boolean isOneway) throws TException { + protected TAsyncMethodCall(TAsyncClient client, TProtocolFactory protocolFactory, TNonblockingTransport transport, AsyncMethodCallback callback, boolean isOneway) { this.transport = transport; this.callback = callback; this.protocolFactory = protocolFactory; @@ -70,7 +70,6 @@ public abstract class TAsyncMethodCall { this.isOneway = isOneway; this.state = State.WRITING_REQUEST_SIZE; - prepareMethodCall(); } protected State getState() { @@ -79,7 +78,7 @@ public abstract class TAsyncMethodCall { protected abstract void write_args(TProtocol protocol) throws TException; - private void prepareMethodCall() throws TException { + protected void prepareMethodCall() throws TException { TMemoryBuffer memoryBuffer = new TMemoryBuffer(INITIAL_MEMORY_BUFFER_SIZE); TProtocol protocol = protocolFactory.getProtocol(memoryBuffer); write_args(protocol); diff --git a/lib/java/test/org/apache/thrift/async/TestTAsyncClientManager.java b/lib/java/test/org/apache/thrift/async/TestTAsyncClientManager.java index 5c8ff76a..2962897c 100644 --- a/lib/java/test/org/apache/thrift/async/TestTAsyncClientManager.java +++ b/lib/java/test/org/apache/thrift/async/TestTAsyncClientManager.java @@ -47,7 +47,8 @@ public class TestTAsyncClientManager extends TestCase { public class SrvHandler implements Iface { @Override public int Janky(int arg) throws TException { - return 0; + assertEquals(1, arg); + return 3; } @Override @@ -99,7 +100,7 @@ public class TestTAsyncClientManager extends TestCase { @Override public void onComplete(Janky_call response) { try { - assertEquals(0, response.getResult()); + assertEquals(3, response.getResult()); jankyReturned.set(true); } catch (TException e) { fail("unexpected exception: " + e); -- 2.17.1