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

Unified Diff: base/android/jni_generator/jni_generator.py

Issue 290403002: Adding JNIAdditionalImport annotation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Follow review Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
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 ec695db4bbc58becd6f8d34666d28f2d9c3c6fda..81bcfbb4c57d475b48ab11010a923096865eee3c 100755
--- a/base/android/jni_generator/jni_generator.py
+++ b/base/android/jni_generator/jni_generator.py
@@ -163,6 +163,9 @@ class JniParams(object):
@staticmethod
def ExtractImportsAndInnerClasses(contents):
+ if not JniParams._package:
+ raise RuntimeError('SetFullyQualifiedClass must be called before '
+ 'ExtractImportsAndInnerClasses')
contents = contents.replace('\n', '')
re_import = re.compile(r'import.*?(?P<class>\S*?);')
for match in re.finditer(re_import, contents):
@@ -175,6 +178,19 @@ class JniParams(object):
JniParams._inner_classes += [JniParams._fully_qualified_class + '$' +
inner]
+ re_additional_imports = re.compile(
+ r'@JNIAdditionalImport\((?P<class_name>\w+?)\.class\)')
+ 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]
+
@staticmethod
def ParseJavaPSignature(signature_line):
prefix = 'Signature: '
« no previous file with comments | « base/android/java/src/org/chromium/base/JNIAdditionalImport.java ('k') | base/android/jni_generator/jni_generator_tests.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698