Skip to content

Commit 8dc0d65

Browse files
Merge pull request androidannotations#490 from excilys/490_RestInternetPermissionValidation
Add a new validation rule for @rest annotation
2 parents c96e584 + b418546 commit 8dc0d65

5 files changed

Lines changed: 47 additions & 7 deletions

File tree

AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/AndroidAnnotationProcessor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,6 @@
126126
import org.androidannotations.processing.BeanProcessor;
127127
import org.androidannotations.processing.BeforeTextChangeProcessor;
128128
import org.androidannotations.processing.ClickProcessor;
129-
import org.androidannotations.processing.HierarchyViewerSupportProcessor;
130129
import org.androidannotations.processing.EActivityProcessor;
131130
import org.androidannotations.processing.EApplicationProcessor;
132131
import org.androidannotations.processing.EBeanProcessor;
@@ -142,6 +141,7 @@
142141
import org.androidannotations.processing.FragmentByTagProcessor;
143142
import org.androidannotations.processing.FromHtmlProcessor;
144143
import org.androidannotations.processing.FullscreenProcessor;
144+
import org.androidannotations.processing.HierarchyViewerSupportProcessor;
145145
import org.androidannotations.processing.HttpsClientProcessor;
146146
import org.androidannotations.processing.InstanceStateProcessor;
147147
import org.androidannotations.processing.ItemClickProcessor;
@@ -191,7 +191,6 @@
191191
import org.androidannotations.validation.BeanValidator;
192192
import org.androidannotations.validation.BeforeTextChangeValidator;
193193
import org.androidannotations.validation.ClickValidator;
194-
import org.androidannotations.validation.HierarchyViewerSupportValidator;
195194
import org.androidannotations.validation.EActivityValidator;
196195
import org.androidannotations.validation.EApplicationValidator;
197196
import org.androidannotations.validation.EBeanValidator;
@@ -207,6 +206,7 @@
207206
import org.androidannotations.validation.FragmentByTagValidator;
208207
import org.androidannotations.validation.FromHtmlValidator;
209208
import org.androidannotations.validation.FullscreenValidator;
209+
import org.androidannotations.validation.HierarchyViewerSupportValidator;
210210
import org.androidannotations.validation.HttpsClientValidator;
211211
import org.androidannotations.validation.InstanceStateValidator;
212212
import org.androidannotations.validation.ItemClickValidator;
@@ -465,7 +465,7 @@ private ModelValidator buildModelValidator(IRClass rClass, AndroidSystemServices
465465
modelValidator.register(new SystemServiceValidator(processingEnv, androidSystemServices));
466466
modelValidator.register(new SharedPrefValidator(processingEnv));
467467
modelValidator.register(new PrefValidator(processingEnv));
468-
modelValidator.register(new RestValidator(processingEnv));
468+
modelValidator.register(new RestValidator(processingEnv, androidManifest));
469469
modelValidator.register(new DeleteValidator(processingEnv));
470470
modelValidator.register(new GetValidator(processingEnv));
471471
modelValidator.register(new HeadValidator(processingEnv));

AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/validation/rest/RestValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import javax.lang.model.element.TypeElement;
2323

2424
import org.androidannotations.annotations.rest.Rest;
25+
import org.androidannotations.helper.AndroidManifest;
2526
import org.androidannotations.helper.TargetAnnotationHelper;
2627
import org.androidannotations.helper.ValidatorHelper;
2728
import org.androidannotations.model.AnnotationElements;
@@ -31,8 +32,10 @@
3132
public class RestValidator implements ElementValidator {
3233

3334
private final ValidatorHelper validatorHelper;
35+
private final AndroidManifest androidManifest;
3436

35-
public RestValidator(ProcessingEnvironment processingEnv) {
37+
public RestValidator(ProcessingEnvironment processingEnv, AndroidManifest androidManifest) {
38+
this.androidManifest = androidManifest;
3639
TargetAnnotationHelper annotationHelper = new TargetAnnotationHelper(processingEnv, getTarget());
3740
validatorHelper = new ValidatorHelper(annotationHelper);
3841
}
@@ -64,6 +67,8 @@ public boolean validate(Element element, AnnotationElements validatedElements) {
6467

6568
validatorHelper.validateInterceptors(element, valid);
6669

70+
validatorHelper.hasInternetPermission(typeElement, androidManifest, valid);
71+
6772
return valid.isValid();
6873
}
6974

AndroidAnnotations/androidannotations/src/test/java/org/androidannotations/rest/RestTest.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,10 @@
1717

1818
import java.io.IOException;
1919

20-
import org.junit.Before;
21-
import org.junit.Test;
22-
2320
import org.androidannotations.AndroidAnnotationProcessor;
2421
import org.androidannotations.utils.AAProcessorTestHelper;
22+
import org.junit.Before;
23+
import org.junit.Test;
2524

2625
public class RestTest extends AAProcessorTestHelper {
2726

@@ -37,4 +36,11 @@ public void class_client_does_not_compile() throws IOException {
3736
assertCompilationErrorOn(ClassClient.class, "@Rest", result);
3837
}
3938

39+
@Test
40+
public void client_no_internet_permission_does_not_compile() throws IOException {
41+
addManifestProcessorParameter(RestTest.class, "NoInternetPermissionManifest.xml");
42+
CompileResult result = compileFiles(ClientWithNoConverters.class);
43+
assertCompilationErrorOn(ClientWithNoConverters.class, "@Rest", result);
44+
}
45+
4046
}

AndroidAnnotations/androidannotations/src/test/resources/org/androidannotations/rest/AndroidManifest.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
package="org.androidannotations.testprocessor"
2121
android:versionCode="1"
2222
android:versionName="1.0" >
23+
24+
<uses-permission android:name="android.permission.INTERNET"/>
2325

2426
<application>
2527
</application>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
4+
Copyright (C) 2010-2012 eBusiness Information, Excilys Group
5+
6+
Licensed under the Apache License, Version 2.0 (the "License"); you may not
7+
use this file except in compliance with the License. You may obtain a copy of
8+
the License at
9+
10+
http://www.apache.org/licenses/LICENSE-2.0
11+
12+
Unless required by applicable law or agreed To in writing, software
13+
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14+
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15+
License for the specific language governing permissions and limitations under
16+
the License.
17+
18+
-->
19+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
20+
package="org.androidannotations.testprocessor"
21+
android:versionCode="1"
22+
android:versionName="1.0" >
23+
24+
<application>
25+
</application>
26+
27+
</manifest>

0 commit comments

Comments
 (0)