You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by br...@apache.org on 2010/08/06 02:18:25 UTC

svn commit: r982839 - in /incubator/thrift/trunk: compiler/cpp/src/generate/ lib/java/ lib/java/src/org/apache/thrift/ lib/java/src/org/apache/thrift/protocol/ lib/java/test/org/apache/thrift/ lib/java/test/org/apache/thrift/protocol/ lib/java/test/org...

Author: bryanduxbury
Date: Fri Aug  6 00:18:25 2010
New Revision: 982839

URL: http://svn.apache.org/viewvc?rev=982839&view=rev
Log:
THRIFT-830. java: Switch binary field implementation from byte[] to ByteBuffer

This patch switches the implementation of binary fields to ByteBuffer in the Java generated code, yielding up to 2.5x speed boost.

Modified:
    incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc
    incubator/thrift/trunk/lib/java/build.xml
    incubator/thrift/trunk/lib/java/src/org/apache/thrift/TBaseHelper.java
    incubator/thrift/trunk/lib/java/src/org/apache/thrift/TDeserializer.java
    incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java
    incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java
    incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java
    incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TProtocol.java
    incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TSimpleJSONProtocol.java
    incubator/thrift/trunk/lib/java/test/org/apache/thrift/Fixtures.java
    incubator/thrift/trunk/lib/java/test/org/apache/thrift/TestStruct.java
    incubator/thrift/trunk/lib/java/test/org/apache/thrift/TestTDeserializer.java
    incubator/thrift/trunk/lib/java/test/org/apache/thrift/TestTUnion.java
    incubator/thrift/trunk/lib/java/test/org/apache/thrift/protocol/ProtocolTestBase.java
    incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/EqualityTest.java
    incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/JavaBeansTest.java
    incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/ToStringTest.java

Modified: incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc?rev=982839&r1=982838&r2=982839&view=diff
==============================================================================
--- incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc (original)
+++ incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc Fri Aug  6 00:18:25 2010
@@ -322,6 +322,7 @@ string t_java_generator::java_type_impor
     "import java.util.EnumSet;\n" +
     "import java.util.Collections;\n" +
     "import java.util.BitSet;\n" +
+    "import java.nio.ByteBuffer;\n"
     "import java.util.Arrays;\n" +
     "import org.slf4j.Logger;\n" +
     "import org.slf4j.LoggerFactory;\n\n";
@@ -1002,8 +1003,7 @@ void t_java_generator::generate_union_co
   out << endl;
 
   indent(out) << "public boolean equals(" << tstruct->get_name() << " other) {" << endl;
-  indent(out) << "  return other != null && getSetField() == other.getSetField() && ((value_ instanceof byte[]) ? " << endl;
-  indent(out) << "    Arrays.equals((byte[])getFieldValue(), (byte[])other.getFieldValue()) : getFieldValue().equals(other.getFieldValue()));" << endl;
+  indent(out) << "  return other != null && getSetField() == other.getSetField() && getFieldValue().equals(other.getFieldValue());" << endl;
   indent(out) << "}" << endl;
   out << endl;
 
@@ -1312,7 +1312,7 @@ void t_java_generator::generate_java_str
       indent() << "  return false;" << endl;
 
     if (t->is_base_type() && ((t_base_type*)t)->is_binary()) {
-      unequal = "!java.util.Arrays.equals(this." + name + ", that." + name + ")";
+      unequal = "!this." + name + ".equals(that." + name + ")";
     } else if (can_be_null) {
       unequal = "!this." + name + ".equals(that." + name + ")";
     } else {
@@ -1965,12 +1965,7 @@ void t_java_generator::generate_java_str
     }
     
     if (field->get_type()->is_base_type() && ((t_base_type*)(field->get_type()))->is_binary()) {
-      indent(out) << "  int __" << field->get_name() << "_size = Math.min(this." << field->get_name() << ".length, 128);" << endl;
-      indent(out) << "  for (int i = 0; i < __" << field->get_name() << "_size; i++) {" << endl;
-      indent(out) << "    if (i != 0) sb.append(\" \");" << endl;
-      indent(out) << "    sb.append(Integer.toHexString(this." << field->get_name() << "[i]).length() > 1 ? Integer.toHexString(this." << field->get_name() << "[i]).substring(Integer.toHexString(this." << field->get_name() << "[i]).length() - 2).toUpperCase() : \"0\" + Integer.toHexString(this." << field->get_name() << "[i]).toUpperCase());" <<endl;
-      indent(out) << "  }" << endl;
-      indent(out) << "  if (this." << field->get_name() << ".length > 128) sb.append(\" ...\");" << endl;
+      indent(out) << "TBaseHelper.toString(this." << field->get_name() << ", sb);" << endl;
     } else {
       indent(out) << "sb.append(this." << (*f_iter)->get_name() << ");" << endl;
     }
