Skip to content

Commit 8450cc6

Browse files
committed
Rename Result to OnActivityResult.Extra
1 parent f8e9fba commit 8450cc6

8 files changed

Lines changed: 88 additions & 107 deletions

File tree

‎AndroidAnnotations/androidannotations-api/src/main/java/org/androidannotations/annotations/OnActivityResult.java‎

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
* <ul>
4141
* <li>A {@link android.content.Intent} that contains data</li>
4242
* <li>An <code>int</code> or an {@link java.lang.Integer} to get the resultCode</li>
43+
* <li>Any native, {@link android.os.Parcelable} or {@link java.io.Serializable} parameter
44+
* annotated with {@link org.androidannotations.annotations.OnActivityResult.Extra} to get an object put in the extras of the intent.</li>
4345
* </ul>
4446
*
4547
* <blockquote>
@@ -60,7 +62,7 @@
6062
* }
6163
*
6264
* &#064;OnActivityResult(<b>ANOTHER_REQUEST_CODE</b>)
63-
* void onResult() {
65+
* void onResult(&#064;OnActivityResult.Extra anExtra) {
6466
* }
6567
* </pre>
6668
*
@@ -77,4 +79,44 @@
7779

7880
int value();
7981

82+
/**
83+
* <p>
84+
* Use on any native, {@link android.os.Parcelable} or {@link java.io.Serializable} parameter of an
85+
* {@link OnActivityResult} annotated method to bind it with the value from the Intent.
86+
* </p>
87+
* <p>
88+
* The annotation value is the key used for the result data. If not set, the field name
89+
* will be used as the key.
90+
* </p>
91+
*
92+
* <blockquote>
93+
*
94+
* Some usage examples of &#064;Result annotation:
95+
*
96+
* <pre>
97+
* &#064;OnActivityResult(REQUEST_CODE)
98+
* void onResult(int resultCode, Intent data, <b>@Extra String value</b>) {
99+
* }
100+
*
101+
* &#064;OnActivityResult(REQUEST_CODE)
102+
* void onResult(int resultCode, <b>@Extra(value = "key") String value</b>) {
103+
* }
104+
*
105+
* &#064;OnActivityResult(REQUEST_CODE)
106+
* void onResult(<b>@Extra String strVal</b>, <b>@Extra int intVal</b>) {
107+
* }
108+
* </pre>
109+
*
110+
* </blockquote>
111+
*
112+
* @see android.app.Activity#onActivityResult(int, int, Intent)
113+
* @see OnActivityResult
114+
*/
115+
116+
@Retention(RetentionPolicy.CLASS)
117+
@Target(ElementType.PARAMETER)
118+
public @interface Extra {
119+
String value() default "";
120+
}
121+
80122
}

‎AndroidAnnotations/androidannotations-api/src/main/java/org/androidannotations/annotations/Result.java‎

