forked from dreiss/old-thrift
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
THRIFT-222. java: Better exposure if __isset in beans style
- Generate an isSet method for each field to test its set-ness. - Generate a generic isSet method that checks by field id. git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@731722 13f79535-47bb-0310-9956-ffa450edef68
- Loading branch information
dreiss
committed
Jan 5, 2009
1 parent
a33d69d
commit 9201380
Showing
4 changed files
with
148 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,15 @@ | |||
namespace java thrift.test | |||
|
|||
struct OneOfEachBeans { | |||
1: bool boolean_field, | |||
2: byte a_bite, | |||
3: i16 integer16, | |||
4: i32 integer32, | |||
5: i64 integer64, | |||
6: double double_precision, | |||
7: string some_characters, | |||
8: binary base64, | |||
9: list<byte> byte_list, | |||
10: list<i16> i16_list, | |||
11: list<i64> i64_list | |||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,91 @@ | |||
package com.facebook.thrift.test; | |||
|
|||
import java.util.LinkedList; | |||
import thrift.test.OneOfEachBeans; | |||
|
|||
public class JavaBeansTest { | |||
public static void main(String[] args) throws Exception { | |||
// Test isSet methods | |||
OneOfEachBeans ooe = new OneOfEachBeans(); | |||
|
|||
// Nothing should be set | |||
if (ooe.is_set_a_bite()) | |||
throw new RuntimeException("isSet method error: unset field returned as set!"); | |||
if (ooe.is_set_base64()) | |||
throw new RuntimeException("isSet method error: unset field returned as set!"); | |||
if (ooe.is_set_byte_list()) | |||
throw new RuntimeException("isSet method error: unset field returned as set!"); | |||
if (ooe.is_set_double_precision()) | |||
throw new RuntimeException("isSet method error: unset field returned as set!"); | |||
if (ooe.is_set_i16_list()) | |||
throw new RuntimeException("isSet method error: unset field returned as set!"); | |||
if (ooe.is_set_i64_list()) | |||
throw new RuntimeException("isSet method error: unset field returned as set!"); | |||
if (ooe.is_set_boolean_field()) | |||
throw new RuntimeException("isSet method error: unset field returned as set!"); | |||
if (ooe.is_set_integer16()) | |||
throw new RuntimeException("isSet method error: unset field returned as set!"); | |||
if (ooe.is_set_integer32()) | |||
throw new RuntimeException("isSet method error: unset field returned as set!"); | |||
if (ooe.is_set_integer64()) | |||
throw new RuntimeException("isSet method error: unset field returned as set!"); | |||
if (ooe.is_set_some_characters()) | |||
throw new RuntimeException("isSet method error: unset field returned as set!"); | |||
|
|||
for (int i = 1; i < 12; i++){ | |||
if (ooe.isSet(i)) | |||
throw new RuntimeException("isSet method error: unset field " + i + " returned as set!"); | |||
} | |||
|
|||
// Everything is set | |||
ooe.set_a_bite((byte) 1); | |||
ooe.set_base64("bytes".getBytes()); | |||
ooe.set_byte_list(new LinkedList()); | |||
ooe.set_double_precision(1); | |||
ooe.set_i16_list(new LinkedList()); | |||
ooe.set_i64_list(new LinkedList()); | |||
ooe.set_boolean_field(true); | |||
ooe.set_integer16((short) 1); | |||
ooe.set_integer32(1); | |||
ooe.set_integer64(1); | |||
ooe.set_some_characters("string"); | |||
|
|||
if (!ooe.is_set_a_bite()) | |||
throw new RuntimeException("isSet method error: set field returned as unset!"); | |||
if (!ooe.is_set_base64()) | |||
throw new RuntimeException("isSet method error: set field returned as unset!"); | |||
if (!ooe.is_set_byte_list()) | |||
throw new RuntimeException("isSet method error: set field returned as unset!"); | |||
if (!ooe.is_set_double_precision()) | |||
throw new RuntimeException("isSet method error: set field returned as unset!"); | |||
if (!ooe.is_set_i16_list()) | |||
throw new RuntimeException("isSet method error: set field returned as unset!"); | |||
if (!ooe.is_set_i64_list()) | |||
throw new RuntimeException("isSet method error: set field returned as unset!"); | |||
if (!ooe.is_set_boolean_field()) | |||
throw new RuntimeException("isSet method error: set field returned as unset!"); | |||
if (!ooe.is_set_integer16()) | |||
throw new RuntimeException("isSet method error: set field returned as unset!"); | |||
if (!ooe.is_set_integer32()) | |||
throw new RuntimeException("isSet method error: set field returned as unset!"); | |||
if (!ooe.is_set_integer64()) | |||
throw new RuntimeException("isSet method error: set field returned as unset!"); | |||
if (!ooe.is_set_some_characters()) | |||
throw new RuntimeException("isSet method error: set field returned as unset!"); | |||
|
|||
for (int i = 1; i < 12; i++){ | |||
if (!ooe.isSet(i)) | |||
throw new RuntimeException("isSet method error: set field " + i + " returned as unset!"); | |||
} | |||
|
|||
// Should throw exception when field doesn't exist | |||
boolean exceptionThrown = false; | |||
try{ | |||
if (ooe.isSet(100)); | |||
} catch (IllegalArgumentException e){ | |||
exceptionThrown = true; | |||
} | |||
if (!exceptionThrown) | |||
throw new RuntimeException("isSet method error: non-existent field provided as agument but no exception thrown!"); | |||
} | |||
} |