Chromium Code Reviews| 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 7d9110f0d5a4a818f40f1dd13545dad1c9e5c95f..384841cd297e6bbcc35f1bbfa8c91d73a3d94733 100644 |
| --- a/mojo/public/tools/bindings/generators/mojom_java_generator.py |
| +++ b/mojo/public/tools/bindings/generators/mojom_java_generator.py |
| @@ -10,6 +10,7 @@ import re |
| import mojom.generate.generator as generator |
| import mojom.generate.module as mojom |
| +import mojom.generate.pack as pack |
|
rmcilroy
2014/06/05 11:01:17
nit - remove unneeded import.
qsr
2014/06/05 11:46:11
Done.
|
| from mojom.generate.template_expander import UseJinja |
| @@ -62,19 +63,21 @@ def ConstantStyle(name): |
| return '_'.join([x.upper() for x in components]) |
| def GetNameForElement(element): |
| - if (isinstance(element, mojom.Enum) or |
| - isinstance(element, mojom.Interface) or |
| - isinstance(element, mojom.Struct)): |
| + if isinstance(element, (mojom.Enum, |
| + mojom.Interface, |
| + mojom.Struct)): |
| return UpperCamelCase(element.name) |
| - if (isinstance(element, mojom.Method) or |
| - isinstance(element, mojom.Parameter) or |
| - isinstance(element, mojom.Field)): |
| + if isinstance(element, mojom.InterfaceRequest): |
| + return GetNameForElement(element.kind) |
| + if isinstance(element, (mojom.Method, |
| + mojom.Parameter, |
| + mojom.Field)): |
| return CamelCase(element.name) |
| if isinstance(element, mojom.EnumValue): |
| return (UpperCamelCase(element.enum_name) + '.' + |
| ConstantStyle(element.name)) |
| - if (isinstance(element, mojom.NamedValue) or |
| - isinstance(element, mojom.Constant)): |
| + if isinstance(element, (mojom.NamedValue, |
| + mojom.Constant)): |
| return ConstantStyle(element.name) |
| raise Exception("Unexpected element: " % element) |
| @@ -91,12 +94,15 @@ def GetPackage(module): |
| # Default package. |
| return "org.chromium.mojom." + module.namespace |
| +def GetSuperClass(method): |
| + return "org.chromium.mojo.bindings.Struct" |
| + |
| def GetNameForKind(kind): |
| def _GetNameHierachy(kind): |
| hierachy = [] |
| if kind.parent_kind: |
| hierachy = _GetNameHierachy(kind.parent_kind) |
| - hierachy.append(kind.name) |
| + hierachy.append(GetNameForElement(kind)) |
| return hierachy |
| elements = [GetPackage(kind.module)] |
| @@ -106,12 +112,17 @@ def GetNameForKind(kind): |
| def GetJavaType(kind): |
| if isinstance(kind, (mojom.Struct, mojom.Interface)): |
| return GetNameForKind(kind) |
| + if isinstance(kind, mojom.InterfaceRequest): |
| + return GetNameForKind(kind.kind) |
| if isinstance(kind, mojom.Array): |
| return "%s[]" % GetJavaType(kind.kind) |
| if isinstance(kind, mojom.Enum): |
| return "int" |
| return _spec_to_java_type[kind.spec] |
| +def IsHandle(kind): |
| + return kind.spec[0] == 'h' |
| + |
| def TranslateConstants(token, module): |
| def _TranslateNamedValue(named_value): |
| entity_name = GetNameForElement(named_value) |
| @@ -148,8 +159,10 @@ class Generator(generator.Generator): |
| java_filters = { |
| "expression_to_text": ExpressionToText, |
| + "is_handle": IsHandle, |
| "java_type": GetJavaType, |
| "name": GetNameForElement, |
| + "super_class": GetSuperClass, |
| "verify_token_type": generator.VerifyTokenType, |
| } |
| @@ -159,6 +172,20 @@ class Generator(generator.Generator): |
| "package": GetPackage(self.module), |
| } |
| + @UseJinja("java_templates/enum.java.tmpl", filters=java_filters, |
| + lstrip_blocks=True, trim_blocks=True) |
| + def GenerateEnumSource(self, enum): |
| + exports = self.GetJinjaExports() |
| + exports.update({"enum": enum}) |
| + return exports |
| + |
| + @UseJinja("java_templates/struct.java.tmpl", filters=java_filters, |
| + lstrip_blocks=True, trim_blocks=True) |
| + def GenerateStructSource(self, struct): |
| + exports = self.GetJinjaExports() |
| + exports.update({"struct": struct}) |
| + return exports |
| + |
| @UseJinja("java_templates/constants.java.tmpl", filters=java_filters, |
| lstrip_blocks=True, trim_blocks=True) |
| def GenerateConstantsSource(self, module): |
| @@ -181,6 +208,14 @@ class Generator(generator.Generator): |
| # Ignore errors on directory creation. |
| pass |
| + for enum in self.module.enums: |
| + self.Write(self.GenerateEnumSource(enum), |
| + "%s.java" % GetNameForElement(enum)) |
| + |
| + for struct in self.module.structs: |
| + self.Write(self.GenerateStructSource(struct), |
| + "%s.java" % GetNameForElement(struct)) |
| + |
| if self.module.constants: |
| self.Write(self.GenerateConstantsSource(self.module), |
| "%s.java" % GetConstantsMainEntityName(self.module)) |