Index: base/android/jni_generator/jni_generator.py |
diff --git a/base/android/jni_generator/jni_generator.py b/base/android/jni_generator/jni_generator.py |
index 7a6a163bb759b90cc477d8f1f1894dda53776ac5..a1a654a472bbcfeefd4e2240c1138eff3fe55f8f 100755 |
--- a/base/android/jni_generator/jni_generator.py |
+++ b/base/android/jni_generator/jni_generator.py |
@@ -162,6 +162,19 @@ class JniParams(object): |
JniParams._package = '/'.join(fully_qualified_class.split('/')[:-1]) |
@staticmethod |
+ def AddAdditionalImport(class_name): |
+ assert class_name.endswith('.class') |
+ raw_class_name = class_name[:-len('.class')] |
+ if '.' in raw_class_name: |
+ raise SyntaxError('%s cannot be used in @JNIAdditionalImport. ' |
+ 'Only import unqualified outer classes.' % class_name) |
+ new_import = 'L%s/%s' % (JniParams._package, raw_class_name) |
+ if new_import in JniParams._imports: |
+ raise SyntaxError('Do not use JNIAdditionalImport on an already ' |
+ 'imported class: %s' % (new_import.replace('/', '.'))) |
+ JniParams._imports += [new_import] |
+ |
+ @staticmethod |
def ExtractImportsAndInnerClasses(contents): |
if not JniParams._package: |
raise RuntimeError('SetFullyQualifiedClass must be called before ' |
@@ -179,17 +192,10 @@ class JniParams(object): |
inner] |
re_additional_imports = re.compile( |
- r'@JNIAdditionalImport\((?P<class_name>\w+?)\.class\)') |
+ r'@JNIAdditionalImport\(\s*{?(?P<class_names>.*?)}?\s*\)') |
for match in re.finditer(re_additional_imports, contents): |
- class_name = match.group('class_name') |
- if '.' in class_name: |
- raise SyntaxError('*.class cannot be used in @JNIAdditionalImport. ' |
- 'Only import unqualified outer classes.' % class_name) |
- new_import = 'L%s/%s' % (JniParams._package, class_name) |
- if new_import in JniParams._imports: |
- raise SyntaxError('Do not use JNIAdditionalImport on an already ' |
- 'imported class: %s' % (new_import.replace('/', '.'))) |
- JniParams._imports += [new_import] |
+ for class_name in match.group('class_names').split(','): |
+ JniParams.AddAdditionalImport(class_name.strip()) |
@staticmethod |
def ParseJavaPSignature(signature_line): |