Skip to content

Commit 129afbf

Browse files
committed
Fixes the import problem, so that full qualified names are not used anymore in the generated code
1 parent 32d7434 commit 129afbf

19 files changed

Lines changed: 231 additions & 206 deletions

‎AndroidAnnotations/src/main/java/com/googlecode/androidannotations/experimental/FileSystemLayoutInnerClass.java‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
import java.util.HashMap;
66
import java.util.Map;
77

8+
import com.googlecode.androidannotations.processing.ActivityHolder;
89
import com.googlecode.androidannotations.rclass.IRInnerClass;
910
import com.sun.codemodel.JCodeModel;
1011
import com.sun.codemodel.JFieldRef;
1112

13+
@SuppressWarnings("all")
1214
public class FileSystemLayoutInnerClass implements IRInnerClass{
1315

1416
private final Map<Integer, String> idQualifiedNamesByIdValues = new HashMap<Integer, String>();
@@ -58,24 +60,24 @@ public String getIdQualifiedName(String name) {
5860
}
5961

6062
@Override
61-
public JFieldRef getIdStaticRef(Integer idValue, JCodeModel codeModel) {
63+
public JFieldRef getIdStaticRef(Integer idValue, ActivityHolder holder) {
6264
String layoutFieldQualifiedName = getIdQualifiedName(idValue);
63-
return extractIdStaticRef(codeModel, layoutFieldQualifiedName);
65+
return extractIdStaticRef(holder, layoutFieldQualifiedName);
6466
}
6567

6668
@Override
67-
public JFieldRef getIdStaticRef(String name, JCodeModel codeModel) {
69+
public JFieldRef getIdStaticRef(String name, ActivityHolder holder) {
6870
String layoutFieldQualifiedName = getIdQualifiedName(name);
69-
return extractIdStaticRef(codeModel, layoutFieldQualifiedName);
71+
return extractIdStaticRef(holder, layoutFieldQualifiedName);
7072
}
7173

72-
private JFieldRef extractIdStaticRef(JCodeModel codeModel, String layoutFieldQualifiedName) {
74+
private JFieldRef extractIdStaticRef(ActivityHolder holder, String layoutFieldQualifiedName) {
7375
if (layoutFieldQualifiedName != null) {
7476
int fieldSuffix = layoutFieldQualifiedName.lastIndexOf('.');
7577
String fieldName = layoutFieldQualifiedName.substring(fieldSuffix + 1);
7678
String rInnerClassName = layoutFieldQualifiedName.substring(0, fieldSuffix);
7779

78-
return codeModel.ref(rInnerClassName).staticRef(fieldName);
80+
return holder.refClass(rInnerClassName).staticRef(fieldName);
7981
} else {
8082
return null;
8183
}

‎AndroidAnnotations/src/main/java/com/googlecode/androidannotations/experimental/FileSystemRClass.java‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.googlecode.androidannotations.rclass.RInnerClass;
2828
import com.googlecode.androidannotations.rclass.IRClass.Res;
2929

30+
@SuppressWarnings("all")
3031
public class FileSystemRClass implements IRClass {
3132

3233
private final Map<String, RInnerClass> rClass = new HashMap<String, RInnerClass>();

‎AndroidAnnotations/src/main/java/com/googlecode/androidannotations/experimental/FileSystemRClassFinder.java‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.googlecode.androidannotations.rclass.IRClass;
3131
import com.googlecode.androidannotations.rclass.RClassFinder;
3232

33+
@SuppressWarnings("all")
3334
public class FileSystemRClassFinder extends AnnotationHelper implements RClassFinder {
3435

3536
public FileSystemRClassFinder(ProcessingEnvironment processingEnv) {

‎AndroidAnnotations/src/main/java/com/googlecode/androidannotations/model/AndroidSystemServices.java‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
import javax.lang.model.type.TypeMirror;
2222

23-
import com.sun.codemodel.JCodeModel;
23+
import com.googlecode.androidannotations.processing.ActivityHolder;
2424
import com.sun.codemodel.JFieldRef;
2525

2626
public class AndroidSystemServices {
@@ -53,17 +53,17 @@ public String getServiceConstant(TypeMirror serviceType) {
5353
return registeredServices.get(serviceType.toString());
5454
}
5555

56-
public JFieldRef getServiceConstant(TypeMirror serviceType, JCodeModel codeModel) {
57-
return extractIdStaticRef(codeModel, registeredServices.get(serviceType.toString()));
56+
public JFieldRef getServiceConstant(TypeMirror serviceType, ActivityHolder holder) {
57+
return extractIdStaticRef(holder, registeredServices.get(serviceType.toString()));
5858
}
5959

60-
private JFieldRef extractIdStaticRef(JCodeModel codeModel, String staticFieldQualifiedName) {
60+
private JFieldRef extractIdStaticRef(ActivityHolder holder, String staticFieldQualifiedName) {
6161
if (staticFieldQualifiedName != null) {
6262
int fieldSuffix = staticFieldQualifiedName.lastIndexOf('.');
6363
String fieldName = staticFieldQualifiedName.substring(fieldSuffix + 1);
6464
String className = staticFieldQualifiedName.substring(0, fieldSuffix);
6565

66-
return codeModel.ref(className).staticRef(fieldName);
66+
return holder.refClass(className).staticRef(fieldName);
6767
} else {
6868
return null;
6969
}
Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package com.googlecode.androidannotations.processing;
22

3+
import java.util.HashMap;
4+
import java.util.Map;
5+
36
import com.sun.codemodel.JBlock;
47
import com.sun.codemodel.JClass;
58
import com.sun.codemodel.JDefinedClass;
@@ -8,14 +11,31 @@
811

912
public class ActivityHolder {
1013

11-
public JDefinedClass activity;
12-
public JMethod beforeSetContentView;
13-
public JVar beforeSetContentViewSavedInstanceStateParam;
14-
public JMethod afterSetContentView;
15-
public JBlock extrasNotNullBlock;
16-
public JVar extras;
17-
public JClass bundleClass;
14+
public JDefinedClass activity;
15+
public JMethod beforeSetContentView;
16+
public JVar beforeSetContentViewSavedInstanceStateParam;
17+
public JMethod afterSetContentView;
18+
public JBlock extrasNotNullBlock;
19+
public JVar extras;
20+
public JClass bundleClass;
1821
public JVar resources;
19-
22+
23+
private Map<String, JClass> loadedClasses = new HashMap<String, JClass>();
24+
25+
public JClass refClass(String fullyQualifiedClassName) {
26+
27+
JClass refClass = loadedClasses.get(fullyQualifiedClassName);
28+
29+
if (refClass == null) {
30+
refClass = activity.owner().ref(fullyQualifiedClassName);
31+
loadedClasses.put(fullyQualifiedClassName, refClass);
32+
}
33+
34+
return refClass;
35+
}
36+
37+
public JClass refClass(Class<?> clazz) {
38+
return activity.owner().ref(clazz);
39+
}
2040

2141
}

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public void process(Element element, JCodeModel codeModel, ActivitiesHolder acti
9090
ExecutableElement executableElement = (ExecutableElement) element;
9191
for (VariableElement parameter : executableElement.getParameters()) {
9292
String parameterName = parameter.getSimpleName().toString();
93-
JClass parameterClass = codeModel.ref(parameter.asType().toString());
93+
JClass parameterClass = holder.refClass(parameter.asType().toString());
9494
JVar param = backgroundMethod.param(JMod.FINAL, parameterClass, parameterName);
9595
parameters.add(param);
9696
}
@@ -109,11 +109,10 @@ public void process(Element element, JCodeModel codeModel, ActivitiesHolder acti
109109
for (JVar param : parameters) {
110110
superCall.arg(param);
111111
}
112-
113-
JCatchBlock runCatch = runTry._catch(codeModel.ref(RuntimeException.class));
112+
JCatchBlock runCatch = runTry._catch(holder.refClass(RuntimeException.class));
114113
JVar exceptionParam = runCatch.param("e");
115114

116-
JClass logClass = codeModel.ref("android.util.Log");
115+
JClass logClass = holder.refClass("android.util.Log");
117116

118117
JInvocation errorInvoke = logClass.staticInvoke("e");
119118

‎AndroidAnnotations/src/main/java/com/googlecode/androidannotations/processing/ClickProcessor.java‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,11 @@ public void process(Element element, JCodeModel codeModel, ActivitiesHolder acti
106106

107107
boolean hasViewParameter = parameters.size() == 1;
108108

109-
JFieldRef idRef = extractClickQualifiedId(element, codeModel);
109+
JFieldRef idRef = extractClickQualifiedId(element, holder);
110110

111-
JDefinedClass onClickListenerClass = codeModel.anonymousClass(codeModel.ref("android.view.View.OnClickListener"));
111+
JDefinedClass onClickListenerClass = codeModel.anonymousClass(holder.refClass("android.view.View.OnClickListener"));
112112
JMethod onClickMethod = onClickListenerClass.method(JMod.PUBLIC, codeModel.VOID, "onClick");
113-
JClass viewClass = codeModel.ref("android.view.View");
113+
JClass viewClass = holder.refClass("android.view.View");
114114
JVar onClickViewParam = onClickMethod.param(viewClass, "view");
115115

116116
JInvocation clickCall = onClickMethod.body().invoke(methodName);
@@ -126,7 +126,7 @@ public void process(Element element, JCodeModel codeModel, ActivitiesHolder acti
126126

127127
}
128128

129-
private JFieldRef extractClickQualifiedId(Element element, JCodeModel codeModel) {
129+
private JFieldRef extractClickQualifiedId(Element element, ActivityHolder holder) {
130130
Click annotation = element.getAnnotation(Click.class);
131131
int idValue = annotation.value();
132132
IRInnerClass rInnerClass = rClass.get(Res.ID);
@@ -136,10 +136,10 @@ private JFieldRef extractClickQualifiedId(Element element, JCodeModel codeModel)
136136
if (lastIndex != -1) {
137137
fieldName = fieldName.substring(0, lastIndex);
138138
}
139-
return rInnerClass.getIdStaticRef(fieldName, codeModel);
139+
return rInnerClass.getIdStaticRef(fieldName, holder);
140140

141141
} else {
142-
return rInnerClass.getIdStaticRef(idValue, codeModel);
142+
return rInnerClass.getIdStaticRef(idValue, holder);
143143
}
144144
}
145145

‎AndroidAnnotations/src/main/java/com/googlecode/androidannotations/processing/EnhanceProcessor.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public void process(Element element, JCodeModel codeModel, ActivitiesHolder acti
100100

101101
holder.activity._extends(annotatedActivity);
102102

103-
holder.bundleClass = codeModel.ref("android.os.Bundle");
103+
holder.bundleClass = holder.refClass("android.os.Bundle");
104104

105105
// beforeSetContentView
106106
holder.beforeSetContentView = holder.activity.method(JMod.PRIVATE, codeModel.VOID, "beforeSetContentView_");
@@ -125,7 +125,7 @@ public void process(Element element, JCodeModel codeModel, ActivitiesHolder acti
125125
JFieldRef contentViewId;
126126
if (layoutIdValue != Id.DEFAULT_VALUE) {
127127
IRInnerClass rInnerClass = rClass.get(Res.LAYOUT);
128-
contentViewId = rInnerClass.getIdStaticRef(layoutIdValue, codeModel);
128+
contentViewId = rInnerClass.getIdStaticRef(layoutIdValue, holder);
129129
} else {
130130
contentViewId = null;
131131
}

‎AndroidAnnotations/src/main/java/com/googlecode/androidannotations/processing/ExtraProcessor.java‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ public void process(Element element, JCodeModel codeModel, ActivitiesHolder acti
7373
Extra annotation = element.getAnnotation(Extra.class);
7474
String extraKey = annotation.value();
7575
String fieldName = element.getSimpleName().toString();
76-
JClass fieldType = codeModel.ref(element.asType().toString());
77-
7876
ActivityHolder holder = activitiesHolder.getActivityHolder(element);
77+
JClass fieldType = holder.refClass(element.asType().toString());
78+
7979

8080
JBlock methodBody = holder.beforeSetContentView.body();
8181

@@ -94,10 +94,10 @@ public void process(Element element, JCodeModel codeModel, ActivitiesHolder acti
9494

9595
containsKeyTry.body().assign(extraField, JExpr.cast(fieldType, holder.extras.invoke("get").arg(extraKey)));
9696

97-
JCatchBlock containsKeyCatch = containsKeyTry._catch(codeModel.ref(ClassCastException.class));
97+
JCatchBlock containsKeyCatch = containsKeyTry._catch(holder.refClass(ClassCastException.class));
9898
JVar exceptionParam = containsKeyCatch.param("e");
9999

100-
JInvocation errorInvoke = codeModel.ref("android.util.Log").staticInvoke("e");
100+
JInvocation errorInvoke = holder.refClass("android.util.Log").staticInvoke("e");
101101

102102
errorInvoke.arg(holder.activity.name());
103103
errorInvoke.arg("Could not cast extra to expected type, the field is left to its default value");

‎AndroidAnnotations/src/main/java/com/googlecode/androidannotations/processing/ItemClickProcessor.java‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,12 @@ public void process(Element element, JCodeModel codeModel, ActivitiesHolder acti
111111

112112
boolean hasItemParameter = parameters.size() == 1;
113113

114-
JFieldRef idRef = extractClickQualifiedId(element, codeModel);
114+
JFieldRef idRef = extractClickQualifiedId(element, holder);
115115

116-
JDefinedClass onItemClickListenerClass = codeModel.anonymousClass(codeModel.ref("android.widget.AdapterView.OnItemClickListener"));
116+
JDefinedClass onItemClickListenerClass = codeModel.anonymousClass(holder.refClass("android.widget.AdapterView.OnItemClickListener"));
117117
JMethod onItemClickMethod = onItemClickListenerClass.method(JMod.PUBLIC, codeModel.VOID, "onItemClick");
118-
JClass adapterViewClass = codeModel.ref("android.widget.AdapterView");
119-
JClass viewClass = codeModel.ref("android.view.View");
118+
JClass adapterViewClass = holder.refClass("android.widget.AdapterView");
119+
JClass viewClass = holder.refClass("android.view.View");
120120

121121
JClass narrowAdapterViewClass = adapterViewClass.narrow(codeModel.wildcard());
122122
JVar onItemClickParentParam = onItemClickMethod.param(narrowAdapterViewClass, "parent");
@@ -129,15 +129,15 @@ public void process(Element element, JCodeModel codeModel, ActivitiesHolder acti
129129
if (hasItemParameter) {
130130
VariableElement parameter = parameters.get(0);
131131
String parameterQualifiedName = parameter.asType().toString();
132-
itemClickCall.arg(JExpr.cast(codeModel.ref(parameterQualifiedName), JExpr.invoke(onItemClickParentParam, "getAdapter").invoke("getItem").arg(onItemClickPositionParam)));
132+
itemClickCall.arg(JExpr.cast(holder.refClass(parameterQualifiedName), JExpr.invoke(onItemClickParentParam, "getAdapter").invoke("getItem").arg(onItemClickPositionParam)));
133133
}
134134

135135
JBlock body = holder.afterSetContentView.body();
136136

137137
body.add(JExpr.invoke(JExpr.cast(narrowAdapterViewClass, JExpr.invoke("findViewById").arg(idRef)),"setOnItemClickListener").arg(JExpr._new(onItemClickListenerClass)));
138138
}
139139

140-
private JFieldRef extractClickQualifiedId(Element element, JCodeModel codeModel) {
140+
private JFieldRef extractClickQualifiedId(Element element, ActivityHolder holder) {
141141
ItemClick annotation = element.getAnnotation(ItemClick.class);
142142
int idValue = annotation.value();
143143
IRInnerClass rInnerClass = rClass.get(Res.ID);
@@ -147,10 +147,10 @@ private JFieldRef extractClickQualifiedId(Element element, JCodeModel codeModel)
147147
if (lastIndex != -1) {
148148
fieldName = fieldName.substring(0, lastIndex);
149149
}
150-
return rInnerClass.getIdStaticRef(fieldName, codeModel);
150+
return rInnerClass.getIdStaticRef(fieldName, holder);
151151

152152
} else {
153-
return rInnerClass.getIdStaticRef(idValue, codeModel);
153+
return rInnerClass.getIdStaticRef(idValue, holder);
154154
}
155155
}
156156

0 commit comments

Comments
 (0)