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();
}