Skip to content

Commit 48750be

Browse files
Fixed StackOverflow issue for @textchange
1 parent ae793d1 commit 48750be

1 file changed

Lines changed: 13 additions & 12 deletions

File tree

  • AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/processing

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

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import com.googlecode.androidannotations.rclass.IRClass;
3232
import com.sun.codemodel.JBlock;
3333
import com.sun.codemodel.JCodeModel;
34+
import com.sun.codemodel.JExpression;
3435
import com.sun.codemodel.JFieldRef;
3536
import com.sun.codemodel.JInvocation;
3637
import com.sun.codemodel.JMethod;
@@ -42,7 +43,7 @@
4243
public class TextChangeProcessor implements ElementProcessor {
4344

4445
private final TextWatcherHelper helper;
45-
46+
4647
private final APTCodeModelHelper codeModelHelper;
4748

4849
public TextChangeProcessor(ProcessingEnvironment processingEnv, IRClass rClass) {
@@ -71,16 +72,15 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder activiti
7172
int charSequenceParameterPosition = -1;
7273
int viewParameterPosition = -1;
7374
TypeMirror viewParameterType = null;
74-
75-
for (int i = 0 ; i < parameters.size() ; i++) {
75+
76+
for (int i = 0; i < parameters.size(); i++) {
7677
VariableElement parameter = parameters.get(i);
7778
String parameterName = parameter.toString();
7879
TypeMirror parameterType = parameter.asType();
79-
80+
8081
if ("java.lang.CharSequence".equals(parameterType.toString())) {
8182
charSequenceParameterPosition = i;
82-
} else if (parameterType.getKind() == TypeKind.INT
83-
|| "java.lang.integer".equals(parameterType.toString())) {
83+
} else if (parameterType.getKind() == TypeKind.INT || "java.lang.integer".equals(parameterType.toString())) {
8484
if ("start".equals(parameterName)) {
8585
startParameterPosition = i;
8686
} else if ("count".equals(parameterName)) {
@@ -96,9 +96,9 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder activiti
9696
}
9797
}
9898
}
99-
99+
100100
TextChange annotation = element.getAnnotation(TextChange.class);
101-
101+
102102
List<JFieldRef> idsRefs = helper.extractFieldRefsFromAnnotationValues(element, annotation.value(), "TextChanged", holder);
103103

104104
for (JFieldRef idRef : idsRefs) {
@@ -109,17 +109,18 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder activiti
109109

110110
JBlock previousBody = codeModelHelper.removeBody(methodToCall);
111111
JBlock methodBody = methodToCall.body();
112-
112+
113113
methodBody.add(previousBody);
114-
textChangeCall = methodBody.invoke(methodName);
114+
JExpression activityRef = holder.eBean.staticRef("this");
115+
textChangeCall = methodBody.invoke(activityRef, methodName);
115116

116-
for (int i = 0 ; i < parameters.size() ; i++) {
117+
for (int i = 0; i < parameters.size(); i++) {
117118
if (i == startParameterPosition) {
118119
JVar startParameter = codeModelHelper.findParameterByName(methodToCall, "start");
119120
textChangeCall.arg(startParameter);
120121
} else if (i == countParameterPosition) {
121122
JVar countParameter = codeModelHelper.findParameterByName(methodToCall, "count");
122-
textChangeCall.arg(countParameter);
123+
textChangeCall.arg(countParameter);
123124
} else if (i == beforeParameterPosition) {
124125
JVar beforeParameter = codeModelHelper.findParameterByName(methodToCall, "before");
125126
textChangeCall.arg(beforeParameter);

0 commit comments

Comments
 (0)