diff options
Diffstat (limited to 'lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java')
-rw-r--r-- | lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java b/lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java index 89ba9b497..d00980e91 100644 --- a/lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java +++ b/lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java @@ -19,12 +19,14 @@ package org.apache.thrift.protocol; -import org.apache.thrift.TException; -import org.apache.thrift.TByteArrayOutputStream; -import org.apache.thrift.transport.TTransport; import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; import java.util.Stack; +import org.apache.thrift.TByteArrayOutputStream; +import org.apache.thrift.TException; +import org.apache.thrift.transport.TTransport; + /** * JSON protocol implementation for thrift. * @@ -438,11 +440,11 @@ public class TJSONProtocol extends TProtocol { // Write out contents of byte array b as a JSON string with base-64 encoded // data - private void writeJSONBase64(byte[] b) throws TException { + private void writeJSONBase64(byte[] b, int offset, int length) throws TException { context_.write(); trans_.write(QUOTE); - int len = b.length; - int off = 0; + int len = length; + int off = offset; while (len >= 3) { // Encode 3 bytes at a time TBase64Utils.encode(b, off, 3, tmpbuf_, 0); @@ -604,8 +606,8 @@ public class TJSONProtocol extends TProtocol { } @Override - public void writeBinary(byte[] bin) throws TException { - writeJSONBase64(bin); + public void writeBinary(ByteBuffer bin) throws TException { + writeJSONBase64(bin.array(), bin.position() + bin.arrayOffset(), bin.limit() - bin.position() - bin.arrayOffset()); } /** @@ -927,8 +929,8 @@ public class TJSONProtocol extends TProtocol { } @Override - public byte[] readBinary() throws TException { - return readJSONBase64(); + public ByteBuffer readBinary() throws TException { + return ByteBuffer.wrap(readJSONBase64()); } } |