(self, data_type, stone_value)
| 1079 | return self.java_value(field.data_type, field.default) |
| 1080 | |
| 1081 | def java_value(self, data_type, stone_value): |
| 1082 | assert isinstance(data_type, DataType), repr(data_type) |
| 1083 | |
| 1084 | j = self._j |
| 1085 | |
| 1086 | if data_type.name == 'Boolean': |
| 1087 | return 'true' if stone_value else 'false' |
| 1088 | elif data_type.name == 'String': |
| 1089 | return self.fmt('"%s"', stone_value.replace('\\', '\\\\').replace('"', '\\"')) |
| 1090 | elif data_type.name == 'Float32': |
| 1091 | return repr(stone_value) + 'f' # append a f at the end for float value |
| 1092 | elif data_type.name == 'Float64': |
| 1093 | return repr(stone_value) # Because str() drops the last few digits. |
| 1094 | elif data_type.name in ('Int64', 'UInt64', 'UInt32'): |
| 1095 | return str(stone_value) + 'L' # Need exact type match for boxed values. |
| 1096 | elif is_union_type(data_type): |
| 1097 | assert isinstance(stone_value, TagRef), (data_type, stone_value) |
| 1098 | assert data_type == stone_value.union_data_type, (data_type, stone_value) |
| 1099 | |
| 1100 | for field in data_type.all_fields: |
| 1101 | if field.name == stone_value.tag_name: |
| 1102 | if j.field_static_instance(field): |
| 1103 | value = self.fmt('%s.%s', j.java_class(data_type), j.field_static_instance(field)) |
| 1104 | else: |
| 1105 | assert j.field_factory_method(field) |
| 1106 | value = self.fmt('%s.%s()', j.java_class(data_type), j.field_factory_method(field)) |
| 1107 | return value |
| 1108 | else: |
| 1109 | assert False, "Could not find tag '{}' in '{}'".format(stone_value.tag_name, data_type) |
| 1110 | else: |
| 1111 | return str(stone_value) |
| 1112 | |
| 1113 | def java_serializer(self, data_type): |
| 1114 | assert isinstance(data_type, DataType), repr(data_type) |
no test coverage detected