Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Side by Side Diff: mojo/public/tools/bindings/generators/mojom_java_generator.py

Issue 300223008: Add module annotation to specify the name of the java class for constants. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Generates java source files from a mojom.Module.""" 5 """Generates java source files from a mojom.Module."""
6 6
7 import argparse 7 import argparse
8 import os 8 import os
9 import re 9 import re
10 10
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 isinstance(element, mojom.Field)): 71 isinstance(element, mojom.Field)):
72 return CamelCase(element.name) 72 return CamelCase(element.name)
73 if isinstance(element, mojom.EnumValue): 73 if isinstance(element, mojom.EnumValue):
74 return (UpperCamelCase(element.enum_name) + '.' + 74 return (UpperCamelCase(element.enum_name) + '.' +
75 ConstantStyle(element.name)) 75 ConstantStyle(element.name))
76 if (isinstance(element, mojom.NamedValue) or 76 if (isinstance(element, mojom.NamedValue) or
77 isinstance(element, mojom.Constant)): 77 isinstance(element, mojom.Constant)):
78 return ConstantStyle(element.name) 78 return ConstantStyle(element.name)
79 raise Exception("Unexpected element: " % element) 79 raise Exception("Unexpected element: " % element)
80 80
81 def ParseStringAttribute(attribute):
82 if isinstance(attribute, basestring):
83 return attribute
84 assert attribute[0] == 'EXPRESSION'
85 assert len(attribute[1]) == 1
86 return attribute[1][0][1:-1].encode('string_escape')
87
81 def GetPackage(module): 88 def GetPackage(module):
82 if 'JavaPackage' in module.attributes: 89 if 'JavaPackage' in module.attributes:
83 package = module.attributes['JavaPackage'] 90 return ParseStringAttribute(module.attributes['JavaPackage'])
84 if isinstance(package, basestring):
85 return package
86 assert package[0] == 'EXPRESSION'
87 assert len(package[1]) == 1
88 return package[1][0][1:-1].encode('string_escape')
89 # Default package. 91 # Default package.
90 return "org.chromium.mojom." + module.namespace 92 return "org.chromium.mojom." + module.namespace
91 93
92 def GetNameForKind(kind): 94 def GetNameForKind(kind):
93 def _GetNameHierachy(kind): 95 def _GetNameHierachy(kind):
94 hierachy = [] 96 hierachy = []
95 if kind.parent_kind: 97 if kind.parent_kind:
96 hierachy = _GetNameHierachy(kind.parent_kind) 98 hierachy = _GetNameHierachy(kind.parent_kind)
97 hierachy.append(kind.name) 99 hierachy.append(kind.name)
98 return hierachy 100 return hierachy
(...skipping 29 matching lines...) Expand all
128 return token + 'L' 130 return token + 'L'
129 return token 131 return token
130 132
131 def ExpressionToText(value, module): 133 def ExpressionToText(value, module):
132 if value[0] != "EXPRESSION": 134 if value[0] != "EXPRESSION":
133 raise Exception("Expected EXPRESSION, got" + value) 135 raise Exception("Expected EXPRESSION, got" + value)
134 return "".join(generator.ExpressionMapper(value, 136 return "".join(generator.ExpressionMapper(value,
135 lambda token: TranslateConstants(token, module))) 137 lambda token: TranslateConstants(token, module)))
136 138
137 def GetConstantsMainEntityName(module): 139 def GetConstantsMainEntityName(module):
140 if 'JavaConstantsClassName' in module.attributes:
141 return ParseStringAttribute(module.attributes['JavaConstantsClassName'])
138 # This constructs the name of the embedding classes for module level constants 142 # This constructs the name of the embedding classes for module level constants
139 # by extracting the mojom's filename and prepending it to Constants. 143 # by extracting the mojom's filename and prepending it to Constants.
140 return (UpperCamelCase(module.path.split('/')[-1].rsplit('.', 1)[0]) + 144 return (UpperCamelCase(module.path.split('/')[-1].rsplit('.', 1)[0]) +
141 'Constants') 145 'Constants')
142 146
143 class Generator(generator.Generator): 147 class Generator(generator.Generator):
144 148
145 java_filters = { 149 java_filters = {
146 "expression_to_text": ExpressionToText, 150 "expression_to_text": ExpressionToText,
147 "java_type": GetJavaType, 151 "java_type": GetJavaType,
(...skipping 21 matching lines...) Expand all
169 args = parser.parse_args(unparsed_args) 173 args = parser.parse_args(unparsed_args)
170 if self.output_dir and args.java_output_directory: 174 if self.output_dir and args.java_output_directory:
171 self.output_dir = os.path.join(args.java_output_directory, 175 self.output_dir = os.path.join(args.java_output_directory,
172 GetPackage(self.module).replace('.', '/')) 176 GetPackage(self.module).replace('.', '/'))
173 if not os.path.exists(self.output_dir): 177 if not os.path.exists(self.output_dir):
174 os.makedirs(self.output_dir) 178 os.makedirs(self.output_dir)
175 179
176 if self.module.constants: 180 if self.module.constants:
177 self.Write(self.GenerateConstantsSource(self.module), 181 self.Write(self.GenerateConstantsSource(self.module),
178 "%s.java" % GetConstantsMainEntityName(self.module)) 182 "%s.java" % GetConstantsMainEntityName(self.module))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698