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)

Reply via email to