summaryrefslogtreecommitdiff
path: root/lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java
diff options
context:
space:
mode:
Diffstat (limited to 'lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java')
-rw-r--r--lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java22
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());
}
}