THRIFT-4725: Change Return Type Signature of Process Methods
diff --git a/CHANGES.md b/CHANGES.md
index 4f84275..2dd7f0a 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -19,6 +19,7 @@
- [THRIFT-4730](https://issues.apache.org/jira/browse/THRIFT-4730) - C++: BoostThreadFactory, PosixThreadFactory, StdThreadFactory removed
- [THRIFT-4732](https://issues.apache.org/jira/browse/THRIFT-4732) - C++: CMake build changed to use BUILD_SHARED_LIBS
- [THRIFT-4735](https://issues.apache.org/jira/browse/THRIFT-4735) - C++: Removed Qt4 support
+- [THRIFT-4725](https://issues.apache.org/jira/browse/THRIFT-4725) - Java change return type signature of 'process' methods
### Known Isues (Blocker or Critical)
diff --git a/lib/java/README.md b/lib/java/README.md
index 0b5f0d8..5057465 100644
--- a/lib/java/README.md
+++ b/lib/java/README.md
@@ -164,6 +164,11 @@
# Breaking Changes
+## 1.0
+
+The signature of the 'process' method in TAsyncProcessor and TProcessor has
+changed to remove a boolean return type and to instead rely on Exceptions.
+
## 0.12.0
The access modifier of the AutoExpandingBuffer class has been changed from
diff --git a/lib/java/src/org/apache/thrift/TAsyncProcessor.java b/lib/java/src/org/apache/thrift/TAsyncProcessor.java
index 533e74d..66f7688 100644
--- a/lib/java/src/org/apache/thrift/TAsyncProcessor.java
+++ b/lib/java/src/org/apache/thrift/TAsyncProcessor.java
@@ -21,8 +21,13 @@
import org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer;
public interface TAsyncProcessor {
- /**
- * Implementations must call fb.responseReady() once processing is complete
- */
- public boolean process(final AsyncFrameBuffer fb) throws TException;
+ /**
+ * Process a single frame.
+
+ * <b>Note:</b> Implementations must call fb.responseReady() once processing
+ * is complete
+ *
+ * @throws TException if the frame cannot be processed
+ */
+ public void process(final AsyncFrameBuffer fb) throws TException;
}
diff --git a/lib/java/src/org/apache/thrift/TBaseAsyncProcessor.java b/lib/java/src/org/apache/thrift/TBaseAsyncProcessor.java
index 0ab1827..f13f068 100644
--- a/lib/java/src/org/apache/thrift/TBaseAsyncProcessor.java
+++ b/lib/java/src/org/apache/thrift/TBaseAsyncProcessor.java
@@ -43,7 +43,7 @@
return Collections.unmodifiableMap(processMap);
}
- public boolean process(final AsyncFrameBuffer fb) throws TException {
+ public void process(final AsyncFrameBuffer fb) throws TException {
final TProtocol in = fb.getInputProtocol();
final TProtocol out = fb.getOutputProtocol();
@@ -67,7 +67,7 @@
out.getTransport().flush();
}
fb.responseReady();
- return true;
+ return;
}
//Get Args
@@ -89,7 +89,7 @@
out.getTransport().flush();
}
fb.responseReady();
- return true;
+ return;
}
in.readMessageEnd();
@@ -105,11 +105,10 @@
LOGGER.debug("Exception handling function", e);
resultHandler.onError(e);
}
- return true;
+ return;
}
@Override
- public boolean process(TProtocol in, TProtocol out) throws TException {
- return false;
+ public void process(TProtocol in, TProtocol out) throws TException {
}
}
diff --git a/lib/java/src/org/apache/thrift/TBaseProcessor.java b/lib/java/src/org/apache/thrift/TBaseProcessor.java
index f9a9a9e..55a0f15 100644
--- a/lib/java/src/org/apache/thrift/TBaseProcessor.java
+++ b/lib/java/src/org/apache/thrift/TBaseProcessor.java
@@ -23,7 +23,7 @@
}
@Override
- public boolean process(TProtocol in, TProtocol out) throws TException {
+ public void process(TProtocol in, TProtocol out) throws TException {
TMessage msg = in.readMessageBegin();
ProcessFunction fn = processMap.get(msg.name);
if (fn == null) {
@@ -34,9 +34,8 @@
x.write(out);
out.writeMessageEnd();
out.getTransport().flush();
- return true;
+ } else {
+ fn.process(msg.seqid, in, out, iface);
}
- fn.process(msg.seqid, in, out, iface);
- return true;
}
}
diff --git a/lib/java/src/org/apache/thrift/TMultiplexedProcessor.java b/lib/java/src/org/apache/thrift/TMultiplexedProcessor.java
index d0c5603..14b541d 100644
--- a/lib/java/src/org/apache/thrift/TMultiplexedProcessor.java
+++ b/lib/java/src/org/apache/thrift/TMultiplexedProcessor.java
@@ -92,7 +92,7 @@
* name was not found in the service map. You called {@link #registerProcessor(String, TProcessor) registerProcessor}
* during initialization, right? :)
*/
- public boolean process(TProtocol iprot, TProtocol oprot) throws TException {
+ public void process(TProtocol iprot, TProtocol oprot) throws TException {
/*
Use the actual underlying protocol (e.g. TBinaryProtocol) to read the
message header. This pulls the message "off the wire", which we'll
@@ -109,7 +109,8 @@
if (index < 0) {
if (defaultProcessor != null) {
// Dispatch processing to the stored processor
- return defaultProcessor.process(new StoredMessageProtocol(iprot, message), oprot);
+ defaultProcessor.process(new StoredMessageProtocol(iprot, message), oprot);
+ return;
}
throw new TException("Service name not found in message name: " + message.name + ". Did you " +
"forget to use a TMultiplexProtocol in your client?");
@@ -131,7 +132,7 @@
);
// Dispatch processing to the stored processor
- return actualProcessor.process(new StoredMessageProtocol(iprot, standardMessage), oprot);
+ actualProcessor.process(new StoredMessageProtocol(iprot, standardMessage), oprot);
}
/**
diff --git a/lib/java/src/org/apache/thrift/TProcessor.java b/lib/java/src/org/apache/thrift/TProcessor.java
index d79522c..15ba9c0 100644
--- a/lib/java/src/org/apache/thrift/TProcessor.java
+++ b/lib/java/src/org/apache/thrift/TProcessor.java
@@ -24,9 +24,7 @@
/**
* A processor is a generic object which operates upon an input stream and
* writes to some output stream.
- *
*/
public interface TProcessor {
- public boolean process(TProtocol in, TProtocol out)
- throws TException;
+ public void process(TProtocol in, TProtocol out) throws TException;
}
diff --git a/lib/java/src/org/apache/thrift/server/TSimpleServer.java b/lib/java/src/org/apache/thrift/server/TSimpleServer.java
index e815b2c..13501ef 100644
--- a/lib/java/src/org/apache/thrift/server/TSimpleServer.java
+++ b/lib/java/src/org/apache/thrift/server/TSimpleServer.java
@@ -77,9 +77,7 @@
if (eventHandler_ != null) {
eventHandler_.processContext(connectionContext, inputTransport, outputTransport);
}
- if(!processor.process(inputProtocol, outputProtocol)) {
- break;
- }
+ processor.process(inputProtocol, outputProtocol);
}
}
} catch (TTransportException ttx) {
diff --git a/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java b/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java
index 1697ad6..db1ecb9 100644
--- a/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java
+++ b/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java
@@ -307,9 +307,10 @@
eventHandler.processContext(connectionContext, inputTransport, outputTransport);
}
- if(stopped_ || !processor.process(inputProtocol, outputProtocol)) {
+ if (stopped_) {
break;
}
+ processor.process(inputProtocol, outputProtocol);
}
} catch (TException tx) {
LOGGER.error("Thrift error occurred during processing of message.", tx);
diff --git a/lib/java/test/org/apache/thrift/TestMultiplexedProcessor.java b/lib/java/test/org/apache/thrift/TestMultiplexedProcessor.java
index 01776ca..85e7966 100644
--- a/lib/java/test/org/apache/thrift/TestMultiplexedProcessor.java
+++ b/lib/java/test/org/apache/thrift/TestMultiplexedProcessor.java
@@ -57,13 +57,12 @@
static class StubProcessor implements TProcessor {
@Override
- public boolean process(TProtocol in, TProtocol out) throws TException {
+ public void process(TProtocol in, TProtocol out) throws TException {
TMessage msg = in.readMessageBegin();
if (!"func".equals(msg.name) || msg.type!=TMessageType.CALL || msg.seqid!=42) {
throw new TException("incorrect parameters");
}
out.writeMessageBegin(new TMessage("func", TMessageType.REPLY, 42));
- return true;
}
}