From b41854635916350bee42c9f9a4be4e563399c0be Mon Sep 17 00:00:00 2001 From: Thomas Fondrillon Date: Mon, 4 Feb 2013 14:17:27 +0100 Subject: [PATCH] Add internet permission validation for @Rest annotation --- .../AndroidAnnotationProcessor.java | 6 ++--- .../validation/rest/RestValidator.java | 7 ++++- .../org/androidannotations/rest/RestTest.java | 12 ++++++--- .../rest/AndroidManifest.xml | 2 ++ .../rest/NoInternetPermissionManifest.xml | 27 +++++++++++++++++++ 5 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 AndroidAnnotations/androidannotations/src/test/resources/org/androidannotations/rest/NoInternetPermissionManifest.xml diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/AndroidAnnotationProcessor.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/AndroidAnnotationProcessor.java index 2f6483a7f9..089e419d14 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/AndroidAnnotationProcessor.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/AndroidAnnotationProcessor.java @@ -126,7 +126,6 @@ import org.androidannotations.processing.BeanProcessor; import org.androidannotations.processing.BeforeTextChangeProcessor; import org.androidannotations.processing.ClickProcessor; -import org.androidannotations.processing.HierarchyViewerSupportProcessor; import org.androidannotations.processing.EActivityProcessor; import org.androidannotations.processing.EApplicationProcessor; import org.androidannotations.processing.EBeanProcessor; @@ -142,6 +141,7 @@ import org.androidannotations.processing.FragmentByTagProcessor; import org.androidannotations.processing.FromHtmlProcessor; import org.androidannotations.processing.FullscreenProcessor; +import org.androidannotations.processing.HierarchyViewerSupportProcessor; import org.androidannotations.processing.HttpsClientProcessor; import org.androidannotations.processing.InstanceStateProcessor; import org.androidannotations.processing.ItemClickProcessor; @@ -191,7 +191,6 @@ import org.androidannotations.validation.BeanValidator; import org.androidannotations.validation.BeforeTextChangeValidator; import org.androidannotations.validation.ClickValidator; -import org.androidannotations.validation.HierarchyViewerSupportValidator; import org.androidannotations.validation.EActivityValidator; import org.androidannotations.validation.EApplicationValidator; import org.androidannotations.validation.EBeanValidator; @@ -207,6 +206,7 @@ import org.androidannotations.validation.FragmentByTagValidator; import org.androidannotations.validation.FromHtmlValidator; import org.androidannotations.validation.FullscreenValidator; +import org.androidannotations.validation.HierarchyViewerSupportValidator; import org.androidannotations.validation.HttpsClientValidator; import org.androidannotations.validation.InstanceStateValidator; import org.androidannotations.validation.ItemClickValidator; @@ -465,7 +465,7 @@ private ModelValidator buildModelValidator(IRClass rClass, AndroidSystemServices modelValidator.register(new SystemServiceValidator(processingEnv, androidSystemServices)); modelValidator.register(new SharedPrefValidator(processingEnv)); modelValidator.register(new PrefValidator(processingEnv)); - modelValidator.register(new RestValidator(processingEnv)); + modelValidator.register(new RestValidator(processingEnv, androidManifest)); modelValidator.register(new DeleteValidator(processingEnv)); modelValidator.register(new GetValidator(processingEnv)); modelValidator.register(new HeadValidator(processingEnv)); diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/validation/rest/RestValidator.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/validation/rest/RestValidator.java index 2ff11ca705..a332089b2b 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/validation/rest/RestValidator.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/validation/rest/RestValidator.java @@ -22,6 +22,7 @@ import javax.lang.model.element.TypeElement; import org.androidannotations.annotations.rest.Rest; +import org.androidannotations.helper.AndroidManifest; import org.androidannotations.helper.TargetAnnotationHelper; import org.androidannotations.helper.ValidatorHelper; import org.androidannotations.model.AnnotationElements; @@ -31,8 +32,10 @@ public class RestValidator implements ElementValidator { private final ValidatorHelper validatorHelper; + private final AndroidManifest androidManifest; - public RestValidator(ProcessingEnvironment processingEnv) { + public RestValidator(ProcessingEnvironment processingEnv, AndroidManifest androidManifest) { + this.androidManifest = androidManifest; TargetAnnotationHelper annotationHelper = new TargetAnnotationHelper(processingEnv, getTarget()); validatorHelper = new ValidatorHelper(annotationHelper); } @@ -64,6 +67,8 @@ public boolean validate(Element element, AnnotationElements validatedElements) { validatorHelper.validateInterceptors(element, valid); + validatorHelper.hasInternetPermission(typeElement, androidManifest, valid); + return valid.isValid(); } diff --git a/AndroidAnnotations/androidannotations/src/test/java/org/androidannotations/rest/RestTest.java b/AndroidAnnotations/androidannotations/src/test/java/org/androidannotations/rest/RestTest.java index 4d875b88fa..7c381fd24e 100644 --- a/AndroidAnnotations/androidannotations/src/test/java/org/androidannotations/rest/RestTest.java +++ b/AndroidAnnotations/androidannotations/src/test/java/org/androidannotations/rest/RestTest.java @@ -17,11 +17,10 @@ import java.io.IOException; -import org.junit.Before; -import org.junit.Test; - import org.androidannotations.AndroidAnnotationProcessor; import org.androidannotations.utils.AAProcessorTestHelper; +import org.junit.Before; +import org.junit.Test; public class RestTest extends AAProcessorTestHelper { @@ -37,4 +36,11 @@ public void class_client_does_not_compile() throws IOException { assertCompilationErrorOn(ClassClient.class, "@Rest", result); } + @Test + public void client_no_internet_permission_does_not_compile() throws IOException { + addManifestProcessorParameter(RestTest.class, "NoInternetPermissionManifest.xml"); + CompileResult result = compileFiles(ClientWithNoConverters.class); + assertCompilationErrorOn(ClientWithNoConverters.class, "@Rest", result); + } + } diff --git a/AndroidAnnotations/androidannotations/src/test/resources/org/androidannotations/rest/AndroidManifest.xml b/AndroidAnnotations/androidannotations/src/test/resources/org/androidannotations/rest/AndroidManifest.xml index 2dc195a21d..5fb56a2756 100644 --- a/AndroidAnnotations/androidannotations/src/test/resources/org/androidannotations/rest/AndroidManifest.xml +++ b/AndroidAnnotations/androidannotations/src/test/resources/org/androidannotations/rest/AndroidManifest.xml @@ -20,6 +20,8 @@ package="org.androidannotations.testprocessor" android:versionCode="1" android:versionName="1.0" > + + diff --git a/AndroidAnnotations/androidannotations/src/test/resources/org/androidannotations/rest/NoInternetPermissionManifest.xml b/AndroidAnnotations/androidannotations/src/test/resources/org/androidannotations/rest/NoInternetPermissionManifest.xml new file mode 100644 index 0000000000..2dc195a21d --- /dev/null +++ b/AndroidAnnotations/androidannotations/src/test/resources/org/androidannotations/rest/NoInternetPermissionManifest.xml @@ -0,0 +1,27 @@ + + + + + + + +