@@ -50,18 +50,14 @@ public void process(Element element, EComponentHolder holder) throws Exception {
5050 TypeElement annotatedElement = holder .getAnnotatedElement ();
5151 String delegateClassName = annotatedElement .getQualifiedName ().toString () + "PermissionsDispatcher" ;
5252 AbstractJClass delegateClass = getJClass (delegateClassName );
53-
5453 PermissionDispatcherHolder permissionDispatcherHolder = holder .getPluginHolder (new PermissionDispatcherHolder (holder ));
5554
56- if (hasSpecialPermissions (element )) {
57- permissionDispatcherHolder .setOnActivityResultDelegateCall (delegateClass );
58- }
59- if (hasNormalPermissions (element )) {
60- permissionDispatcherHolder .setOnRequestPermissionsResultDelegateCall (delegateClass );
61- }
62-
55+ setDispatcherCallbacks (element , delegateClass , permissionDispatcherHolder );
6356 JFieldVar dispatcherCalledField = permissionDispatcherHolder .getPermissionDispatcherCalledField ();
57+ setPermissionMethods (element , holder , delegateClass , dispatcherCalledField );
58+ }
6459
60+ private void setPermissionMethods (Element element , EComponentHolder holder , AbstractJClass delegateClass , JFieldVar dispatcherCalledField ) {
6561 ExecutableElement executableElement = (ExecutableElement ) element ;
6662
6763 JMethod overrideMethod = codeModelHelper .overrideAnnotatedMethod (executableElement , holder );
@@ -97,6 +93,15 @@ public void process(Element element, EComponentHolder holder) throws Exception {
9793 elseBlock .add (previousMethodBody );
9894 }
9995
96+ private void setDispatcherCallbacks (Element element , AbstractJClass delegateClass , PermissionDispatcherHolder permissionDispatcherHolder ) {
97+ if (hasSpecialPermissions (element )) {
98+ permissionDispatcherHolder .setOnActivityResultDelegateCall (delegateClass );
99+ }
100+ if (hasNormalPermissions (element )) {
101+ permissionDispatcherHolder .setOnRequestPermissionsResultDelegateCall (delegateClass );
102+ }
103+ }
104+
100105 private AnnotationMirror findAnnotation (Element element ) {
101106 return element .getAnnotationMirrors ().stream ()
102107 .filter (this ::isNeedsPermission )
@@ -126,11 +131,11 @@ private boolean isNeedsPermission(AnnotationMirror annotationMirror) {
126131 }
127132
128133 @ SuppressWarnings ("unchecked" )
129- private boolean removeRuntimePermissionsAnnotation (JDefinedClass activity ) {
134+ private boolean removeRuntimePermissionsAnnotation (JDefinedClass definedClass ) {
130135 try {
131- Field annotationsField = activity .getClass ().getDeclaredField ("m_aAnnotations" );
136+ Field annotationsField = definedClass .getClass ().getDeclaredField ("m_aAnnotations" );
132137 annotationsField .setAccessible (true );
133- List <JAnnotationUse > annotations = (List <JAnnotationUse >) annotationsField .get (activity );
138+ List <JAnnotationUse > annotations = (List <JAnnotationUse >) annotationsField .get (definedClass );
134139 if (annotations == null ) {
135140 return true ;
136141 }
0 commit comments