Index: mojo/public/tools/bindings/generators/mojom_java_generator.py |
diff --git a/mojo/public/tools/bindings/generators/mojom_java_generator.py b/mojo/public/tools/bindings/generators/mojom_java_generator.py |
index 2320dbaf983cb7431fa54599e638a65b6e8f5162..554db742aa085fca26985b6b01b841c7a5bb76c2 100644 |
--- a/mojo/public/tools/bindings/generators/mojom_java_generator.py |
+++ b/mojo/public/tools/bindings/generators/mojom_java_generator.py |
@@ -346,7 +346,13 @@ def IsPointerArrayKind(kind): |
if not mojom.IsArrayKind(kind): |
return False |
sub_kind = kind.kind |
- return mojom.IsObjectKind(sub_kind) |
+ return mojom.IsObjectKind(sub_kind) and not mojom.IsUnionKind(sub_kind) |
+ |
+def IsUnionArrayKind(kind): |
+ if not mojom.IsArrayKind(kind): |
+ return False |
+ sub_kind = kind.kind |
+ return mojom.IsUnionKind(sub_kind) |
def GetConstantsMainEntityName(module): |
if module.attributes and 'JavaConstantsClassName' in module.attributes: |
@@ -408,12 +414,14 @@ class Generator(generator.Generator): |
'is_pointer_array_kind': IsPointerArrayKind, |
'is_reference_kind': mojom.IsReferenceKind, |
'is_struct_kind': mojom.IsStructKind, |
+ 'is_union_array_kind': IsUnionArrayKind, |
'is_union_kind': mojom.IsUnionKind, |
'java_true_false': GetJavaTrueFalse, |
'java_type': GetJavaType, |
'method_ordinal_name': GetMethodOrdinalName, |
'name': GetNameForElement, |
'new_array': NewArray, |
+ 'ucc': lambda x: UpperCamelCase(x.name), |
} |
def GetJinjaExports(self): |
@@ -438,6 +446,12 @@ class Generator(generator.Generator): |
exports.update({'struct': struct}) |
return exports |
+ @UseJinja('java_templates/union.java.tmpl', filters=java_filters) |
+ def GenerateUnionSource(self, union): |
+ exports = self.GetJinjaExports() |
+ exports.update({'union': union}) |
+ return exports |
+ |
@UseJinja('java_templates/interface.java.tmpl', filters=java_filters) |
def GenerateInterfaceSource(self, interface): |
return self.GetJinjaExportsForInterface(interface) |
@@ -462,6 +476,10 @@ class Generator(generator.Generator): |
self.Write(self.GenerateStructSource(struct), |
'%s.java' % GetNameForElement(struct)) |
+ for union in self.module.unions: |
+ self.Write(self.GenerateUnionSource(union), |
+ '%s.java' % GetNameForElement(union)) |
+ |
for enum in self.module.enums: |
self.Write(self.GenerateEnumSource(enum), |
'%s.java' % GetNameForElement(enum)) |