From 9f3bd1587c93eb0a36c1b4bfaf5aa346202f6fa6 Mon Sep 17 00:00:00 2001 From: Kay-Uwe Janssen Date: Thu, 24 Nov 2016 21:15:21 +0100 Subject: [PATCH 1/4] Do not try to get byte arrays from the intent but use the bundle --- .../java/org/androidannotations/helper/BundleHelper.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/helper/BundleHelper.java b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/helper/BundleHelper.java index 956040d8a0..665a5731a9 100644 --- a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/helper/BundleHelper.java +++ b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/helper/BundleHelper.java @@ -1,5 +1,6 @@ /** * Copyright (C) 2010-2016 eBusiness Information, Excilys Group + * Copyright (C) 2016 the AndroidAnnotations project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -216,11 +217,7 @@ private boolean hasTypeArguments(TypeMirror type) { } public IJExpression getExpressionToRestoreFromIntentOrBundle(AbstractJClass variableClass, IJExpression intent, IJExpression extras, IJExpression extraKey, JMethod method) { - if ("byte[]".equals(element.toString())) { - return intent.invoke("getByteArrayExtra").arg(extraKey); - } else { - return getExpressionToRestoreFromBundle(variableClass, extras, extraKey, method); - } + return getExpressionToRestoreFromBundle(variableClass, extras, extraKey, method); } public IJExpression getExpressionToRestoreFromBundle(AbstractJClass variableClass, IJExpression bundle, IJExpression extraKey, JMethod method) { From 3c09f2380d506066fb7c404d21b766b7a45c3c78 Mon Sep 17 00:00:00 2001 From: Kay-Uwe Janssen Date: Thu, 24 Nov 2016 21:17:02 +0100 Subject: [PATCH 2/4] Add test method with byte and byte array activity extras --- .../org/androidannotations/test/AwaitingResultActivity.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/AndroidAnnotations/androidannotations-core/androidannotations-test/src/main/java/org/androidannotations/test/AwaitingResultActivity.java b/AndroidAnnotations/androidannotations-core/androidannotations-test/src/main/java/org/androidannotations/test/AwaitingResultActivity.java index af0f4f9026..58143b34c4 100644 --- a/AndroidAnnotations/androidannotations-core/androidannotations-test/src/main/java/org/androidannotations/test/AwaitingResultActivity.java +++ b/AndroidAnnotations/androidannotations-core/androidannotations-test/src/main/java/org/androidannotations/test/AwaitingResultActivity.java @@ -1,5 +1,6 @@ /** * Copyright (C) 2010-2016 eBusiness Information, Excilys Group + * Copyright (C) 2016 the AndroidAnnotations project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -32,6 +33,7 @@ public class AwaitingResultActivity extends Activity { static final int THIRD_REQUEST = 33; static final int FORTH_REQUEST = 44; static final int FIFTH_REQUEST = 55; + static final int SIXTH_REQUEST = 66; boolean onResultCalled = false; boolean onResultWithDataCalled = false; boolean onActivityResultWithResultCodeAndDataCalled = false; @@ -86,4 +88,8 @@ void onResultWithIntentExtras(Intent originalIntent, @OnActivityResult.Extra Int this.originalIntent = originalIntent; this.extraIntent = extraIntent; } + + @OnActivityResult(SIXTH_REQUEST) + void onResultWithIntentExtras(@OnActivityResult.Extra byte bytee, @OnActivityResult.Extra byte[] bytes) { + } } From 0e8318772b055a9c63e65435383b28f34429290e Mon Sep 17 00:00:00 2001 From: Kay-Uwe Janssen Date: Thu, 24 Nov 2016 21:24:25 +0100 Subject: [PATCH 3/4] Cleanup BundleHelper --- .../org/androidannotations/helper/BundleHelper.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/helper/BundleHelper.java b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/helper/BundleHelper.java index 665a5731a9..bba684266a 100644 --- a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/helper/BundleHelper.java +++ b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/helper/BundleHelper.java @@ -81,11 +81,8 @@ public class BundleHelper { private AndroidAnnotationsEnvironment environment; private AnnotationHelper annotationHelper; - private ParcelerHelper parcelerHelper; private APTCodeModelHelper codeModelHelper; - private TypeMirror element; - private boolean restoreCallNeedCastStatement = false; private boolean restoreCallNeedsSuppressWarning = false; private boolean parcelerBean = false; @@ -99,8 +96,6 @@ public BundleHelper(AndroidAnnotationsEnvironment environment, TypeMirror elemen this.environment = environment; annotationHelper = new AnnotationHelper(environment); codeModelHelper = new APTCodeModelHelper(environment); - parcelerHelper = new ParcelerHelper(environment); - this.element = element; String typeString = element.toString(); TypeMirror type = element; @@ -178,6 +173,8 @@ public BundleHelper(AndroidAnnotationsEnvironment environment, TypeMirror elemen boolean hasTypeArguments = element.getKind() == TypeKind.DECLARED && hasTypeArguments(element) || // element.getKind() == TypeKind.TYPEVAR && hasTypeArguments(getUpperBound(element)); + ParcelerHelper parcelerHelper = new ParcelerHelper(environment); + if (isTypeParcelable(type)) { methodNameToSave = "put" + "Parcelable"; methodNameToRestore = "get" + "Parcelable"; @@ -197,10 +194,6 @@ public BundleHelper(AndroidAnnotationsEnvironment environment, TypeMirror elemen } } - public String getMethodNameToSave() { - return methodNameToSave; - } - private boolean isTypeParcelable(TypeMirror typeMirror) { TypeMirror parcelableType = annotationHelper.typeElementFromQualifiedName(CanonicalNameConstants.PARCELABLE).asType(); return annotationHelper.isSubtype(typeMirror, parcelableType); From 59a266498b9b168b86bf80fd98d3ba3a4d467938 Mon Sep 17 00:00:00 2001 From: Kay-Uwe Janssen Date: Thu, 24 Nov 2016 21:38:58 +0100 Subject: [PATCH 4/4] Remove no longer necessary `getExpressionToRestoreFromIntentOrBundle`from BundleHelper and clean the caller --- .../java/org/androidannotations/helper/BundleHelper.java | 4 ---- .../internal/core/handler/ExtraHandler.java | 5 ++--- .../internal/core/handler/ExtraParameterHandler.java | 9 +++++---- .../internal/core/handler/OnActivityResultHandler.java | 3 ++- .../internal/core/handler/ReceiverActionHandler.java | 3 ++- .../internal/core/handler/ReceiverHandler.java | 3 ++- .../internal/core/handler/ServiceActionHandler.java | 3 ++- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/helper/BundleHelper.java b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/helper/BundleHelper.java index bba684266a..22a202d1b0 100644 --- a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/helper/BundleHelper.java +++ b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/helper/BundleHelper.java @@ -209,10 +209,6 @@ private boolean hasTypeArguments(TypeMirror type) { return declaredType.getTypeArguments().size() > 0; } - public IJExpression getExpressionToRestoreFromIntentOrBundle(AbstractJClass variableClass, IJExpression intent, IJExpression extras, IJExpression extraKey, JMethod method) { - return getExpressionToRestoreFromBundle(variableClass, extras, extraKey, method); - } - public IJExpression getExpressionToRestoreFromBundle(AbstractJClass variableClass, IJExpression bundle, IJExpression extraKey, JMethod method) { IJExpression expressionToRestore; if (methodNameToRestore.equals("getParcelableArray")) { diff --git a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ExtraHandler.java b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ExtraHandler.java index aaeedf7aae..8c6a5299ec 100644 --- a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ExtraHandler.java +++ b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ExtraHandler.java @@ -1,5 +1,6 @@ /** * Copyright (C) 2010-2016 eBusiness Information, Excilys Group + * Copyright (C) 2016 the AndroidAnnotations project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -15,7 +16,6 @@ */ package org.androidannotations.internal.core.handler; -import static com.helger.jcodemodel.JExpr.invoke; import static com.helger.jcodemodel.JExpr.lit; import static com.helger.jcodemodel.JMod.FINAL; import static com.helger.jcodemodel.JMod.PUBLIC; @@ -104,8 +104,7 @@ public void assignValue(JBlock targetBlock, IJAssignmentTarget fieldRef, EActivi JMethod injectExtrasMethod = holder.getInjectExtrasMethod(); JVar extras = holder.getInjectExtras(); - IJExpression intent = invoke("getIntent"); - IJExpression restoreMethodCall = bundleHelper.getExpressionToRestoreFromIntentOrBundle(elementClass, intent, extras, extraKeyStaticField, injectExtrasMethod); + IJExpression restoreMethodCall = bundleHelper.getExpressionToRestoreFromBundle(elementClass, extras, extraKeyStaticField, injectExtrasMethod); JBlock ifContainsKey = targetBlock._if(JExpr.invoke(extras, "containsKey").arg(extraKeyStaticField))._then(); ifContainsKey.assign(fieldRef, restoreMethodCall); diff --git a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ExtraParameterHandler.java b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ExtraParameterHandler.java index bb589f4bbb..d53585bf30 100644 --- a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ExtraParameterHandler.java +++ b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ExtraParameterHandler.java @@ -1,5 +1,6 @@ /** * Copyright (C) 2010-2016 eBusiness Information, Excilys Group + * Copyright (C) 2016 the AndroidAnnotations project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -61,11 +62,11 @@ public void process(Element element, GeneratedClassHolder holder) throws Excepti // Don't do anything here. } - public IJExpression getExtraValue(VariableElement parameter, JVar intent, JVar extras, JBlock block, JMethod annotatedMethod, GeneratedClassHolder holder) { - return getExtraValue(parameter, intent, extras, block, annotatedMethod, holder.getGeneratedClass()); + public IJExpression getExtraValue(VariableElement parameter, JVar extras, JBlock block, JMethod annotatedMethod, GeneratedClassHolder holder) { + return getExtraValue(parameter, extras, block, annotatedMethod, holder.getGeneratedClass()); } - public IJExpression getExtraValue(VariableElement parameter, JVar intent, JVar extras, JBlock block, JMethod annotatedMethod, JDefinedClass generatedClass) { + public IJExpression getExtraValue(VariableElement parameter, JVar extras, JBlock block, JMethod annotatedMethod, JDefinedClass generatedClass) { String parameterName = parameter.getSimpleName().toString(); AbstractJClass parameterClass = codeModelHelper.typeMirrorToJClass(parameter.asType()); @@ -75,7 +76,7 @@ public IJExpression getExtraValue(VariableElement parameter, JVar intent, JVar e } BundleHelper bundleHelper = new BundleHelper(getEnvironment(), parameter.asType()); - IJExpression restoreMethodCall = bundleHelper.getExpressionToRestoreFromIntentOrBundle(parameterClass, intent, extras, getStaticExtraField(generatedClass, extraKey), annotatedMethod); + IJExpression restoreMethodCall = bundleHelper.getExpressionToRestoreFromBundle(parameterClass, extras, getStaticExtraField(generatedClass, extraKey), annotatedMethod); return block.decl(parameterClass, parameterName, restoreMethodCall); } diff --git a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/OnActivityResultHandler.java b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/OnActivityResultHandler.java index 8d7d2e7c3d..4d3bb0e2c8 100644 --- a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/OnActivityResultHandler.java +++ b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/OnActivityResultHandler.java @@ -1,5 +1,6 @@ /** * Copyright (C) 2010-2016 eBusiness Information, Excilys Group + * Copyright (C) 2016 the AndroidAnnotations project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -125,7 +126,7 @@ public String getAnnotationValue(VariableElement parameter) { } public IJExpression getExtraValue(VariableElement parameter, JVar extras, JBlock block, HasOnActivityResult holder) { - return super.getExtraValue(parameter, holder.getOnActivityResultDataParam(), extras, block, holder.getOnActivityResultMethod(), holder); + return super.getExtraValue(parameter, extras, block, holder.getOnActivityResultMethod(), holder); } } diff --git a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ReceiverActionHandler.java b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ReceiverActionHandler.java index 68eae4a532..d52f747d52 100644 --- a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ReceiverActionHandler.java +++ b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ReceiverActionHandler.java @@ -1,5 +1,6 @@ /** * Copyright (C) 2010-2016 eBusiness Information, Excilys Group + * Copyright (C) 2016 the AndroidAnnotations project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -165,7 +166,7 @@ public String getAnnotationValue(VariableElement parameter) { } public IJExpression getExtraValue(VariableElement parameter, JVar extras, JBlock block, EReceiverHolder holder) { - return getExtraValue(parameter, holder.getOnReceiveIntent(), extras, block, holder.getOnReceiveMethod(), holder); + return getExtraValue(parameter, extras, block, holder.getOnReceiveMethod(), holder); } } } diff --git a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ReceiverHandler.java b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ReceiverHandler.java index 4c3677964e..cd164d1ae9 100644 --- a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ReceiverHandler.java +++ b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ReceiverHandler.java @@ -1,5 +1,6 @@ /** * Copyright (C) 2010-2016 eBusiness Information, Excilys Group + * Copyright (C) 2016 the AndroidAnnotations project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -125,7 +126,7 @@ private JFieldVar createReceiverField(HasReceiverRegistration holder, String rec if (extras == null) { extras = body.decl(getClasses().BUNDLE, "extras_", JOp.cond(intentVar.invoke("getExtras").ne(_null()), intentVar.invoke("getExtras"), _new(getClasses().BUNDLE))); } - methodCall.arg(extraHandler.getExtraValue(param, intentVar, extras, body, onReceiveMethod, anonymousReceiverClass)); + methodCall.arg(extraHandler.getExtraValue(param, extras, body, onReceiveMethod, anonymousReceiverClass)); } } diff --git a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ServiceActionHandler.java b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ServiceActionHandler.java index c4db261c73..4afcc59b7b 100644 --- a/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ServiceActionHandler.java +++ b/AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/ServiceActionHandler.java @@ -1,5 +1,6 @@ /** * Copyright (C) 2010-2016 eBusiness Information, Excilys Group + * Copyright (C) 2016 the AndroidAnnotations project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -108,7 +109,7 @@ private void addActionInOnHandleIntent(EIntentServiceHolder holder, ExecutableEl AbstractJClass extraParamClass = codeModelHelper.typeMirrorToJClass(param.asType()); BundleHelper bundleHelper = new BundleHelper(getEnvironment(), param.asType()); - IJExpression getExtraExpression = bundleHelper.getExpressionToRestoreFromIntentOrBundle(extraParamClass, intent, extras, paramVar, onHandleIntentMethod); + IJExpression getExtraExpression = bundleHelper.getExpressionToRestoreFromBundle(extraParamClass, extras, paramVar, onHandleIntentMethod); JVar extraField = callActionBlock.decl(extraParamClass, extraParamName, getExtraExpression); callActionInvocation.arg(extraField);