if (fieldId != setField_) {
throw new IllegalArgumentException("Cannot get the value of field " + fieldId + " because union's set field is " + setField_);
}
-
+
return getFieldValue();
}
public boolean isSet() {
return setField_ != null;
}
-
+
public boolean isSet(F fieldId) {
return setField_ == fieldId;
}
@Override
public String toString() {
- String result = "<" + this.getClass().getSimpleName() + " ";
+ StringBuilder sb = new StringBuilder();
+ sb.append("<");
+ sb.append(this.getClass().getSimpleName());
+ sb.append(" ");
if (getSetField() != null) {
Object v = getFieldValue();
- String vStr = null;
- if (v instanceof byte[]) {
- vStr = bytesToStr((byte[])v);
+ sb.append(getFieldDesc(getSetField()).name);
+ sb.append(":");
+ if(v instanceof ByteBuffer) {
+ TBaseHelper.toString((ByteBuffer)v, sb);
} else {
- vStr = v.toString();
- }
- result += getFieldDesc(getSetField()).name + ":" + vStr;
- }
-
- return result + ">";
- }
-
- private static String bytesToStr(byte[] bytes) {
- StringBuilder sb = new StringBuilder();
- int size = Math.min(bytes.length, 128);
- for (int i = 0; i < size; i++) {
- if (i != 0) {
- sb.append(" ");
+ sb.append(v.toString());
}
- String digit = Integer.toHexString(bytes[i] & 0xFF);
- sb.append(digit.length() > 1 ? digit : "0" + digit);
- }
- if (bytes.length > 128) {
- sb.append(" ...");
}
+ sb.append(">");
return sb.toString();
}
assertEquals(cu, copy);
assertNotSame(cu.bufferForBinary_field().array(), copy.bufferForBinary_field().array());
}
+
+ public void testToString() throws Exception {
+ byte[] bytes = {1, 2, 3};
+ ByteBuffer value = ByteBuffer.wrap(bytes);
+ ComparableUnion cu = ComparableUnion.binary_field(value);
+ String expectedString = "<ComparableUnion binary_field:01 02 03>";
+ assertEquals(expectedString, cu.toString());
+ }
}