From df187e4cc8b1b2dc6cb0043eb91d1dfd72cb490b Mon Sep 17 00:00:00 2001 From: Igor Murashkin Date: Mon, 1 Feb 2016 11:43:26 -0800 Subject: Revert "Revert "reflection: Add new 1.8 AnnotatedElement methods and tests"" This reverts commit 28a2a186537db9fc5a8492e36d9603b48854c04f. Runtest failure has been fixed in I28c3707e38c1f69ea9d3660f68136f688122ac4e Change-Id: I1749dc89b790d44b5e40bc8b20aa62885bda792b --- runtime/native/java_lang_Class.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'runtime/native/java_lang_Class.cc') diff --git a/runtime/native/java_lang_Class.cc b/runtime/native/java_lang_Class.cc index 0ddd4a280c..a80585abca 100644 --- a/runtime/native/java_lang_Class.cc +++ b/runtime/native/java_lang_Class.cc @@ -469,14 +469,21 @@ static jobjectArray Class_getDeclaredMethodsUnchecked(JNIEnv* env, jobject javaT return soa.AddLocalReference(ret.Get()); } -static jobject Class_getDeclaredAnnotation(JNIEnv* env, jobject javaThis, jclass annotationType) { +static jobject Class_getDeclaredAnnotation(JNIEnv* env, jobject javaThis, jclass annotationClass) { ScopedFastNativeObjectAccess soa(env); StackHandleScope<2> hs(soa.Self()); Handle klass(hs.NewHandle(DecodeClass(soa, javaThis))); + + // Handle public contract to throw NPE if the "annotationClass" argument was null. + if (UNLIKELY(annotationClass == nullptr)) { + ThrowNullPointerException("annotationClass"); + return nullptr; + } + if (klass->IsProxyClass() || klass->GetDexCache() == nullptr) { return nullptr; } - Handle annotation_class(hs.NewHandle(soa.Decode(annotationType))); + Handle annotation_class(hs.NewHandle(soa.Decode(annotationClass))); return soa.AddLocalReference( klass->GetDexFile().GetAnnotationForClass(klass, annotation_class)); } -- cgit v1.2.3-59-g8ed1b