Skip to content

Commit 2d36e31

Browse files
author
Aleksander Mielczarek
committed
#18 - Do not generate delegate if class has no @RuntimePermissions
1 parent 40282c5 commit 2d36e31

File tree

2 files changed

+24
-6
lines changed
  • androidannotationspermissionsdispatcherplugin/src/main/java/com/github/aleksandermielczarek/androidannotationspermissionsdispatcherplugin
  • app/src/main/java/com/github/aleksandermielczarek/androidannotationspermissionsdispatcherpluginexample

2 files changed

+24
-6
lines changed

androidannotationspermissionsdispatcherplugin/src/main/java/com/github/aleksandermielczarek/androidannotationspermissionsdispatcherplugin/NeedsPermissionHandler.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,21 @@ protected void validate(Element element, ElementValidation validation) {
4848
@Override
4949
public void process(Element element, EComponentHolder holder) throws Exception {
5050
TypeElement annotatedElement = holder.getAnnotatedElement();
51-
String delegateClassName = annotatedElement.getQualifiedName().toString() + "PermissionsDispatcher";
52-
AbstractJClass delegateClass = getJClass(delegateClassName);
53-
PermissionDispatcherHolder permissionDispatcherHolder = holder.getPluginHolder(new PermissionDispatcherHolder(holder));
51+
if (annotatedElementHasRuntimePermissions(annotatedElement)) {
52+
String delegateClassName = annotatedElement.getQualifiedName().toString() + "PermissionsDispatcher";
53+
AbstractJClass delegateClass = getJClass(delegateClassName);
54+
PermissionDispatcherHolder permissionDispatcherHolder = holder.getPluginHolder(new PermissionDispatcherHolder(holder));
55+
56+
setDispatcherCallbacks(element, delegateClass, permissionDispatcherHolder);
57+
JFieldVar dispatcherCalledField = permissionDispatcherHolder.getPermissionDispatcherCalledField();
58+
setPermissionMethods(element, holder, delegateClass, dispatcherCalledField);
59+
}
60+
}
5461

55-
setDispatcherCallbacks(element, delegateClass, permissionDispatcherHolder);
56-
JFieldVar dispatcherCalledField = permissionDispatcherHolder.getPermissionDispatcherCalledField();
57-
setPermissionMethods(element, holder, delegateClass, dispatcherCalledField);
62+
private boolean annotatedElementHasRuntimePermissions(TypeElement annotatedElement) {
63+
return annotatedElement.getAnnotationMirrors().stream()
64+
.map(annotationMirror -> annotationMirror.getAnnotationType().asElement().getSimpleName().toString())
65+
.anyMatch(annotation -> annotation.contains("RuntimePermissions"));
5866
}
5967

6068
private void setPermissionMethods(Element element, EComponentHolder holder, AbstractJClass delegateClass, JFieldVar dispatcherCalledField) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.github.aleksandermielczarek.androidannotationspermissionsdispatcherpluginexample;
2+
3+
import org.androidannotations.annotations.EActivity;
4+
5+
/**
6+
* Created by Aleksander Mielczarek on 24.01.2018.
7+
*/
8+
@EActivity(R.layout.activity_main)
9+
public class ChildActivity extends MainActivity {
10+
}

0 commit comments

Comments
 (0)