Lines changed: 0 additions & 65 deletions
This file was deleted.

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ public AnnotationHandlers(ProcessingEnvironment processingEnvironment) {
115115
add(new InstanceStateHandler(processingEnvironment));
116116
add(new HttpsClientHandler(processingEnvironment));
117117
add(new OnActivityResultHandler(processingEnvironment));
118+
add(new OnActivityResultExtraHandler(processingEnvironment));
118119
add(new HierarchyViewerSupportHandler(processingEnvironment));
119120
add(new WindowFeatureHandler(processingEnvironment));
120121
add(new ReceiverHandler(processingEnvironment));

AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/handler/ResultHandler.java renamed to AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/handler/OnActivityResultExtraHandler.java

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,43 +15,53 @@
1515
*/
1616
package org.androidannotations.handler;
1717

18-
import javax.annotation.processing.ProcessingEnvironment;
19-
import javax.lang.model.element.Element;
20-
import javax.lang.model.element.Name;
21-
import javax.lang.model.element.VariableElement;
22-
23-
import org.androidannotations.annotations.Result;
24-
import org.androidannotations.helper.APTCodeModelHelper;
25-
import org.androidannotations.helper.AnnotationHelper;
26-
import org.androidannotations.helper.BundleHelper;
27-
import org.androidannotations.helper.IdValidatorHelper;
28-
import org.androidannotations.helper.TargetAnnotationHelper;
29-
import org.androidannotations.helper.ValidatorHelper;
30-
import org.androidannotations.holder.HasOnActivityResult;
31-
import org.androidannotations.model.AnnotationElements;
32-
3318
import com.sun.codemodel.JBlock;
3419
import com.sun.codemodel.JClass;
3520
import com.sun.codemodel.JExpr;
3621
import com.sun.codemodel.JExpression;
3722
import com.sun.codemodel.JVar;
23+
import org.androidannotations.annotations.OnActivityResult;
24+
import org.androidannotations.helper.APTCodeModelHelper;
25+
import org.androidannotations.helper.AnnotationHelper;
26+
import org.androidannotations.helper.BundleHelper;
27+
import org.androidannotations.holder.HasOnActivityResult;
28+
import org.androidannotations.model.AnnotationElements;
3829
import org.androidannotations.process.IsValid;
3930

40-
public class ResultHandler {
31+
import javax.annotation.processing.ProcessingEnvironment;
32+
import javax.lang.model.element.Element;
33+
import javax.lang.model.element.VariableElement;
34+
35+
public class OnActivityResultExtraHandler extends BaseAnnotationHandler<HasOnActivityResult> {
4136

4237
private final static APTCodeModelHelper codeModelHelper = new APTCodeModelHelper();
4338

44-
public static JExpression getExtraValue(HasOnActivityResult holder, JBlock block,
45-
VariableElement parameter) {
46-
Result annotation = parameter.getAnnotation(Result.class);
39+
public OnActivityResultExtraHandler(ProcessingEnvironment processingEnvironment) {
40+
super(OnActivityResult.Extra.class, processingEnvironment);
41+
}
42+
43+
@Override
44+
protected void validate(Element element, AnnotationElements validatedElements, IsValid valid) {
45+
validatorHelper.enclosingMethodHasAnnotation(OnActivityResult.class, element, validatedElements, valid);
46+
47+
validatorHelper.canBePutInABundle(element, valid);
48+
}
49+
50+
@Override
51+
public void process(Element element, HasOnActivityResult holder) throws Exception {
52+
// Don't do anything
53+
}
54+
55+
public static JExpression getExtraValue(HasOnActivityResult holder, JBlock block, VariableElement parameter) {
56+
OnActivityResult.Extra annotation = parameter.getAnnotation(OnActivityResult.Extra.class);
4757
String parameterName = parameter.getSimpleName().toString();
4858
String extraKey = annotation.value();
4959
if (extraKey.isEmpty()) {
5060
extraKey = parameterName;
5161
}
5262

5363
JVar extras = holder.getOnActivityResultExtras();
54-
BundleHelper bundleHelper = new BundleHelper(new AnnotationHelper(holder.processingEnvironment()), parameter);
64+
BundleHelper bundleHelper = new BundleHelper(new AnnotationHelper(holder.processingEnvironment()), parameter.asType());
5565
JExpression restoreMethodCall = JExpr.invoke(extras, bundleHelper.getMethodNameToRestore()).arg(extraKey);
5666
JClass parameterClass = codeModelHelper.typeMirrorToJClass(parameter.asType(), holder);
5767
if (bundleHelper.restoreCallNeedCastStatement()) {

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

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
import com.sun.codemodel.JInvocation;
2121
import com.sun.codemodel.JVar;
2222
import org.androidannotations.annotations.OnActivityResult;
23-
import org.androidannotations.annotations.Result;
24-
import org.androidannotations.helper.APTCodeModelHelper;
2523
import org.androidannotations.helper.CanonicalNameConstants;
2624
import org.androidannotations.holder.HasOnActivityResult;
2725
import org.androidannotations.model.AnnotationElements;
@@ -38,8 +36,6 @@
3836

3937
public class OnActivityResultHandler extends BaseAnnotationHandler<HasOnActivityResult> {
4038

41-
private final APTCodeModelHelper codeModelHelper = new APTCodeModelHelper();
42-
4339
public OnActivityResultHandler(ProcessingEnvironment processingEnvironment) {
4440
super(OnActivityResult.class, processingEnvironment);
4541
}
@@ -75,9 +71,8 @@ public void process(Element element, HasOnActivityResult holder) throws Exceptio
7571
for (VariableElement parameter : parameters) {
7672
TypeMirror parameterType = parameter.asType();
7773

78-
Result resultAnnotation = parameter.getAnnotation(Result.class);
79-
if (resultAnnotation != null) {
80-
JExpression extraParameter = ResultHandler.getExtraValue(holder, onResultBlock, parameter);
74+
if (parameter.getAnnotation(OnActivityResult.Extra.class) != null) {
75+
JExpression extraParameter = OnActivityResultExtraHandler.getExtraValue(holder, onResultBlock, parameter);
8176
onResultArgs.add(extraParameter);
8277
} else if (CanonicalNameConstants.INTENT.equals(parameterType.toString())) {
8378
JVar intentParameter = holder.getOnActivityResultDataParam();

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
import org.androidannotations.annotations.EIntentService;
2222
import org.androidannotations.annotations.EReceiver;
2323
import org.androidannotations.annotations.EService;
24+
import org.androidannotations.annotations.OnActivityResult;
2425
import org.androidannotations.annotations.Receiver;
25-
import org.androidannotations.annotations.Result;
2626
import org.androidannotations.annotations.Trace;
2727
import org.androidannotations.annotations.ViewById;
2828
import org.androidannotations.annotations.WakeLock;
@@ -1398,7 +1398,7 @@ public void hasOnResultMethodParameters(ExecutableElement executableElement, IsV
13981398
boolean intentParameterFound = false;
13991399
for (VariableElement parameter : parameters) {
14001400
TypeMirror parameterType = parameter.asType();
1401-
if (parameter.getAnnotation(Result.class) != null) {
1401+
if (parameter.getAnnotation(OnActivityResult.Extra.class) != null) {
14021402
continue;
14031403
}
14041404
if (parameterType.toString().equals(CanonicalNameConstants.INTEGER) //

‎AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/AwaitingResultActivity.java‎

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,13 @@
1515
*/
1616
package org.androidannotations.test15;
1717

18-
import java.util.ArrayList;
19-
20-
import org.androidannotations.annotations.EActivity;
21-
import org.androidannotations.annotations.OnActivityResult;
22-
import org.androidannotations.annotations.Result;
23-
2418
import android.app.Activity;
2519
import android.content.Intent;
2620
import android.net.Uri;
21+
import org.androidannotations.annotations.EActivity;
22+
import org.androidannotations.annotations.OnActivityResult;
23+
24+
import java.util.ArrayList;
2725

2826
@EActivity(R.layout.views_injected)
2927
public class AwaitingResultActivity extends Activity {
@@ -71,8 +69,9 @@ void onResultWithIntegerResultCode(Integer resultCodeInteger) {
7169
}
7270

7371
@OnActivityResult(FORTH_REQUEST)
74-
void onResultWithResultExtra(int resultCode, @Result("value") int i, @Result String s, @Result Uri uri,
75-
@Result ArrayList<Uri> uris, @Result String[] strings) {
72+
void onResultWithResultExtra(int resultCode, @OnActivityResult.Extra("value") int i, @OnActivityResult.Extra String s,
73+
@OnActivityResult.Extra Uri uri, @OnActivityResult.Extra ArrayList<Uri> uris,
74+
@OnActivityResult.Extra String[] strings) {
7675
onResultWithResultExtraCodeCalled = true;
7776
}
7877
}

‎AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/AwaitingResultFragment.java‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
import android.net.Uri;
2121
import org.androidannotations.annotations.EFragment;
2222
import org.androidannotations.annotations.OnActivityResult;
23-
import org.androidannotations.annotations.Result;
24-
2523
import java.util.ArrayList;
2624

2725
@EFragment(R.layout.views_injected)
@@ -70,7 +68,8 @@ void onResultWithIntegerResultCode(Integer resultCodeInteger) {
7068
}
7169

7270
@OnActivityResult(FORTH_REQUEST)
73-
void onResultWithResultExtra(int resultCode, @Result("value") int i, @Result String s, @Result Uri uri,
74-
@Result ArrayList<Uri> uris, @Result String[] strings) {
71+
void onResultWithResultExtra(int resultCode, @OnActivityResult.Extra("value") int i, @OnActivityResult.Extra String s,
72+
@OnActivityResult.Extra Uri uri, @OnActivityResult.Extra ArrayList<Uri> uris,
73+
@OnActivityResult.Extra String[] strings) {
7574
}
7675
}

0 commit comments

Comments
 (0)