Skip to content

Commit efd3957

Browse files
committed
removing references to codeModel.ref(), to avoid crashes when using Ant. androidannotations#240
1 parent 42401c2 commit efd3957

16 files changed

Lines changed: 95 additions & 88 deletions

AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/processing/BackgroundProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder eBeansHo
5353

5454
{
5555
// Execute Runnable
56-
JClass backgroundExecutorClass = codeModel.ref(BackgroundExecutor.class);
56+
JClass backgroundExecutorClass = eBeansHolder.refClass(BackgroundExecutor.class);
5757

5858
JInvocation executeCall = backgroundExecutorClass.staticInvoke("execute").arg(JExpr._new(anonymousRunnableClass));
5959

AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/processing/BeanProcessor.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,9 @@ public Class<? extends Annotation> getTarget() {
5050
@Override
5151
public void process(Element element, JCodeModel codeModel, EBeansHolder eBeansHolder) {
5252
EBeanHolder holder = eBeansHolder.getEnclosingEBeanHolder(element);
53-
54-
53+
5554
DeclaredType targetAnnotationClassValue = annotationHelper.extractAnnotationClassParameter(element);
56-
55+
5756
TypeMirror elementType;
5857
if (targetAnnotationClassValue != null) {
5958
elementType = targetAnnotationClassValue;
@@ -65,7 +64,7 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder eBeansHo
6564

6665
String typeQualifiedName = elementType.toString();
6766

68-
JClass injectedClass = codeModel.ref(typeQualifiedName + GENERATION_SUFFIX);
67+
JClass injectedClass = eBeansHolder.refClass(typeQualifiedName + GENERATION_SUFFIX);
6968

7069
{
7170
// getInstance

AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/processing/EActivityProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder activiti
187187
JClass keyEventClass = holder.classes().KEY_EVENT;
188188
JVar eventParam = onKeyDownMethod.param(keyEventClass, "event");
189189

190-
JClass versionHelperClass = codeModel.ref(SdkVersionHelper.class);
190+
JClass versionHelperClass = holder.refClass(SdkVersionHelper.class);
191191

192192
JInvocation sdkInt = versionHelperClass.staticInvoke("getSdkInt");
193193

AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/processing/EBeanHolder.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,4 +108,8 @@ public JClass refClass(String fullyQualifiedClassName) {
108108
return eBeansHolder.refClass(fullyQualifiedClassName);
109109
}
110110

111+
public JClass refClass(Class<?> clazz) {
112+
return eBeansHolder.refClass(clazz);
113+
}
114+
111115
}

AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/processing/SharedPrefProcessor.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -114,26 +114,26 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder activiti
114114
// Static editor class
115115
JDefinedClass editorClass = helperClass._class(JMod.PUBLIC | JMod.STATIC | JMod.FINAL, interfaceSimpleName + "Editor" + ModelConstants.GENERATION_SUFFIX);
116116

117-
editorClass._extends(codeModel.ref(EditorHelper.class).narrow(editorClass));
117+
editorClass._extends(activitiesHolder.refClass(EditorHelper.class).narrow(editorClass));
118118

119119
// Editor constructor
120120
JMethod editorConstructor = editorClass.constructor(JMod.NONE);
121-
JClass sharedPreferencesClass = codeModel.ref("android.content.SharedPreferences");
121+
JClass sharedPreferencesClass = activitiesHolder.refClass("android.content.SharedPreferences");
122122
JVar sharedPreferencesParam = editorConstructor.param(sharedPreferencesClass, "sharedPreferences");
123123
editorConstructor.body().invoke("super").arg(sharedPreferencesParam);
124124

125125
// Editor field methods
126126
for (ExecutableElement method : validMethods) {
127127
String returnType = method.getReturnType().toString();
128128
EditorFieldHolder editorFieldHolder = EDITOR_FIELD_BY_TYPE.get(returnType);
129-
JClass editorFieldClass = codeModel.ref(editorFieldHolder.fieldClass);
129+
JClass editorFieldClass = activitiesHolder.refClass(editorFieldHolder.fieldClass);
130130
String fieldName = method.getSimpleName().toString();
131131
JMethod editorFieldMethod = editorClass.method(JMod.PUBLIC, editorFieldClass.narrow(editorClass), fieldName);
132132
editorFieldMethod.body()._return(JExpr.invoke(editorFieldHolder.fieldMethodName).arg(fieldName));
133133
}
134134

135135
// Helper constructor
136-
JClass contextClass = codeModel.ref("android.content.Context");
136+
JClass contextClass = activitiesHolder.refClass("android.content.Context");
137137

138138
SharedPref sharedPrefAnnotation = typeElement.getAnnotation(SharedPref.class);
139139
Scope scope = sharedPrefAnnotation.value();
@@ -143,7 +143,7 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder activiti
143143
case ACTIVITY_DEFAULT: {
144144

145145
JVar contextParam = constructor.param(contextClass, "context");
146-
JMethod getLocalClassName = getLocalClassName(helperClass, codeModel);
146+
JMethod getLocalClassName = getLocalClassName(activitiesHolder, helperClass, codeModel);
147147
constructor.body().invoke("super") //
148148
.arg(contextParam.invoke("getSharedPreferences") //
149149
.arg(invoke(getLocalClassName).arg(contextParam)) //
@@ -152,7 +152,7 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder activiti
152152
}
153153
case ACTIVITY: {
154154
JVar contextParam = constructor.param(contextClass, "context");
155-
JMethod getLocalClassName = getLocalClassName(helperClass, codeModel);
155+
JMethod getLocalClassName = getLocalClassName(activitiesHolder, helperClass, codeModel);
156156
constructor.body().invoke("super") //
157157
.arg(contextParam.invoke("getSharedPreferences") //
158158
.arg(invoke(getLocalClassName).arg(contextParam) //
@@ -170,7 +170,7 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder activiti
170170
break;
171171
}
172172
case APPLICATION_DEFAULT: {
173-
JClass preferenceManagerClass = codeModel.ref("android.preference.PreferenceManager");
173+
JClass preferenceManagerClass = activitiesHolder.refClass("android.preference.PreferenceManager");
174174
JVar contextParam = constructor.param(contextClass, "context");
175175
constructor.body() //
176176
.invoke("super") //
@@ -243,11 +243,11 @@ private void addFieldHelperMethod(JDefinedClass helperClass, String fieldName, J
243243
fieldMethod.body()._return(JExpr.invoke(fieldHelperMethodName).arg(fieldName).arg(defaultValue));
244244
}
245245

246-
private JMethod getLocalClassName(JDefinedClass helperClass, JCodeModel codeModel) {
246+
private JMethod getLocalClassName(EBeansHolder eBeansHolder, JDefinedClass helperClass, JCodeModel codeModel) {
247247

248-
JClass stringClass = codeModel.ref(String.class);
248+
JClass stringClass = eBeansHolder.refClass(String.class);
249249
JMethod getLocalClassName = helperClass.method(PRIVATE | STATIC, stringClass, "getLocalClassName");
250-
JClass contextClass = codeModel.ref("android.content.Context");
250+
JClass contextClass = eBeansHolder.refClass("android.content.Context");
251251

252252
JVar contextParam = getLocalClassName.param(contextClass, "context");
253253

@@ -262,9 +262,9 @@ private JMethod getLocalClassName(JDefinedClass helperClass, JCodeModel codeMode
262262
JExpression condition = className.invoke("startsWith").arg(packageName).not() //
263263
.cor(className.invoke("length").lte(packageLen)) //
264264
.cor(className.invoke("charAt").arg(packageLen).ne(lit('.')));
265-
265+
266266
body._if(condition)._then()._return(className);
267-
267+
268268
body._return(className.invoke("substring").arg(packageLen.plus(lit(1))));
269269

270270
return getLocalClassName;

AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/processing/TransactionalProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder activiti
7979
tryBody._return(result);
8080
}
8181

82-
JCatchBlock catchBlock = tryBlock._catch(codeModel.ref(RuntimeException.class));
82+
JCatchBlock catchBlock = tryBlock._catch(holder.refClass(RuntimeException.class));
8383

8484
JVar exceptionParam = catchBlock.param("e");
8585

AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/processing/rest/DeleteProcessor.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131

3232
public class DeleteProcessor extends MethodProcessor {
3333

34+
private EBeansHolder activitiesHolder;
35+
3436
public DeleteProcessor(ProcessingEnvironment processingEnv, RestImplementationsHolder restImplementationHolder) {
3537
super(processingEnv, restImplementationHolder);
3638
}
@@ -43,12 +45,13 @@ public Class<? extends Annotation> getTarget() {
4345
@Override
4446
public void process(Element element, JCodeModel codeModel, EBeansHolder activitiesHolder) throws Exception {
4547

48+
this.activitiesHolder = activitiesHolder;
4649
ExecutableElement executableElement = (ExecutableElement) element;
4750

4851
Delete deleteAnnotation = element.getAnnotation(Delete.class);
4952
String urlSuffix = deleteAnnotation.value();
5053

51-
generateRestTemplateCallBlock(new MethodProcessorHolder(executableElement, urlSuffix, null, null, codeModel));
54+
generateRestTemplateCallBlock(new MethodProcessorHolder(activitiesHolder, executableElement, urlSuffix, null, null, codeModel));
5255
}
5356

5457
@Override
@@ -69,7 +72,7 @@ protected JInvocation addResultCallMethod(JInvocation restCall, MethodProcessorH
6972

7073
@Override
7174
protected JVar addHttpHeadersVar(JBlock body, ExecutableElement executableElement) {
72-
return generateHttpHeadersVar(body, executableElement);
75+
return generateHttpHeadersVar(activitiesHolder, body, executableElement);
7376
}
7477

7578
}

AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/processing/rest/GetProcessor.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636

3737
public class GetProcessor extends MethodProcessor {
3838

39+
private EBeansHolder activitiesHolder;
40+
3941
public GetProcessor(ProcessingEnvironment processingEnv, RestImplementationsHolder restImplementationHolder) {
4042
super(processingEnv, restImplementationHolder);
4143
}
@@ -48,7 +50,7 @@ public Class<? extends Annotation> getTarget() {
4850
@Override
4951
public void process(Element element, JCodeModel codeModel, EBeansHolder activitiesHolder) {
5052

51-
RestImplementationHolder holder = restImplementationsHolder.getEnclosingHolder(element);
53+
this.activitiesHolder = activitiesHolder;
5254
ExecutableElement executableElement = (ExecutableElement) element;
5355

5456
TypeMirror returnType = executableElement.getReturnType();
@@ -61,18 +63,18 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder activiti
6163
if (returnTypeString.startsWith(CanonicalNameConstants.RESPONSE_ENTITY)) {
6264
DeclaredType declaredReturnedType = (DeclaredType) returnType;
6365
TypeMirror typeParameter = declaredReturnedType.getTypeArguments().get(0);
64-
expectedClass = holder.refClass(typeParameter.toString());
65-
generatedReturnType = holder.refClass(CanonicalNameConstants.RESPONSE_ENTITY).narrow(expectedClass);
66+
expectedClass = activitiesHolder.refClass(typeParameter.toString());
67+
generatedReturnType = activitiesHolder.refClass(CanonicalNameConstants.RESPONSE_ENTITY).narrow(expectedClass);
6668
} else {
67-
generatedReturnType = holder.refClass(returnTypeString);
69+
generatedReturnType = activitiesHolder.refClass(returnTypeString);
6870
expectedClass = generatedReturnType;
6971
}
7072
}
7173

7274
Get getAnnotation = element.getAnnotation(Get.class);
7375
String urlSuffix = getAnnotation.value();
7476

75-
generateRestTemplateCallBlock(new MethodProcessorHolder(executableElement, urlSuffix, expectedClass, generatedReturnType, codeModel));
77+
generateRestTemplateCallBlock(new MethodProcessorHolder(activitiesHolder, executableElement, urlSuffix, expectedClass, generatedReturnType, codeModel));
7678
}
7779

7880
@Override
@@ -105,7 +107,7 @@ protected JInvocation addResponseEntityArg(JInvocation restCall, MethodProcessor
105107

106108
@Override
107109
protected JVar addHttpHeadersVar(JBlock body, ExecutableElement executableElement) {
108-
return generateHttpHeadersVar(body, executableElement);
110+
return generateHttpHeadersVar(activitiesHolder, body, executableElement);
109111
}
110112

111113
}

AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/processing/rest/HeadProcessor.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333

3434
public class HeadProcessor extends MethodProcessor {
3535

36+
private EBeansHolder activitiesHolder;
37+
3638
public HeadProcessor(ProcessingEnvironment processingEnv, RestImplementationsHolder restImplementationHolder) {
3739
super(processingEnv, restImplementationHolder);
3840
}
@@ -45,17 +47,17 @@ public Class<? extends Annotation> getTarget() {
4547
@Override
4648
public void process(Element element, JCodeModel codeModel, EBeansHolder activitiesHolder) throws Exception {
4749

48-
RestImplementationHolder holder = restImplementationsHolder.getEnclosingHolder(element);
50+
this.activitiesHolder = activitiesHolder;
4951
ExecutableElement executableElement = (ExecutableElement) element;
5052

5153
TypeMirror returnType = executableElement.getReturnType();
5254

53-
JClass expectedClass = holder.refClass(returnType.toString());
55+
JClass expectedClass = activitiesHolder.refClass(returnType.toString());
5456

5557
Head headAnnotation = element.getAnnotation(Head.class);
5658
String urlSuffix = headAnnotation.value();
5759

58-
generateRestTemplateCallBlock(new MethodProcessorHolder(executableElement, urlSuffix, expectedClass, expectedClass, codeModel));
60+
generateRestTemplateCallBlock(new MethodProcessorHolder(activitiesHolder, executableElement, urlSuffix, expectedClass, expectedClass, codeModel));
5961
}
6062

6163
@Override
@@ -75,7 +77,7 @@ protected JInvocation addResponseEntityArg(JInvocation restCall, MethodProcessor
7577

7678
@Override
7779
protected JVar addHttpHeadersVar(JBlock body, ExecutableElement executableElement) {
78-
return generateHttpHeadersVar(body, executableElement);
80+
return generateHttpHeadersVar(activitiesHolder, body, executableElement);
7981
}
8082

8183
}

AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/processing/rest/MethodProcessor.java

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public abstract class MethodProcessor implements ElementProcessor {
4747
protected final RestAnnotationHelper restAnnotationHelper;
4848

4949
public MethodProcessor(ProcessingEnvironment processingEnv, RestImplementationsHolder restImplementationHolder) {
50-
this.restImplementationsHolder = restImplementationHolder;
50+
restImplementationsHolder = restImplementationHolder;
5151
restAnnotationHelper = new RestAnnotationHelper(processingEnv, getTarget());
5252
}
5353

@@ -75,15 +75,16 @@ protected void generateRestTemplateCallBlock(MethodProcessorHolder methodHolder)
7575
// concat root url + suffix
7676
JInvocation concatCall = JExpr.invoke(holder.rootUrlField, "concat");
7777

78-
// add url param
79-
restCall.arg(concatCall.arg(JExpr.lit(methodHolder.getUrlSuffix())));
78+
// add url param
79+
restCall.arg(concatCall.arg(JExpr.lit(methodHolder.getUrlSuffix())));
8080

81-
JClass httpMethod = holder.refClass(CanonicalNameConstants.HTTP_METHOD);
81+
EBeansHolder activitiesHolder = methodHolder.getActivitiesHolder();
82+
JClass httpMethod = activitiesHolder.refClass(CanonicalNameConstants.HTTP_METHOD);
8283
// add method type param
8384
String restMethodInCapitalLetters = getTarget().getSimpleName().toUpperCase();
8485
restCall.arg(httpMethod.staticRef(restMethodInCapitalLetters));
8586

86-
TreeMap<String, JVar> methodParams = (TreeMap<String, JVar>) generateMethodParamsVar(method, executableElement, holder);
87+
TreeMap<String, JVar> methodParams = (TreeMap<String, JVar>) generateMethodParamsVar(activitiesHolder, method, executableElement, holder);
8788

8889
// update method holder
8990
methodHolder.setBody(body);
@@ -111,10 +112,11 @@ protected void generateRestTemplateCallBlock(MethodProcessorHolder methodHolder)
111112
protected abstract JInvocation addResultCallMethod(JInvocation restCall, MethodProcessorHolder methodHolder);
112113

113114
private void insertRestCallInBody(JBlock body, JInvocation restCall, boolean methodReturnVoid) {
114-
if (methodReturnVoid)
115+
if (methodReturnVoid) {
115116
body.add(restCall);
116-
else
117+
} else {
117118
body._return(restCall);
119+
}
118120
}
119121

120122
private JVar generateHashMapVar(MethodProcessorHolder methodHolder) {
@@ -139,26 +141,26 @@ private JVar generateHashMapVar(MethodProcessorHolder methodHolder) {
139141

140142
protected JVar generateHttpEntityVar(MethodProcessorHolder methodHolder) {
141143
ExecutableElement executableElement = (ExecutableElement) methodHolder.getElement();
142-
RestImplementationHolder holder = restImplementationsHolder.getEnclosingHolder(executableElement);
143-
JClass httpEntity = holder.refClass(CanonicalNameConstants.HTTP_ENTITY);
144+
EBeansHolder activitiesHolder = methodHolder.getActivitiesHolder();
145+
JClass httpEntity = activitiesHolder.refClass(CanonicalNameConstants.HTTP_ENTITY);
144146
JInvocation newHttpEntityVarCall;
145147

146148
TreeMap<String, JVar> methodParams = methodHolder.getMethodParams();
147149
JVar entitySentToServer = null;
148-
JType entityType = null;
150+
JType entityType = null;
149151
if (!methodParams.isEmpty()) {
150152
entitySentToServer = methodParams.firstEntry().getValue();
151153
entityType = entitySentToServer.type();
152154
}
153-
155+
154156
if (entitySentToServer != null) {
155157
newHttpEntityVarCall = JExpr._new(httpEntity.narrow(entityType));
156158
} else {
157159
newHttpEntityVarCall = JExpr._new(httpEntity.narrow(Object.class));
158160
}
159161

160162
JBlock body = methodHolder.getBody();
161-
JVar httpHeadersVar = generateHttpHeadersVar(body, executableElement);
163+
JVar httpHeadersVar = generateHttpHeadersVar(activitiesHolder, body, executableElement);
162164

163165
boolean hasHeaders = httpHeadersVar != null;
164166

@@ -183,18 +185,17 @@ protected JVar generateHttpEntityVar(MethodProcessorHolder methodHolder) {
183185
return httpEntityVar;
184186
}
185187

186-
protected JVar generateHttpHeadersVar(JBlock body, ExecutableElement executableElement) {
187-
RestImplementationHolder holder = restImplementationsHolder.getEnclosingHolder(executableElement);
188+
protected JVar generateHttpHeadersVar(EBeansHolder activitiesHolder, JBlock body, ExecutableElement executableElement) {
188189
JVar httpHeadersVar = null;
189190

190-
JClass httpHeadersClass = holder.refClass(CanonicalNameConstants.HTTP_HEADERS);
191+
JClass httpHeadersClass = activitiesHolder.refClass(CanonicalNameConstants.HTTP_HEADERS);
191192
httpHeadersVar = body.decl(httpHeadersClass, "httpHeaders", JExpr._new(httpHeadersClass));
192193

193194
String mediaType = retrieveAcceptAnnotationValue(executableElement);
194195
boolean hasMediaTypeDefined = mediaType != null;
195196
if (hasMediaTypeDefined) {
196-
JClass collectionsClass = holder.refClass(CanonicalNameConstants.COLLECTIONS);
197-
JClass mediaTypeClass = holder.refClass(CanonicalNameConstants.MEDIA_TYPE);
197+
JClass collectionsClass = activitiesHolder.refClass(CanonicalNameConstants.COLLECTIONS);
198+
JClass mediaTypeClass = activitiesHolder.refClass(CanonicalNameConstants.MEDIA_TYPE);
198199

199200
JInvocation mediaTypeListParam = collectionsClass.staticInvoke("singletonList").arg(mediaTypeClass.staticRef(mediaType));
200201
body.add(JExpr.invoke(httpHeadersVar, "setAccept").arg(mediaTypeListParam));
@@ -215,7 +216,7 @@ private String retrieveAcceptAnnotationValue(ExecutableElement executableElement
215216
}
216217
}
217218

218-
private Map<String, JVar> generateMethodParamsVar(JMethod method, ExecutableElement executableElement, RestImplementationHolder holder) {
219+
private Map<String, JVar> generateMethodParamsVar(EBeansHolder activitiesHolder, JMethod method, ExecutableElement executableElement, RestImplementationHolder holder) {
219220
List<? extends VariableElement> params = executableElement.getParameters();
220221
TreeMap<String, JVar> methodParams = new TreeMap<String, JVar>();
221222
for (VariableElement parameter : params) {
@@ -224,7 +225,7 @@ private Map<String, JVar> generateMethodParamsVar(JMethod method, ExecutableElem
224225

225226
// TODO check in validator that params are not generic. Or create a
226227
// helper to fix that case and generate the right code.
227-
JVar param = method.param(holder.refClass(paramType), paramName);
228+
JVar param = method.param(activitiesHolder.refClass(paramType), paramName);
228229
methodParams.put(paramName, param);
229230
}
230231

0 commit comments

Comments
 (0)