@@ -3313,7 +3308,7 @@ string t_java_generator::base_type_name(
     return "void";
   case t_base_type::TYPE_STRING:
     if (type->is_binary()) {
-      return "byte[]";
+      return "ByteBuffer";
     } else {
       return "String";
     }
@@ -3691,7 +3686,7 @@ void t_java_generator::generate_deep_cop
     } else {
       // iterative copy
       if(((t_base_type*)elem_type)->is_binary()){
-        indent(out) << "byte[] temp_binary_element = ";
+        indent(out) << "ByteBuffer temp_binary_element = ";
         generate_deep_copy_non_container(out, iterator_element_name, "temp_binary_element", elem_type);
         out << ";" << endl;
         indent(out) << result_name << ".add(temp_binary_element);" << endl;
@@ -3714,8 +3709,8 @@ void t_java_generator::generate_deep_cop
   if (type->is_base_type() || type->is_enum() || type->is_typedef()) {
     // binary fields need to be copied with System.arraycopy
     if (((t_base_type*)type)->is_binary()){
-      out << "new byte[" << source_name << ".length];" << endl;
-      indent(out) << "System.arraycopy(" << source_name << ", 0, " << dest_name << ", 0, " << source_name << ".length)";
+      out << "ByteBuffer.wrap(new byte[" << source_name << ".limit() - " << source_name << ".arrayOffset()]);" << endl;
+      indent(out) << "System.arraycopy(" << source_name << ".array(), " << source_name << ".arrayOffset(), " << dest_name << ".array(), 0, " << source_name << ".limit() - " << source_name << ".arrayOffset())";
     }
     // everything else can be copied directly
     else

Modified: incubator/thrift/trunk/lib/java/build.xml
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/build.xml?rev=982839&r1=982838&r2=982839&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/build.xml (original)
+++ incubator/thrift/trunk/lib/java/build.xml Fri Aug  6 00:18:25 2010
@@ -204,8 +204,6 @@
   <target name="deprecated-test" description="Run the non-JUnit test suite" depends="compile-test">
     <java classname="org.apache.thrift.test.EqualityTest"
       classpathref="test.classpath" failonerror="true" />
-    <java classname="org.apache.thrift.test.ToStringTest"
-      classpathref="test.classpath" failonerror="true" />
     <java classname="org.apache.thrift.test.JavaBeansTest"
       classpathref="test.classpath" failonerror="true" />
   </target>

Modified: incubator/thrift/trunk/lib/java/src/org/apache/thrift/TBaseHelper.java
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/src/org/apache/thrift/TBaseHelper.java?rev=982839&r1=982838&r2=982839&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/src/org/apache/thrift/TBaseHelper.java (original)
+++ incubator/thrift/trunk/lib/java/src/org/apache/thrift/TBaseHelper.java Fri Aug  6 00:18:25 2010
@@ -17,6 +17,7 @@
  */
 package org.apache.thrift;
 
+import java.nio.ByteBuffer;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
@@ -217,4 +218,26 @@ public class TBaseHelper {
     }
   }
 
+  public static void toString(ByteBuffer bb, StringBuilder sb) {
+    byte[] buf = bb.array();
+
+    int arrayOffset = bb.arrayOffset();
+    int origLimit = bb.limit();
+    int limit = (origLimit - arrayOffset > 128) ? arrayOffset + 128 : origLimit;
+
+    for (int i = arrayOffset; i < limit; i++) {
+      if (i > arrayOffset) {
+        sb.append(" ");
+      }
+      sb.append(paddedByteString(buf[i]));
+    }
+    if (origLimit != limit) {
+      sb.append("...");
+    }
+  }
+
+  public static String paddedByteString(byte b) {
+    int extended = (b | 0x100) & 0x1ff;
+    return Integer.toHexString(extended).toUpperCase().substring(1);
+  }
 }

Modified: incubator/thrift/trunk/lib/java/src/org/apache/thrift/TDeserializer.java
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/src/org/apache/thrift/TDeserializer.java?rev=982839&r1=982838&r2=982839&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/src/org/apache/thrift/TDeserializer.java (original)
+++ incubator/thrift/trunk/lib/java/src/org/apache/thrift/TDeserializer.java Fri Aug  6 00:18:25 2010
@@ -20,6 +20,7 @@
 package org.apache.thrift;
 
 import java.io.UnsupportedEncodingException;
+import java.nio.ByteBuffer;
 
 import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.protocol.TField;
@@ -203,9 +204,9 @@ public class TDeserializer {
    * @param fieldIdPathRest The rest FieldId's that define a path to a binary field
    * @throws TException
    */
-  public byte[] partialDeserializeByteArray(byte[] bytes, TFieldIdEnum fieldIdPathFirst, TFieldIdEnum ... fieldIdPathRest) throws TException {
+  public ByteBuffer partialDeserializeByteArray(byte[] bytes, TFieldIdEnum fieldIdPathFirst, TFieldIdEnum ... fieldIdPathRest) throws TException {
     // TType does not have binary, so we use the arbitrary num 100
-    return (byte[]) partialDeserializeField((byte)100, bytes, fieldIdPathFirst, fieldIdPathRest);
+    return (ByteBuffer) partialDeserializeField((byte)100, bytes, fieldIdPathFirst, fieldIdPathRest);
   }
 
   /**

Modified: incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java?rev=982839&r1=982838&r2=982839&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java (original)
+++ incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java Fri Aug  6 00:18:25 2010
@@ -20,6 +20,7 @@
 package org.apache.thrift.protocol;
 
 import java.io.UnsupportedEncodingException;
+import java.nio.ByteBuffer;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.transport.TTransport;
@@ -189,9 +190,10 @@ public class TBinaryProtocol extends TPr
     }
   }
 
-  public void writeBinary(byte[] bin) throws TException {
-    writeI32(bin.length);
-    trans_.write(bin, 0, bin.length);
+  public void writeBinary(ByteBuffer bin) throws TException {
+    int length = bin.limit() - bin.position() - bin.arrayOffset();
+    writeI32(length);
+    trans_.write(bin.array(), bin.position() + bin.arrayOffset(), length);
   }
 
   /**
@@ -356,12 +358,19 @@ public class TBinaryProtocol extends TPr
     }
   }
 
-  public byte[] readBinary() throws TException {
+  public ByteBuffer readBinary() throws TException {
     int size = readI32();
     checkReadLength(size);
+
+    if (trans_.getBytesRemainingInBuffer() >= size) {
+      ByteBuffer bb = ByteBuffer.wrap(trans_.getBuffer(), trans_.getBufferPosition(), size);
+      trans_.consumeBuffer(size);
+      return bb;
+    }
+
     byte[] buf = new byte[size];
     trans_.readAll(buf, 0, size);
-    return buf;
+    return ByteBuffer.wrap(buf);
   }
 
   private int readAll(byte[] buf, int off, int len) throws TException {

Modified: incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java?rev=982839&r1=982838&r2=982839&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java (original)
+++ incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java Fri Aug  6 00:18:25 2010
@@ -21,6 +21,7 @@
 package org.apache.thrift.protocol;
 
 import java.io.UnsupportedEncodingException;
+import java.nio.ByteBuffer;
 
 import org.apache.thrift.ShortStack;
 import org.apache.thrift.TException;
@@ -294,7 +295,8 @@ public final class TCompactProtocol exte
    */
   public void writeString(String str) throws TException {
     try {
-      writeBinary(str.getBytes("UTF-8"));
+      byte[] bytes = str.getBytes("UTF-8");
+      writeBinary(bytes, 0, bytes.length);
     } catch (UnsupportedEncodingException e) {
       throw new TException("UTF-8 not supported!");
     }
@@ -303,9 +305,14 @@ public final class TCompactProtocol exte
   /**
    * Write a byte array, using a varint for the size. 
    */
-  public void writeBinary(byte[] bin) throws TException {
-    writeVarint32(bin.length);
-    trans_.write(bin);
+  public void writeBinary(ByteBuffer bin) throws TException {
+    int length = bin.limit() - bin.position() - bin.arrayOffset();
+    writeBinary(bin.array(), bin.position() + bin.arrayOffset(), length);
+  }
+
+  private void writeBinary(byte[] buf, int offset, int length) throws TException {
+    writeVarint32(length);
+    trans_.write(buf, offset, length);
   }
 
   //
@@ -626,13 +633,13 @@ public final class TCompactProtocol exte
   /**
    * Read a byte[] from the wire. 
    */
-  public byte[] readBinary() throws TException {
+  public ByteBuffer readBinary() throws TException {
     int length = readVarint32();
-    if (length == 0) return new byte[0];
+    if (length == 0) return ByteBuffer.wrap(new byte[0]);
 
     byte[] buf = new byte[length];
     trans_.readAll(buf, 0, length);
-    return buf;
+    return ByteBuffer.wrap(buf);
   }
 
   /**

Modified: incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java?rev=982839&r1=982838&r2=982839&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java (original)
+++ incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java Fri Aug  6 00:18:25 2010
@@ -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 TProt
 
   // 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 TProt
   }
 
   @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 TProt
   }
 
   @Override
-  public byte[] readBinary() throws TException {
-    return readJSONBase64();
+  public ByteBuffer readBinary() throws TException {
+    return ByteBuffer.wrap(readJSONBase64());
   }
 
 }

Modified: incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TProtocol.java
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TProtocol.java?rev=982839&r1=982838&r2=982839&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TProtocol.java (original)
+++ incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TProtocol.java Fri Aug  6 00:18:25 2010
@@ -19,6 +19,8 @@
 
 package org.apache.thrift.protocol;
 
+import java.nio.ByteBuffer;
+
 import org.apache.thrift.TException;
 import org.apache.thrift.transport.TTransport;
 
@@ -97,7 +99,7 @@ public abstract class TProtocol {
 
   public abstract void writeString(String str) throws TException;
 
-  public abstract void writeBinary(byte[] bin) throws TException;
+  public abstract void writeBinary(ByteBuffer buf) throws TException;
 
   /**
    * Reading methods.
@@ -141,7 +143,7 @@ public abstract class TProtocol {
 
   public abstract String readString() throws TException;
 
-  public abstract byte[] readBinary() throws TException;
+  public abstract ByteBuffer readBinary() throws TException;
 
   /**
    * Reset any internal state back to a blank slate. This method only needs to

Modified: incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TSimpleJSONProtocol.java
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TSimpleJSONProtocol.java?rev=982839&r1=982838&r2=982839&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TSimpleJSONProtocol.java (original)
+++ incubator/thrift/trunk/lib/java/src/org/apache/thrift/protocol/TSimpleJSONProtocol.java Fri Aug  6 00:18:25 2010
@@ -20,6 +20,7 @@
 package org.apache.thrift.protocol;
 
 import java.io.UnsupportedEncodingException;
+import java.nio.ByteBuffer;
 import java.util.Stack;
 
 import org.apache.thrift.TException;
@@ -282,10 +283,10 @@ public class TSimpleJSONProtocol extends
     _writeStringData(escape.toString());
   }
 
-  public void writeBinary(byte[] bin) throws TException {
+  public void writeBinary(ByteBuffer bin) throws TException {
     try {
       // TODO(mcslee): Fix this
-      writeString(new String(bin, "UTF-8"));
+      writeString(new String(bin.array(), bin.position() + bin.arrayOffset(), bin.limit() - bin.position() - bin.arrayOffset(), "UTF-8"));
     } catch (UnsupportedEncodingException uex) {
       throw new TException("JVM DOES NOT SUPPORT UTF-8");
     }
@@ -376,9 +377,9 @@ public class TSimpleJSONProtocol extends
     return "";
   }
 
-  public byte[] readBinary() throws TException {
+  public ByteBuffer readBinary() throws TException {
     // TODO(mcslee): implement
-    return new byte[0];
+    return ByteBuffer.wrap(new byte[0]);
   }
 
 }

Modified: incubator/thrift/trunk/lib/java/test/org/apache/thrift/Fixtures.java
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/test/org/apache/thrift/Fixtures.java?rev=982839&r1=982838&r2=982839&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/test/org/apache/thrift/Fixtures.java (original)
+++ incubator/thrift/trunk/lib/java/test/org/apache/thrift/Fixtures.java Fri Aug  6 00:18:25 2010
@@ -20,6 +20,7 @@
 
 package org.apache.thrift;
 
+import java.nio.ByteBuffer;
 import java.util.*;
 import thrift.test.*;
 
@@ -52,7 +53,7 @@ public class Fixtures {
       oneOfEach.double_precision = Math.PI;
       oneOfEach.some_characters = "JSON THIS! \"\1";
       oneOfEach.zomg_unicode = new String(kUnicodeBytes, "UTF-8");
-      oneOfEach.base64 = "base64".getBytes();
+      oneOfEach.base64 = ByteBuffer.wrap("base64".getBytes());
       // byte, i16, and i64 lists are populated by default constructor
 
       Bonk bonk = new Bonk();
@@ -112,7 +113,7 @@ public class Fixtures {
 
       // superhuge compact proto test struct
       compactProtoTestStruct = new CompactProtoTestStruct(thrift.test.Constants.COMPACT_TEST);
-      compactProtoTestStruct.a_binary = new byte[]{0,1,2,3,4,5,6,7,8};
+      compactProtoTestStruct.a_binary = ByteBuffer.wrap(new byte[]{0,1,2,3,4,5,6,7,8});
     } catch (Exception e) {
       throw new RuntimeException(e);
     }

Modified: incubator/thrift/trunk/lib/java/test/org/apache/thrift/TestStruct.java
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/test/org/apache/thrift/TestStruct.java?rev=982839&r1=982838&r2=982839&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/test/org/apache/thrift/TestStruct.java (original)
+++ incubator/thrift/trunk/lib/java/test/org/apache/thrift/TestStruct.java Fri Aug  6 00:18:25 2010
@@ -18,10 +18,7 @@
  */
 package org.apache.thrift;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
+import java.nio.ByteBuffer;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -39,32 +36,13 @@ import thrift.test.Bonk;
 import thrift.test.CrazyNesting;
 import thrift.test.HolyMoley;
 import thrift.test.Insanity;
+import thrift.test.JavaTestHelper;
 import thrift.test.Nesting;
 import thrift.test.Numberz;
 import thrift.test.OneOfEach;
 import thrift.test.Xtruct;
 
 public class TestStruct extends TestCase {
-
-  public static Object deepCopyViaSerialization(Object oldObj) throws Exception {
-    ObjectOutputStream oos = null;
-    ObjectInputStream ois = null;
-    try {
-      ByteArrayOutputStream bos =
-        new ByteArrayOutputStream();
-      oos = new ObjectOutputStream(bos);
-      oos.writeObject(oldObj);
-      oos.flush();
-      ByteArrayInputStream bis =
-        new ByteArrayInputStream(bos.toByteArray());
-      ois = new ObjectInputStream(bis);
-      return ois.readObject();
-    } finally {
-      oos.close();
-      ois.close();
-    }
-  }
-
   public void testIdentity() throws Exception {
     TSerializer   binarySerializer   = new   TSerializer(new TBinaryProtocol.Factory());
     TDeserializer binaryDeserializer = new TDeserializer(new TBinaryProtocol.Factory());
@@ -72,7 +50,7 @@ public class TestStruct extends TestCase
     OneOfEach ooe = Fixtures.oneOfEach;
 
     Nesting n = new Nesting();
-    n.my_ooe = (OneOfEach)deepCopyViaSerialization(ooe);
+    n.my_ooe = ooe;
     n.my_ooe.integer16 = 16;
     n.my_ooe.integer32 = 32;
     n.my_ooe.integer64 = 64;
@@ -127,10 +105,10 @@ public class TestStruct extends TestCase
     assertEquals(hmCopy, hmCopy2);
 
     // change binary value in original object
-    hm.big.get(0).base64[0]++;
+    hm.big.get(0).base64.array()[0]++;
     // make sure the change didn't propagate to the copied object
     assertFalse(hm.equals(hmCopy2));
-    hm.big.get(0).base64[0]--; // undo change
+    hm.big.get(0).base64.array()[0]--; // undo change
 
     hmCopy2.bonks.get("two").get(1).message = "What else?";
 
@@ -261,4 +239,61 @@ public class TestStruct extends TestCase
     assertTrue(vmd.valueMetaData.isTypedef());
     assertFalse(vmd.keyMetaData.isTypedef());
   }
+
+  public void testToString() throws Exception {
+    JavaTestHelper object = new JavaTestHelper();
+    object.req_int = 0;
+    object.req_obj = "";
+
+    object.req_bin = ByteBuffer.wrap(new byte[] {
+      0, -1, 2, -3, 4, -5, 6, -7, 8, -9, 10, -11, 12, -13, 14, -15,
+      16, -17, 18, -19, 20, -21, 22, -23, 24, -25, 26, -27, 28, -29,
+      30, -31, 32, -33, 34, -35, 36, -37, 38, -39, 40, -41, 42, -43, 44,
+      -45, 46, -47, 48, -49, 50, -51, 52, -53, 54, -55, 56, -57, 58, -59,
+      60, -61, 62, -63, 64, -65, 66, -67, 68, -69, 70, -71, 72, -73, 74,
+      -75, 76, -77, 78, -79, 80, -81, 82, -83, 84, -85, 86, -87, 88, -89,
+      90, -91, 92, -93, 94, -95, 96, -97, 98, -99, 100, -101, 102, -103,
+      104, -105, 106, -107, 108, -109, 110, -111, 112, -113, 114, -115,
+      116, -117, 118, -119, 120, -121, 122, -123, 124, -125, 126, -127,
+    });
+
+    assertEquals("JavaTestHelper(req_int:0, req_obj:, req_bin:"+
+        "00 FF 02 FD 04 FB 06 F9 08 F7 0A F5 0C F3 0E F1 10 EF 12 ED 14 "+
+        "EB 16 E9 18 E7 1A E5 1C E3 1E E1 20 DF 22 DD 24 DB 26 D9 28 D7 "+
+        "2A D5 2C D3 2E D1 30 CF 32 CD 34 CB 36 C9 38 C7 3A C5 3C C3 3E "+
+        "C1 40 BF 42 BD 44 BB 46 B9 48 B7 4A B5 4C B3 4E B1 50 AF 52 AD "+
+        "54 AB 56 A9 58 A7 5A A5 5C A3 5E A1 60 9F 62 9D 64 9B 66 99 68 "+
+        "97 6A 95 6C 93 6E 91 70 8F 72 8D 74 8B 76 89 78 87 7A 85 7C 83 "+
+        "7E 81)",
+        object.toString());
+ 
+    object.req_bin = ByteBuffer.wrap(new byte[] {
+      0, -1, 2, -3, 4, -5, 6, -7, 8, -9, 10, -11, 12, -13, 14, -15,
+      16, -17, 18, -19, 20, -21, 22, -23, 24, -25, 26, -27, 28, -29,
+      30, -31, 32, -33, 34, -35, 36, -37, 38, -39, 40, -41, 42, -43, 44,
+      -45, 46, -47, 48, -49, 50, -51, 52, -53, 54, -55, 56, -57, 58, -59,
+      60, -61, 62, -63, 64, -65, 66, -67, 68, -69, 70, -71, 72, -73, 74,
+      -75, 76, -77, 78, -79, 80, -81, 82, -83, 84, -85, 86, -87, 88, -89,
+      90, -91, 92, -93, 94, -95, 96, -97, 98, -99, 100, -101, 102, -103,
+      104, -105, 106, -107, 108, -109, 110, -111, 112, -113, 114, -115,
+      116, -117, 118, -119, 120, -121, 122, -123, 124, -125, 126, -127,
+      0,
+    });
+
+    assertEquals("JavaTestHelper(req_int:0, req_obj:, req_bin:"+
+        "00 FF 02 FD 04 FB 06 F9 08 F7 0A F5 0C F3 0E F1 10 EF 12 ED 14 "+
+        "EB 16 E9 18 E7 1A E5 1C E3 1E E1 20 DF 22 DD 24 DB 26 D9 28 D7 "+
+        "2A D5 2C D3 2E D1 30 CF 32 CD 34 CB 36 C9 38 C7 3A C5 3C C3 3E "+
+        "C1 40 BF 42 BD 44 BB 46 B9 48 B7 4A B5 4C B3 4E B1 50 AF 52 AD "+
+        "54 AB 56 A9 58 A7 5A A5 5C A3 5E A1 60 9F 62 9D 64 9B 66 99 68 "+
+        "97 6A 95 6C 93 6E 91 70 8F 72 8D 74 8B 76 89 78 87 7A 85 7C 83 "+
+        "7E 81...)",
+        object.toString());
+
+    object.req_bin = ByteBuffer.wrap(new byte[] {});
+    object.setOpt_binIsSet(true);
+
+    assertEquals("JavaTestHelper(req_int:0, req_obj:, req_bin:)", 
+        object.toString());
+  }
 }

Modified: incubator/thrift/trunk/lib/java/test/org/apache/thrift/TestTDeserializer.java
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/test/org/apache/thrift/TestTDeserializer.java?rev=982839&r1=982838&r2=982839&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/test/org/apache/thrift/TestTDeserializer.java (original)
+++ incubator/thrift/trunk/lib/java/test/org/apache/thrift/TestTDeserializer.java Fri Aug  6 00:18:25 2010
@@ -18,7 +18,7 @@
  */
 package org.apache.thrift;
 
-import java.util.Arrays;
+import java.nio.ByteBuffer;
 
 import junit.framework.TestCase;
 
@@ -97,10 +97,10 @@ public class TestTDeserializer extends T
       String resultString = deserializer.partialDeserializeString(serialize(level1SWU, factory), StructWithAUnion._Fields.TEST_UNION, TestUnion._Fields.STRUCT_FIELD, OneOfEach._Fields.SOME_CHARACTERS);
       assertEquals(expectedString, resultString);
 
-      byte[] expectedBinary = level3OneOfEach.getBase64();
-      byte[] resultBinary = deserializer.partialDeserializeByteArray(serialize(level1SWU, factory), StructWithAUnion._Fields.TEST_UNION, TestUnion._Fields.STRUCT_FIELD, OneOfEach._Fields.BASE64);
-      assertEquals(expectedBinary.length, resultBinary.length);
-      assertTrue(Arrays.equals(expectedBinary, resultBinary));
+      byte[] expectedBinary = level3OneOfEach.getBase64().array();
+      ByteBuffer resultBinary = deserializer.partialDeserializeByteArray(serialize(level1SWU, factory), StructWithAUnion._Fields.TEST_UNION, TestUnion._Fields.STRUCT_FIELD, OneOfEach._Fields.BASE64);
+      assertEquals(expectedBinary.length, resultBinary.limit() - resultBinary.position() - resultBinary.arrayOffset());
+      assertEquals(ByteBuffer.wrap(expectedBinary), resultBinary);
 
       // Test field id in Union
       short id = deserializer.partialDeserializeSetFieldIdInUnion(serialize(level1SWU, factory), StructWithAUnion._Fields.TEST_UNION);

Modified: incubator/thrift/trunk/lib/java/test/org/apache/thrift/TestTUnion.java
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/test/org/apache/thrift/TestTUnion.java?rev=982839&r1=982838&r2=982839&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/test/org/apache/thrift/TestTUnion.java (original)
+++ incubator/thrift/trunk/lib/java/test/org/apache/thrift/TestTUnion.java Fri Aug  6 00:18:25 2010
@@ -18,6 +18,15 @@
  */
 package org.apache.thrift;
 
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
 import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.protocol.TProtocol;
 import org.apache.thrift.transport.TMemoryBuffer;
@@ -29,12 +38,6 @@ import thrift.test.SomeEnum;
 import thrift.test.StructWithAUnion;
 import thrift.test.TestUnion;
 import thrift.test.TestUnionMinusStringField;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import junit.framework.TestCase;
 
 public class TestTUnion extends TestCase {
 
@@ -95,12 +98,12 @@ public class TestTUnion extends TestCase
     assertTrue(cu.compareTo(cu2) < 0);
     assertTrue(cu2.compareTo(cu) > 0);
 
-    cu2 = ComparableUnion.binary_field(new byte[]{2});
+    cu2 = ComparableUnion.binary_field(ByteBuffer.wrap(new byte[]{2}));
 
     assertTrue(cu.compareTo(cu2) < 0);
     assertTrue(cu2.compareTo(cu) > 0);
 
-    cu = ComparableUnion.binary_field(new byte[]{1});
+    cu = ComparableUnion.binary_field(ByteBuffer.wrap(new byte[]{1}));
 
     assertTrue(cu.compareTo(cu2) < 0);
     assertTrue(cu2.compareTo(cu) > 0);

Modified: incubator/thrift/trunk/lib/java/test/org/apache/thrift/protocol/ProtocolTestBase.java
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/test/org/apache/thrift/protocol/ProtocolTestBase.java?rev=982839&r1=982838&r2=982839&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/test/org/apache/thrift/protocol/ProtocolTestBase.java (original)
+++ incubator/thrift/trunk/lib/java/test/org/apache/thrift/protocol/ProtocolTestBase.java Fri Aug  6 00:18:25 2010
@@ -18,6 +18,7 @@
  */
 package org.apache.thrift.protocol;
 
+import java.nio.ByteBuffer;
 import java.util.Arrays;
 import java.util.List;
 
@@ -231,18 +232,18 @@ public abstract class ProtocolTestBase e
   private void internalTestNakedBinary(byte[] data) throws Exception {
     TMemoryBuffer buf = new TMemoryBuffer(0);
     TProtocol proto = getFactory().getProtocol(buf);
-    proto.writeBinary(data);
-    assertTrue(Arrays.equals(data, proto.readBinary()));
+    proto.writeBinary(ByteBuffer.wrap(data));
+    assertEquals(ByteBuffer.wrap(data), proto.readBinary());
   }
 
   private void internalTestBinaryField(final byte[] data) throws Exception {
     internalTestStructField(new StructFieldTestCase(TType.STRING, (short)15) {
       public void writeMethod(TProtocol proto) throws TException {
-        proto.writeBinary(data);
+        proto.writeBinary(ByteBuffer.wrap(data));
       }
 
       public void readMethod(TProtocol proto) throws TException {
-        assertTrue(Arrays.equals(data, proto.readBinary()));
+        assertEquals(ByteBuffer.wrap(data), proto.readBinary());
       }
     });
   }

Modified: incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/EqualityTest.java
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/EqualityTest.java?rev=982839&r1=982838&r2=982839&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/EqualityTest.java (original)
+++ incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/EqualityTest.java Fri Aug  6 00:18:25 2010
@@ -129,7 +129,9 @@ public class EqualityTest {
 package org.apache.thrift.test;
 
 // Generated code
-import thrift.test.*;
+import java.nio.ByteBuffer;
+
+import thrift.test.JavaTestHelper;
 
 /**
  */
@@ -486,8 +488,8 @@ public class EqualityTest {
 
     lhs = new JavaTestHelper();
     rhs = new JavaTestHelper();
-    lhs.req_bin = new byte[]{1,2};
-    rhs.req_bin = new byte[]{1,2};
+    lhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
+    rhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
     lhs.req_bin = null;
     rhs.req_bin = null;
     // this_present = False
@@ -499,8 +501,8 @@ public class EqualityTest {
 
     lhs = new JavaTestHelper();
     rhs = new JavaTestHelper();
-    lhs.req_bin = new byte[]{1,2};
-    rhs.req_bin = new byte[]{3,4};
+    lhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
+    rhs.req_bin = ByteBuffer.wrap(new byte[]{3,4});
     lhs.req_bin = null;
     rhs.req_bin = null;
     // this_present = False
@@ -512,8 +514,8 @@ public class EqualityTest {
 
     lhs = new JavaTestHelper();
     rhs = new JavaTestHelper();
-    lhs.req_bin = new byte[]{1,2};
-    rhs.req_bin = new byte[]{1,2};
+    lhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
+    rhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
     lhs.req_bin = null;
     // this_present = False
     // that_present = True
@@ -522,8 +524,8 @@ public class EqualityTest {
 
     lhs = new JavaTestHelper();
     rhs = new JavaTestHelper();
-    lhs.req_bin = new byte[]{1,2};
-    rhs.req_bin = new byte[]{3,4};
+    lhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
+    rhs.req_bin = ByteBuffer.wrap(new byte[]{3,4});
     lhs.req_bin = null;
     // this_present = False
     // that_present = True
@@ -532,8 +534,8 @@ public class EqualityTest {
 
     lhs = new JavaTestHelper();
     rhs = new JavaTestHelper();
-    lhs.req_bin = new byte[]{1,2};
-    rhs.req_bin = new byte[]{1,2};
+    lhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
+    rhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
     rhs.req_bin = null;
     // this_present = True
     // that_present = False
@@ -542,8 +544,8 @@ public class EqualityTest {
 
     lhs = new JavaTestHelper();
     rhs = new JavaTestHelper();
-    lhs.req_bin = new byte[]{1,2};
-    rhs.req_bin = new byte[]{3,4};
+    lhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
+    rhs.req_bin = ByteBuffer.wrap(new byte[]{3,4});
     rhs.req_bin = null;
     // this_present = True
     // that_present = False
@@ -552,8 +554,8 @@ public class EqualityTest {
 
     lhs = new JavaTestHelper();
     rhs = new JavaTestHelper();
-    lhs.req_bin = new byte[]{1,2};
-    rhs.req_bin = new byte[]{1,2};
+    lhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
+    rhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
     // this_present = True
     // that_present = True
     if (lhs.equals(rhs) != true)
@@ -563,8 +565,8 @@ public class EqualityTest {
 
     lhs = new JavaTestHelper();
     rhs = new JavaTestHelper();
-    lhs.req_bin = new byte[]{1,2};
-    rhs.req_bin = new byte[]{3,4};
+    lhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
+    rhs.req_bin = ByteBuffer.wrap(new byte[]{3,4});
     // this_present = True
     // that_present = True
     if (lhs.equals(rhs) != false)
@@ -572,8 +574,8 @@ public class EqualityTest {
 
     lhs = new JavaTestHelper();
     rhs = new JavaTestHelper();
-    lhs.opt_bin = new byte[]{1,2};
-    rhs.opt_bin = new byte[]{1,2};
+    lhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
+    rhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
     lhs.opt_bin = null;
     rhs.opt_bin = null;
     // this_present = False
@@ -585,8 +587,8 @@ public class EqualityTest {
 
     lhs = new JavaTestHelper();
     rhs = new JavaTestHelper();
-    lhs.opt_bin = new byte[]{1,2};
-    rhs.opt_bin = new byte[]{3,4};
+    lhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
+    rhs.opt_bin = ByteBuffer.wrap(new byte[]{3,4});
     lhs.opt_bin = null;
     rhs.opt_bin = null;
     // this_present = False
@@ -598,8 +600,8 @@ public class EqualityTest {
 
     lhs = new JavaTestHelper();
     rhs = new JavaTestHelper();
-    lhs.opt_bin = new byte[]{1,2};
-    rhs.opt_bin = new byte[]{1,2};
+    lhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
+    rhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
     lhs.opt_bin = null;
     // this_present = False
     // that_present = True
@@ -608,8 +610,8 @@ public class EqualityTest {
 
     lhs = new JavaTestHelper();
     rhs = new JavaTestHelper();
-    lhs.opt_bin = new byte[]{1,2};
-    rhs.opt_bin = new byte[]{3,4};
+    lhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
+    rhs.opt_bin = ByteBuffer.wrap(new byte[]{3,4});
     lhs.opt_bin = null;
     // this_present = False
     // that_present = True
@@ -618,8 +620,8 @@ public class EqualityTest {
 
     lhs = new JavaTestHelper();
     rhs = new JavaTestHelper();
-    lhs.opt_bin = new byte[]{1,2};
-    rhs.opt_bin = new byte[]{1,2};
+    lhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
+    rhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
     rhs.opt_bin = null;
     // this_present = True
     // that_present = False
@@ -628,8 +630,8 @@ public class EqualityTest {
 
     lhs = new JavaTestHelper();
     rhs = new JavaTestHelper();
-    lhs.opt_bin = new byte[]{1,2};
-    rhs.opt_bin = new byte[]{3,4};
+    lhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
+    rhs.opt_bin = ByteBuffer.wrap(new byte[]{3,4});
     rhs.opt_bin = null;
     // this_present = True
     // that_present = False
@@ -638,8 +640,8 @@ public class EqualityTest {
 
     lhs = new JavaTestHelper();
     rhs = new JavaTestHelper();
-    lhs.opt_bin = new byte[]{1,2};
-    rhs.opt_bin = new byte[]{1,2};
+    lhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
+    rhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
     // this_present = True
     // that_present = True
     if (lhs.equals(rhs) != true)
@@ -649,8 +651,8 @@ public class EqualityTest {
 
     lhs = new JavaTestHelper();
     rhs = new JavaTestHelper();
-    lhs.opt_bin = new byte[]{1,2};
-    rhs.opt_bin = new byte[]{3,4};
+    lhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
+    rhs.opt_bin = ByteBuffer.wrap(new byte[]{3,4});
     // this_present = True
     // that_present = True
     if (lhs.equals(rhs) != false)

Modified: incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/JavaBeansTest.java
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/JavaBeansTest.java?rev=982839&r1=982838&r2=982839&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/JavaBeansTest.java (original)
+++ incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/JavaBeansTest.java Fri Aug  6 00:18:25 2010
@@ -19,7 +19,9 @@
 
 package org.apache.thrift.test;
 
+import java.nio.ByteBuffer;
 import java.util.LinkedList;
+
 import thrift.test.OneOfEachBeans;
 
 public class JavaBeansTest {
@@ -58,7 +60,7 @@ public class JavaBeansTest {
 
     // Everything is set
     ooe.set_a_bite((byte) 1);
-    ooe.set_base64("bytes".getBytes());
+    ooe.set_base64(ByteBuffer.wrap("bytes".getBytes()));
     ooe.set_byte_list(new LinkedList<Byte>());
     ooe.set_double_precision(1);
     ooe.set_i16_list(new LinkedList<Short>());

Modified: incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/ToStringTest.java
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/ToStringTest.java?rev=982839&r1=982838&r2=982839&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/ToStringTest.java (original)
+++ incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/ToStringTest.java Fri Aug  6 00:18:25 2010
@@ -1,92 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.thrift.test;
-
-import thrift.test.*;
-
-/**
- */
-public class ToStringTest {
-  public static void main(String[] args) throws Exception {
-    JavaTestHelper object = new JavaTestHelper();
-    object.req_int = 0;
-    object.req_obj = "";
-
-
-    object.req_bin = new byte[] {
-      0, -1, 2, -3, 4, -5, 6, -7, 8, -9, 10, -11, 12, -13, 14, -15,
-      16, -17, 18, -19, 20, -21, 22, -23, 24, -25, 26, -27, 28, -29,
-      30, -31, 32, -33, 34, -35, 36, -37, 38, -39, 40, -41, 42, -43, 44,
-      -45, 46, -47, 48, -49, 50, -51, 52, -53, 54, -55, 56, -57, 58, -59,
-      60, -61, 62, -63, 64, -65, 66, -67, 68, -69, 70, -71, 72, -73, 74,
-      -75, 76, -77, 78, -79, 80, -81, 82, -83, 84, -85, 86, -87, 88, -89,
-      90, -91, 92, -93, 94, -95, 96, -97, 98, -99, 100, -101, 102, -103,
-      104, -105, 106, -107, 108, -109, 110, -111, 112, -113, 114, -115,
-      116, -117, 118, -119, 120, -121, 122, -123, 124, -125, 126, -127,
-    };
-
-    if (!object.toString().equals(
-        "JavaTestHelper(req_int:0, req_obj:, req_bin:"+
-        "00 FF 02 FD 04 FB 06 F9 08 F7 0A F5 0C F3 0E F1 10 EF 12 ED 14 "+
-        "EB 16 E9 18 E7 1A E5 1C E3 1E E1 20 DF 22 DD 24 DB 26 D9 28 D7 "+
-        "2A D5 2C D3 2E D1 30 CF 32 CD 34 CB 36 C9 38 C7 3A C5 3C C3 3E "+
-        "C1 40 BF 42 BD 44 BB 46 B9 48 B7 4A B5 4C B3 4E B1 50 AF 52 AD "+
-        "54 AB 56 A9 58 A7 5A A5 5C A3 5E A1 60 9F 62 9D 64 9B 66 99 68 "+
-        "97 6A 95 6C 93 6E 91 70 8F 72 8D 74 8B 76 89 78 87 7A 85 7C 83 "+
-        "7E 81)")) {
-      throw new RuntimeException();
-    }
- 
-    object.req_bin = new byte[] {
-      0, -1, 2, -3, 4, -5, 6, -7, 8, -9, 10, -11, 12, -13, 14, -15,
-      16, -17, 18, -19, 20, -21, 22, -23, 24, -25, 26, -27, 28, -29,
-      30, -31, 32, -33, 34, -35, 36, -37, 38, -39, 40, -41, 42, -43, 44,
-      -45, 46, -47, 48, -49, 50, -51, 52, -53, 54, -55, 56, -57, 58, -59,
-      60, -61, 62, -63, 64, -65, 66, -67, 68, -69, 70, -71, 72, -73, 74,
-      -75, 76, -77, 78, -79, 80, -81, 82, -83, 84, -85, 86, -87, 88, -89,
-      90, -91, 92, -93, 94, -95, 96, -97, 98, -99, 100, -101, 102, -103,
-      104, -105, 106, -107, 108, -109, 110, -111, 112, -113, 114, -115,
-      116, -117, 118, -119, 120, -121, 122, -123, 124, -125, 126, -127,
-      0,
-    };
-
-    if (!object.toString().equals(
-        "JavaTestHelper(req_int:0, req_obj:, req_bin:"+
-        "00 FF 02 FD 04 FB 06 F9 08 F7 0A F5 0C F3 0E F1 10 EF 12 ED 14 "+
-        "EB 16 E9 18 E7 1A E5 1C E3 1E E1 20 DF 22 DD 24 DB 26 D9 28 D7 "+
-        "2A D5 2C D3 2E D1 30 CF 32 CD 34 CB 36 C9 38 C7 3A C5 3C C3 3E "+
-        "C1 40 BF 42 BD 44 BB 46 B9 48 B7 4A B5 4C B3 4E B1 50 AF 52 AD "+
-        "54 AB 56 A9 58 A7 5A A5 5C A3 5E A1 60 9F 62 9D 64 9B 66 99 68 "+
-        "97 6A 95 6C 93 6E 91 70 8F 72 8D 74 8B 76 89 78 87 7A 85 7C 83 "+
-        "7E 81 ...)")) {
-      throw new RuntimeException();
-    } 
-
-    object.req_bin = new byte[] {};
-    object.setOpt_binIsSet(true);
-
-
-    if (!object.toString().equals(
-        "JavaTestHelper(req_int:0, req_obj:, req_bin:)")) {
-      throw new RuntimeException();
-    } 
-  }
-}
-