Not throw user defined exception when a defined method returns boolean result -----------------------------------------------------------------------------
Key: THRIFT-1474 URL: https://issues.apache.org/jira/browse/THRIFT-1474 Project: Thrift Issue Type: Bug Components: Java - Compiler Affects Versions: 0.8 Reporter: Koji Hisano A boolean result method always returns result value and exception value when a user defined exception is thrown. So, client handles the result as having a result value and ignore the exception. Sample thrift definition: bool createAccount(1:string userName, 2:string password, 3:string mailAddress) throws (1: Exception.ServiceException serviceException); Current generated code in createAccount_resultStandardScheme class: public void write(org.apache.thrift.protocol.TProtocol oprot, createAccount_result struct) throws org.apache.thrift.TException { struct.validate(); oprot.writeStructBegin(STRUCT_DESC); oprot.writeFieldBegin(SUCCESS_FIELD_DESC); // <- Problem because the value existence is not checked oprot.writeBool(struct.success); oprot.writeFieldEnd(); if (struct.serviceException != null) { // <- I think it is better to use #isSetServiceException oprot.writeFieldBegin(SERVICE_EXCEPTION_FIELD_DESC); struct.serviceException.write(oprot); oprot.writeFieldEnd(); } oprot.writeFieldStop(); oprot.writeStructEnd(); } Correct generated code (Maybe): public void write(org.apache.thrift.protocol.TProtocol oprot, createAccount_result struct) throws org.apache.thrift.TException { struct.validate(); oprot.writeStructBegin(STRUCT_DESC); if (struct.isSetSuccess()) { oprot.writeFieldBegin(SUCCESS_FIELD_DESC); oprot.writeBool(struct.success); oprot.writeFieldEnd(); } if (struct.isSetServiceException()) { oprot.writeFieldBegin(SERVICE_EXCEPTION_FIELD_DESC); struct.serviceException.write(oprot); oprot.writeFieldEnd(); } oprot.writeFieldStop(); oprot.writeStructEnd(); } -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira