Skip to content

Commit 89a21f7

Browse files
committed
Use super methods in generated builders
1 parent 352809f commit 89a21f7

9 files changed

Lines changed: 25 additions & 66 deletions

File tree

‎AndroidAnnotations/androidannotations-api/src/main/java/org/androidannotations/api/builder/IntentBuilder.java‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ public I flags(int flags) {
3737
return (I) this;
3838
}
3939

40+
public I action(String action) {
41+
intent.setAction(action);
42+
return (I) this;
43+
}
44+
4045
public I extras(Bundle bundle) {
4146
intent.putExtras(bundle);
4247
return (I) this;

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/handler/FragmentArgHandler.java‎

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import javax.lang.model.element.Element;
3030
import javax.lang.model.type.TypeMirror;
3131

32-
import static com.sun.codemodel.JExpr._this;
32+
import static com.sun.codemodel.JExpr._super;
3333
import static com.sun.codemodel.JExpr.lit;
3434
import static com.sun.codemodel.JMod.*;
3535

@@ -101,13 +101,11 @@ private void injectArgInComponent(Element element, EFragmentHolder holder, Bundl
101101

102102
private void createBuilderInjectionMethod(Element element, EFragmentHolder holder, BundleHelper bundleHelper, JFieldVar argKeyStaticField, String fieldName) {
103103
JDefinedClass builderClass = holder.getBuilderClass();
104-
JFieldRef builderArgsField = holder.getBuilderArgsField();
105104
TypeMirror elementType = element.asType();
106105
JClass paramClass = codeModelHelper.typeMirrorToJClass(elementType, holder);
107106

108107
JMethod method = builderClass.method(PUBLIC, builderClass, fieldName);
109108
JVar arg = method.param(paramClass, fieldName);
110-
method.body().invoke(builderArgsField, bundleHelper.getMethodNameToSave()).arg(argKeyStaticField).arg(arg);
111-
method.body()._return(_this());
109+
method.body()._return(_super().invoke(bundleHelper.getMethodNameToSave()).arg(argKeyStaticField).arg(arg));
112110
}
113111
}

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/handler/ServiceActionHandler.java‎

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,7 @@
1515
*/
1616
package org.androidannotations.handler;
1717

18-
import static com.sun.codemodel.JExpr._null;
19-
import static com.sun.codemodel.JExpr.lit;
20-
import static com.sun.codemodel.JMod.FINAL;
21-
import static com.sun.codemodel.JMod.PUBLIC;
22-
import static com.sun.codemodel.JMod.STATIC;
23-
24-
import java.util.List;
25-
26-
import javax.annotation.processing.ProcessingEnvironment;
27-
import javax.lang.model.element.Element;
28-
import javax.lang.model.element.ExecutableElement;
29-
import javax.lang.model.element.VariableElement;
30-
18+
import com.sun.codemodel.*;
3119
import org.androidannotations.annotations.ServiceAction;
3220
import org.androidannotations.helper.APTCodeModelHelper;
3321
import org.androidannotations.helper.AnnotationHelper;
@@ -37,14 +25,15 @@
3725
import org.androidannotations.model.AnnotationElements;
3826
import org.androidannotations.process.IsValid;
3927

40-
import com.sun.codemodel.JBlock;
41-
import com.sun.codemodel.JClass;
42-
import com.sun.codemodel.JExpr;
43-
import com.sun.codemodel.JExpression;
44-
import com.sun.codemodel.JFieldVar;
45-
import com.sun.codemodel.JInvocation;
46-
import com.sun.codemodel.JMethod;
47-
import com.sun.codemodel.JVar;
28+
import javax.annotation.processing.ProcessingEnvironment;
29+
import javax.lang.model.element.Element;
30+
import javax.lang.model.element.ExecutableElement;
31+
import javax.lang.model.element.VariableElement;
32+
import java.util.List;
33+
34+
import static com.sun.codemodel.JExpr._null;
35+
import static com.sun.codemodel.JExpr.lit;
36+
import static com.sun.codemodel.JMod.*;
4837

4938
public class ServiceActionHandler extends BaseAnnotationHandler<EIntentServiceHolder> {
5039

@@ -138,7 +127,7 @@ private void addActionToIntentBuilder(EIntentServiceHolder holder, ExecutableEle
138127
JBlock body = method.body();
139128

140129
// setAction
141-
body.invoke(holder.getIntentField(), "setAction").arg(actionKeyField);
130+
body.invoke("action").arg(actionKeyField);
142131

143132
// For each method params, we get put value into extras
144133
List<? extends VariableElement> methodParameters = executableElement.getParameters();

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/ActivityIntentBuilder.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ private void overrideStartForResultMethod() {
9999
if (fragmentSupportField != null) {
100100
condition = body._if(fragmentSupportField.ne(JExpr._null()));
101101
condition._then() //
102-
.invoke(fragmentSupportField, "startActivityForResult").arg(holder.getIntentField()).arg(requestCode);
102+
.invoke(fragmentSupportField, "startActivityForResult").arg(intentField).arg(requestCode);
103103
}
104104
if (fragmentField != null) {
105105
if (condition == null) {
@@ -108,7 +108,7 @@ private void overrideStartForResultMethod() {
108108
condition = condition._elseif(fragmentField.ne(JExpr._null()));
109109
}
110110
condition._then() //
111-
.invoke(fragmentField, "startActivityForResult").arg(holder.getIntentField()).arg(requestCode);
111+
.invoke(fragmentField, "startActivityForResult").arg(intentField).arg(requestCode);
112112
}
113113
condition._else().invoke(_super(), "startForResult").arg(requestCode);
114114
}

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/IntentBuilder.java‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public abstract class IntentBuilder {
3535
protected AndroidManifest androidManifest;
3636
protected JDefinedClass builderClass;
3737
protected JFieldRef contextField;
38+
protected JFieldRef intentField;
3839
protected JClass contextClass;
3940
protected JClass intentClass;
4041
protected Map<Pair<TypeMirror, String>, JMethod> putExtraMethods = new HashMap<Pair<TypeMirror, String>, JMethod>();
@@ -63,7 +64,7 @@ private void createClass() throws JClassAlreadyExistsException {
6364
builderClass._extends(getSuperClass());
6465
holder.setIntentBuilderClass(builderClass);
6566
contextField = ref("context");
66-
holder.setIntentField(ref("intent"));
67+
intentField = ref("intent");
6768
}
6869

6970
private void createContextConstructor() {
@@ -111,16 +112,15 @@ private JMethod addPutExtraMethod(TypeMirror elementType, String parameterName,
111112
JMethod method = holder.getIntentBuilderClass().method(PUBLIC, holder.getIntentBuilderClass(), parameterName);
112113
JClass parameterClass = codeModelHelper.typeMirrorToJClass(elementType, holder);
113114
JVar extraParameterVar = method.param(parameterClass, parameterName);
114-
JBlock body = method.body();
115-
JInvocation invocation = body.invoke(holder.getIntentField(), "putExtra").arg(extraKeyField);
115+
JInvocation invocation = _super().invoke("putExtra").arg(extraKeyField);
116116
if (castToSerializable) {
117117
invocation.arg(cast(holder.classes().SERIALIZABLE, extraParameterVar));
118118
} else if (castToParcelable) {
119119
invocation.arg(cast(holder.classes().PARCELABLE, extraParameterVar));
120120
} else {
121121
invocation.arg(extraParameterVar);
122122
}
123-
body._return(_this());
123+
method.body()._return(invocation);
124124
return method;
125125
}
126126

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/holder/EActivityHolder.java‎

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ public class EActivityHolder extends EComponentWithViewSupportHolder implements
4242
private JMethod setContentViewLayout;
4343
private JVar initSavedInstanceParam;
4444
private JDefinedClass intentBuilderClass;
45-
private JFieldRef intentField;
4645
private InstanceStateHolder instanceStateHolder;
4746
private OnActivityResultHolder onActivityResultHolder;
4847
private ReceiverRegistrationHolder receiverRegistrationHolder;
@@ -414,16 +413,6 @@ public JDefinedClass getIntentBuilderClass() {
414413
return intentBuilderClass;
415414
}
416415

417-
@Override
418-
public void setIntentField(JFieldRef intentField) {
419-
this.intentField = intentField;
420-
}
421-
422-
@Override
423-
public JFieldRef getIntentField() {
424-
return intentField;
425-
}
426-
427416
public RoboGuiceHolder getRoboGuiceHolder() {
428417
if (roboGuiceHolder == null) {
429418
roboGuiceHolder = new RoboGuiceHolder(this);

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/holder/EFragmentHolder.java‎

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ public class EFragmentHolder extends EComponentWithViewSupportHolder implements
3333
private JVar inflater;
3434
private JVar container;
3535
private JDefinedClass fragmentBuilderClass;
36-
private JFieldRef fragmentArgumentsBuilderField;
3736
private JMethod injectArgsMethod;
3837
private JBlock injectArgsBlock;
3938
private JVar injectBundleArgs;
@@ -110,7 +109,6 @@ private void setFragmentBuilder() throws JClassAlreadyExistsException {
110109
JClass superClass = refClass(org.androidannotations.api.builder.FragmentBuilder.class);
111110
superClass = superClass.narrow(fragmentBuilderClass);
112111
fragmentBuilderClass._extends(superClass);
113-
fragmentArgumentsBuilderField = ref("args");
114112
setFragmentBuilderBuild();
115113
setFragmentBuilderCreate();
116114
}
@@ -120,7 +118,7 @@ private void setFragmentBuilderBuild() {
120118
JBlock body = method.body();
121119

122120
JVar fragment = body.decl(generatedClass, "fragment_", _new(generatedClass));
123-
body.invoke(fragment, "setArguments").arg(fragmentArgumentsBuilderField);
121+
body.invoke(fragment, "setArguments").arg(ref("args"));
124122
body._return(fragment);
125123
}
126124

@@ -299,10 +297,6 @@ public JDefinedClass getBuilderClass() {
299297
return fragmentBuilderClass;
300298
}
301299

302-
public JFieldRef getBuilderArgsField() {
303-
return fragmentArgumentsBuilderField;
304-
}
305-
306300
public JMethod getInjectArgsMethod() {
307301
if (injectArgsMethod == null) {
308302
setInjectArgs();

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/holder/EServiceHolder.java‎

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ public class EServiceHolder extends EComponentHolder implements HasIntentBuilder
3131

3232
private ServiceIntentBuilder intentBuilder;
3333
private JDefinedClass intentBuilderClass;
34-
private JFieldRef intentField;
3534
private ReceiverRegistrationHolder receiverRegistrationHolder;
3635
private JBlock onDestroyBeforeSuperBlock;
3736

@@ -84,16 +83,6 @@ public JDefinedClass getIntentBuilderClass() {
8483
return intentBuilderClass;
8584
}
8685

87-
@Override
88-
public void setIntentField(JFieldRef intentField) {
89-
this.intentField = intentField;
90-
}
91-
92-
@Override
93-
public JFieldRef getIntentField() {
94-
return intentField;
95-
}
96-
9786
@Override
9887
public JFieldVar getIntentFilterField(String[] actions) {
9988
return receiverRegistrationHolder.getIntentFilterField(actions);

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/holder/HasIntentBuilder.java‎

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
package org.androidannotations.holder;
1717

1818
import com.sun.codemodel.JDefinedClass;
19-
import com.sun.codemodel.JFieldRef;
2019
import org.androidannotations.helper.IntentBuilder;
2120

2221
public interface HasIntentBuilder extends GeneratedClassHolder {
@@ -26,8 +25,4 @@ public interface HasIntentBuilder extends GeneratedClassHolder {
2625
public void setIntentBuilderClass(JDefinedClass intentBuilderClass);
2726

2827
public JDefinedClass getIntentBuilderClass();
29-
30-
public void setIntentField(JFieldRef intentField);
31-
32-
public JFieldRef getIntentField();
3328
}

0 commit comments

Comments
 (0)