Author: bryanduxbury
Date: Fri Feb 12 22:49:40 2010
New Revision: 909645

URL: http://svn.apache.org/viewvc?rev=909645&view=rev
Log:
THRIFT-702. TUnion's toString method throws NPE if the union is unset

Modified:
    incubator/thrift/trunk/lib/java/src/org/apache/thrift/TUnion.java
    incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/UnionTest.java

Modified: incubator/thrift/trunk/lib/java/src/org/apache/thrift/TUnion.java
URL: 
http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/src/org/apache/thrift/TUnion.java?rev=909645&r1=909644&r2=909645&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/src/org/apache/thrift/TUnion.java (original)
+++ incubator/thrift/trunk/lib/java/src/org/apache/thrift/TUnion.java Fri Feb 
12 22:49:40 2010
@@ -195,14 +195,20 @@
 
   @Override
   public String toString() {
-    Object v = getFieldValue();
-    String vStr = null;
-    if (v instanceof byte[]) {
-      vStr = bytesToStr((byte[])v);
-    } else {
-      vStr = v.toString();
+    String result = "<" + this.getClass().getSimpleName() + " ";
+
+    if (getSetField() != null) {
+      Object v = getFieldValue();
+      String vStr = null;
+      if (v instanceof byte[]) {
+        vStr = bytesToStr((byte[])v);
+      } else {
+        vStr = v.toString();
+      }
+      result += getFieldDesc(getSetField()).name + ":" + vStr;
     }
-    return "<" + this.getClass().getSimpleName() + " " + 
getFieldDesc(getSetField()).name + ":" + vStr + ">";
+
+    return result + ">";
   }
 
   private static String bytesToStr(byte[] bytes) {

Modified: 
incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/UnionTest.java
URL: 
http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/UnionTest.java?rev=909645&r1=909644&r2=909645&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/UnionTest.java 
(original)
+++ incubator/thrift/trunk/lib/java/test/org/apache/thrift/test/UnionTest.java 
Fri Feb 12 22:49:40 2010
@@ -95,6 +95,10 @@
 
     union = TestUnion.enum_field(SomeEnum.ONE);
     union.hashCode();
+
+    union = new TestUnion();
+    // should not throw an exception
+    union.toString();
   }
 
 


Reply via email to