diff --git a/generator/src/googleapis/codegen/java_generator.py b/generator/src/googleapis/codegen/java_generator.py index 609f1782a20..5f0fd946569 100755 --- a/generator/src/googleapis/codegen/java_generator.py +++ b/generator/src/googleapis/codegen/java_generator.py @@ -261,12 +261,11 @@ def _GetTypeInfo(self, def_dict): if result: return result - # TODO(user): Uncomment this and update golden files. - # result = self.type_map.get((json_type, None)) - # if result: - # return result - # - # raise ValueError('Unknown type: %s format: %s' % (json_type, json_format)) + # Fallback to the unformatted base type if exact format mapping is not found. + result = self.type_map.get((json_type, None)) + if result and json_type != 'string': + return result + return (utilities.CamelCase(json_type), None, None) diff --git a/generator/tests/java_generator_test.py b/generator/tests/java_generator_test.py index 99cd443690f..9eb360dbcca 100755 --- a/generator/tests/java_generator_test.py +++ b/generator/tests/java_generator_test.py @@ -84,10 +84,14 @@ def testGetCodeTypeFromDictionary(self): ['java.lang.Integer', {'type': 'integer', 'format': 'int32'}], ['java.lang.Long', {'type': 'string', 'format': 'int64'}], ['java.lang.Object', {'type': 'any'}], + ['java.lang.Object', {'type': 'any', 'format': 'google.protobuf.Value'}], ['java.lang.Boolean', {'type': 'boolean'}], ['java.lang.String', {'type': 'string'}], ['java.lang.Long', {'type': 'integer', 'format': 'uint32'}], ['java.math.BigInteger', {'type': 'string', 'format': 'uint64'}], + ['java.lang.Object', {'type': 'any', 'format': 'unknown'}], + ['String', {'type': 'string', 'format': 'unknown'}], + ] for test_case in test_cases: self.assertEqual( @@ -110,6 +114,9 @@ def testGetPrimitiveTypeFromDictionary(self): [None, {'type': 'string', 'format': 'date-time'}], [None, {'type': 'string', 'format': 'uint64'}], [None, {'type': 'anything_else', 'format': 'uint64'}], + [None, {'type': 'any', 'format': 'unknown'}], + [None, {'type': 'string', 'format': 'unknown'}], + ] for test_case in test_cases: