[ https://issues.apache.org/jira/browse/THRIFT-2104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13725385#comment-13725385 ]
Jeff Nelson commented on THRIFT-2104: ------------------------------------- This issue DOES NOT occur if the ByteBuffer is formed by wrapping a byte array directly. {code} return new CinchObject(ByteBuffer.wrap(Longs.toByteArray(0))); {code} > Structs lose binary data when transferred from server to client in Java > ----------------------------------------------------------------------- > > 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 an issue 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, which indicates that the data was somehow lost > during transmission -- 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