Upstream version 9.37.195.0
[platform/framework/web/crosswalk.git] / src / xwalk / tools / reflection_generator / interface_generator.py
1 #!/usr/bin/env python
2
3 # Copyright (c) 2014 Intel Corporation. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file.
6
7 from string import Template
8
9 from code_generator import CodeGenerator
10
11 class InterfaceGenerator(CodeGenerator):
12   """Generator class that generates interfade code in wrapper layer"""
13   def __init__(self, java_data, class_loader):
14     super(InterfaceGenerator, self).__init__(java_data, class_loader)
15
16   def RunTask(self):
17     self._generated_class_name = self._java_data.wrapper_name
18     self._generated_code = self.GenerateInterface()
19
20   def GenerateDoc(self, doc):
21     return self._class_loader.GenerateDoc(doc)
22
23   def GenerateInterface(self):
24     interface_template = Template("""
25 ${PACKAGE_SECTION}
26
27 ${IMPORT_SECTION}
28 ${DOC}
29 public interface ${INTERFACE_NAME} {
30 ${METHOD_SECTION}
31 }
32 """)
33     package_section = 'package %s;' % \
34         (self._java_data.package_name.replace('.internal', ''))
35     import_section = self.GenerateImportRules()
36     method_section = self.GenerateMethods()
37     interface_name = self._generated_class_name
38     value = {'PACKAGE_SECTION': package_section,
39              'IMPORT_SECTION': import_section,
40              'DOC': self.GenerateDoc(self._java_data.class_doc),
41              'INTERFACE_NAME': interface_name,
42              'METHOD_SECTION': method_section}
43     interface_code = interface_template.substitute(value)
44     return interface_code
45
46   def GenerateMethods(self):
47     methods_string = ''
48     for method in self._java_data.methods:
49       methods_string += method.GenerateMethodsStringForInterface()
50     return methods_string