James E. King, III created THRIFT-4228:
------------------------------------------
Summary: Generated java service code emits a dead local store
Key: THRIFT-4228
URL: https://issues.apache.org/jira/browse/THRIFT-4228
Project: Thrift
Issue Type: Bug
Components: Java - Compiler
Affects Versions: 0.10.0
Reporter: James E. King, III
Priority: Trivial
I created a simple service:
{noformat}
namespace java org.apache.thrift.test
service DeadLocalStore
{
void doNothing();
}
{noformat}
I compiled it with {{thrift --gen java}}. The resulting generated code has
some dead local stores that are unnecessary:
{noformat}
public static class doNothing_call extends
org.apache.thrift.async.TAsyncMethodCall<Void> {
public doNothing_call(org.apache.thrift.async.AsyncMethodCallback<Void>
resultHandler, org.apache.thrift.async.TAsyncClient client,
org.apache.thrift.protocol.TProtocolFactory protocolFactory,
org.apache.thrift.transport.TNonblockingTransport transport) throws
org.apache.thrift.TException {
super(client, protocolFactory, transport, resultHandler, false);
}
public void write_args(org.apache.thrift.protocol.TProtocol prot) throws
org.apache.thrift.TException {
prot.writeMessageBegin(new
org.apache.thrift.protocol.TMessage("doNothing",
org.apache.thrift.protocol.TMessageType.CALL, 0));
doNothing_args args = new doNothing_args();
args.write(prot);
prot.writeMessageEnd();
}
public Void getResult() throws org.apache.thrift.TException {
if (getState() !=
org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
throw new java.lang.IllegalStateException("Method call not
finished!");
}
org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new
org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
org.apache.thrift.protocol.TProtocol prot =
client.getProtocolFactory().getProtocol(memoryTransport);
return null;
}
}
{noformat}
Above, memoryTransport and prot are unnecessary.
{noformat}
private static class doNothing_argsTupleScheme extends
org.apache.thrift.scheme.TupleScheme<doNothing_args> {
@Override
public void write(org.apache.thrift.protocol.TProtocol prot,
doNothing_args struct) throws org.apache.thrift.TException {
org.apache.thrift.protocol.TTupleProtocol oprot =
(org.apache.thrift.protocol.TTupleProtocol) prot;
}
@Override
public void read(org.apache.thrift.protocol.TProtocol prot,
doNothing_args struct) throws org.apache.thrift.TException {
org.apache.thrift.protocol.TTupleProtocol iprot =
(org.apache.thrift.protocol.TTupleProtocol) prot;
}
}
{noformat}
Above, iprot and oprot are unnecessary.
{noformat}
public void onError(java.lang.Exception e) {
byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
org.apache.thrift.TSerializable msg;
doNothing_result result = new doNothing_result();
if (e instanceof org.apache.thrift.transport.TTransportException) {
_LOGGER.error("TTransportException inside handler", e);
fb.close();
return;
} else if (e instanceof org.apache.thrift.TApplicationException) {
_LOGGER.error("TApplicationException inside handler", e);
msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
msg = (org.apache.thrift.TApplicationException)e;
} else {
_LOGGER.error("Exception inside handler", e);
msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
msg = new
org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR,
e.getMessage());
}
try {
fcall.sendResponse(fb,msg,msgType,seqid);
} catch (java.lang.Exception ex) {
_LOGGER.error("Exception writing to internal frame buffer", ex);
fb.close();
}
}
{noformat}
Above, result is unnecessary.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)