Jeff Nelson created THRIFT-2104: ----------------------------------- Summary: Java struct with binary field Key: THRIFT-2104 URL: https://issues.apache.org/jira/browse/THRIFT-2104 Project: Thrift Issue Type: Bug Components: Java - Compiler Affects Versions: 0.9 Environment: Java 1.7 Reporter: Jeff Nelson Priority: Critical
There seems to be where structs lose their binary data when passed from server to client in Java. This can be illustrated using the repro steps below. 1. Create a simple struct that contains a binary field {code} struct TObject { 1: required binary data } {code} 2. Create a simple service that has a method that returns a TObject {code} service TService { TObject get(); } {code} 3. Generate java code for the struct and service 4. Create a server that implements TService.Iface {code} @Override public TObject get() throws TException { return new TObject(ByteBuffer.allocate(8).putLong(0)); } {code} 5. Create a client that calls to get get() function on the server and prints out the capacity of the return TObject's bytebuffer {code} TTransport transport = new TSocket("localhost", 1111); transport.open(); TProtocol protocol = new TBinaryProtocol(transport); TService.Client client = new TService.Client(protocol); TObject obj = client.get(); System.out.println(obj.bufferForData().capacity()); {code} Expected: the capacity to be 8 Actual: the capacity is 0 -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira