THRIFT-1447. java: NullpointerException in ProcessFunction.class :in 'oneway' method
Patch: Ihor Mysak
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1244272 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc
index b76338a..3f83222 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -2673,6 +2673,10 @@
indent(f_service_) << " return new " << argsname << "();" << endl;
indent(f_service_) << "}" << endl << endl;
+ indent(f_service_) << "protected boolean isOneway() {" << endl;
+ indent(f_service_) << " return " << ((tfunction->is_oneway())?"true":"false") << ";" << endl;
+ indent(f_service_) << "}" << endl << endl;
+
indent(f_service_) << "public " << resultname << " getResult(I iface, " << argsname << " args) throws org.apache.thrift.TException {" << endl;
indent_up();
if (!tfunction->is_oneway()) {
diff --git a/lib/java/src/org/apache/thrift/ProcessFunction.java b/lib/java/src/org/apache/thrift/ProcessFunction.java
index 88d57a5..3afd38c 100644
--- a/lib/java/src/org/apache/thrift/ProcessFunction.java
+++ b/lib/java/src/org/apache/thrift/ProcessFunction.java
@@ -30,12 +30,16 @@
}
iprot.readMessageEnd();
TBase result = getResult(iface, args);
- oprot.writeMessageBegin(new TMessage(getMethodName(), TMessageType.REPLY, seqid));
- result.write(oprot);
- oprot.writeMessageEnd();
- oprot.getTransport().flush();
+ if(!isOneway()) {
+ oprot.writeMessageBegin(new TMessage(getMethodName(), TMessageType.REPLY, seqid));
+ result.write(oprot);
+ oprot.writeMessageEnd();
+ oprot.getTransport().flush();
+ }
}
+ protected abstract boolean isOneway();
+
public abstract TBase getResult(I iface, T args) throws TException;
public abstract T getEmptyArgsInstance();