Skip to content

Commit c532068

Browse files
fix(generator): fall back to java.lang.Object for unknown types. (googleapis#31517)
* fix(generator): fall back to java.lang.Object for unknown types. * test(generator): assert safe fallback mapping for Any formatted structures * fix(generator): prevent String from being converted to java.lang.String * Revert "fix(generator): prevent String from being converted to java.lang.String" This reverts commit 1aea3e3. * fix(generator): special-case string type in fallback logic to restore legacy behavior
1 parent 529152f commit c532068

2 files changed

Lines changed: 12 additions & 6 deletions

File tree

generator/src/googleapis/codegen/java_generator.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -261,12 +261,11 @@ def _GetTypeInfo(self, def_dict):
261261
if result:
262262
return result
263263

264-
# TODO(user): Uncomment this and update golden files.
265-
# result = self.type_map.get((json_type, None))
266-
# if result:
267-
# return result
268-
#
269-
# raise ValueError('Unknown type: %s format: %s' % (json_type, json_format))
264+
# Fallback to the unformatted base type if exact format mapping is not found.
265+
result = self.type_map.get((json_type, None))
266+
if result and json_type != 'string':
267+
return result
268+
270269

271270
return (utilities.CamelCase(json_type), None, None)
272271

generator/tests/java_generator_test.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,14 @@ def testGetCodeTypeFromDictionary(self):
8484
['java.lang.Integer', {'type': 'integer', 'format': 'int32'}],
8585
['java.lang.Long', {'type': 'string', 'format': 'int64'}],
8686
['java.lang.Object', {'type': 'any'}],
87+
['java.lang.Object', {'type': 'any', 'format': 'google.protobuf.Value'}],
8788
['java.lang.Boolean', {'type': 'boolean'}],
8889
['java.lang.String', {'type': 'string'}],
8990
['java.lang.Long', {'type': 'integer', 'format': 'uint32'}],
9091
['java.math.BigInteger', {'type': 'string', 'format': 'uint64'}],
92+
['java.lang.Object', {'type': 'any', 'format': 'unknown'}],
93+
['String', {'type': 'string', 'format': 'unknown'}],
94+
9195
]
9296
for test_case in test_cases:
9397
self.assertEqual(
@@ -110,6 +114,9 @@ def testGetPrimitiveTypeFromDictionary(self):
110114
[None, {'type': 'string', 'format': 'date-time'}],
111115
[None, {'type': 'string', 'format': 'uint64'}],
112116
[None, {'type': 'anything_else', 'format': 'uint64'}],
117+
[None, {'type': 'any', 'format': 'unknown'}],
118+
[None, {'type': 'string', 'format': 'unknown'}],
119+
113120
]
114121

115122
for test_case in test_cases:

0 commit comments

Comments
 (0)