| 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
|
| deleted file mode 100644
|
| index 5dc7b17614a6a50be9fa3f6974ed240c2ff7790e..0000000000000000000000000000000000000000
|
| --- a/mojo/public/tools/bindings/generators/mojom_java_generator.py
|
| +++ /dev/null
|
| @@ -1,182 +0,0 @@
|
| -# Copyright 2013 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -"""Generates java source files from a mojom.Module."""
|
| -
|
| -import argparse
|
| -import os
|
| -import re
|
| -
|
| -import mojom.generate.generator as generator
|
| -import mojom.generate.module as mojom
|
| -from mojom.generate.template_expander import UseJinja
|
| -
|
| -
|
| -GENERATOR_PREFIX = 'java'
|
| -
|
| -_spec_to_java_type = {
|
| - 'b': 'boolean',
|
| - 'd': 'double',
|
| - 'f': 'float',
|
| - 'h:d:c': 'org.chromium.mojo.system.DataPipe.ConsumerHandle',
|
| - 'h:d:p': 'org.chromium.mojo.system.DataPipe.ProducerHandle',
|
| - 'h:m': 'org.chromium.mojo.system.MessagePipeHandle',
|
| - 'h': 'org.chromium.mojo.system.UntypedHandle',
|
| - 'h:s': 'org.chromium.mojo.system.SharedBufferHandle',
|
| - 'i16': 'short',
|
| - 'i32': 'int',
|
| - 'i64': 'long',
|
| - 'i8': 'byte',
|
| - 's': 'String',
|
| - 'u16': 'short',
|
| - 'u32': 'int',
|
| - 'u64': 'long',
|
| - 'u8': 'byte',
|
| -}
|
| -
|
| -
|
| -def NameToComponent(name):
|
| - # insert '_' between anything and a Title name (e.g, HTTPEntry2FooBar ->
|
| - # HTTP_Entry2_FooBar)
|
| - name = re.sub('([^_])([A-Z][^A-Z_]+)', r'\1_\2', name)
|
| - # insert '_' between non upper and start of upper blocks (e.g.,
|
| - # HTTP_Entry2_FooBar -> HTTP_Entry2_Foo_Bar)
|
| - name = re.sub('([^A-Z_])([A-Z])', r'\1_\2', name)
|
| - return [x.lower() for x in name.split('_')]
|
| -
|
| -def CapitalizeFirst(string):
|
| - return string[0].upper() + string[1:]
|
| -
|
| -def UpperCamelCase(name):
|
| - return ''.join([CapitalizeFirst(x) for x in NameToComponent(name)])
|
| -
|
| -def CamelCase(name):
|
| - uccc = UpperCamelCase(name)
|
| - return uccc[0].lower() + uccc[1:]
|
| -
|
| -def ConstantStyle(name):
|
| - components = NameToComponent(name)
|
| - if components[0] == 'k':
|
| - components = components[1:]
|
| - 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)):
|
| - return UpperCamelCase(element.name)
|
| - if (isinstance(element, mojom.Method) or
|
| - isinstance(element, mojom.Parameter) or
|
| - isinstance(element, 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)):
|
| - return ConstantStyle(element.name)
|
| - raise Exception("Unexpected element: " % element)
|
| -
|
| -def GetPackage(module):
|
| - if 'JavaPackage' in module.attributes:
|
| - package = module.attributes['JavaPackage']
|
| - if isinstance(package, basestring):
|
| - return package
|
| - assert package[0] == 'EXPRESSION'
|
| - assert len(package[1]) == 1
|
| - return package[1][0][1:-1].encode('string_escape')
|
| - # Default package.
|
| - return "org.chromium.mojom." + module.namespace
|
| -
|
| -def GetNameForKind(kind):
|
| - def _GetNameHierachy(kind):
|
| - hierachy = []
|
| - if kind.parent_kind:
|
| - hierachy = _GetNameHierachy(kind.parent_kind)
|
| - hierachy.append(kind.name)
|
| - return hierachy
|
| -
|
| - elements = [GetPackage(kind.module)]
|
| - elements += _GetNameHierachy(kind)
|
| - return '.'.join(elements)
|
| -
|
| -def GetJavaType(kind):
|
| - if isinstance(kind, (mojom.Struct, mojom.Interface)):
|
| - return GetNameForKind(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 TranslateConstants(token, module):
|
| - def _TranslateNamedValue(named_value):
|
| - entity_name = GetNameForElement(named_value)
|
| - if named_value.parent_kind:
|
| - return GetJavaType(named_value.parent_kind) + '.' + entity_name
|
| - # Handle the case where named_value is a module level constant:
|
| - if not isinstance(named_value, mojom.EnumValue):
|
| - entity_name = (GetConstantsMainEntityName(named_value.module) + '.' +
|
| - entity_name)
|
| - return GetPackage(named_value.module) + '.' + entity_name
|
| -
|
| - if isinstance(token, mojom.NamedValue):
|
| - return _TranslateNamedValue(token)
|
| - # Add Long suffix to all number literals.
|
| - if re.match('^[0-9]+$', token):
|
| - return token + 'L'
|
| - return token
|
| -
|
| -def ExpressionToText(value, module):
|
| - if value[0] != "EXPRESSION":
|
| - raise Exception("Expected EXPRESSION, got" + value)
|
| - return "".join(generator.ExpressionMapper(value,
|
| - lambda token: TranslateConstants(token, module)))
|
| -
|
| -def GetConstantsMainEntityName(module):
|
| - # This constructs the name of the embedding classes for module level constants
|
| - # by extracting the mojom's filename and prepending it to Constants.
|
| - return (UpperCamelCase(module.path.split('/')[-1].rsplit('.', 1)[0]) +
|
| - 'Constants')
|
| -
|
| -class Generator(generator.Generator):
|
| -
|
| - java_filters = {
|
| - "expression_to_text": ExpressionToText,
|
| - "java_type": GetJavaType,
|
| - "name": GetNameForElement,
|
| - "verify_token_type": generator.VerifyTokenType,
|
| - }
|
| -
|
| - def GetJinjaExports(self):
|
| - return {
|
| - "module": self.module,
|
| - "package": GetPackage(self.module),
|
| - }
|
| -
|
| - @UseJinja("java_templates/constants.java.tmpl", filters=java_filters,
|
| - lstrip_blocks=True, trim_blocks=True)
|
| - def GenerateConstantsSource(self, module):
|
| - exports = self.GetJinjaExports()
|
| - exports.update({"main_entity": GetConstantsMainEntityName(module),
|
| - "constants": module.constants})
|
| - return exports
|
| -
|
| - def GenerateFiles(self, unparsed_args):
|
| - parser = argparse.ArgumentParser()
|
| - parser.add_argument("--java_output_directory", dest="java_output_directory")
|
| - args = parser.parse_args(unparsed_args)
|
| - if self.output_dir and args.java_output_directory:
|
| - self.output_dir = os.path.join(args.java_output_directory,
|
| - GetPackage(self.module).replace('.', '/'))
|
| - if not os.path.exists(self.output_dir):
|
| - try:
|
| - os.makedirs(self.output_dir)
|
| - except:
|
| - # Ignore errors on directory creation.
|
| - pass
|
| -
|
| - if self.module.constants:
|
| - self.Write(self.GenerateConstantsSource(self.module),
|
| - "%s.java" % GetConstantsMainEntityName(self.module))
|
|
|