1515 */
1616package org .androidannotations .processing ;
1717
18- import static org .androidannotations .helper .CanonicalNameConstants .PARCELABLE ;
19- import static org .androidannotations .helper .CanonicalNameConstants .STRING ;
2018import static com .sun .codemodel .JExpr ._null ;
2119import static com .sun .codemodel .JExpr ._super ;
2220import static com .sun .codemodel .JExpr ._this ;
2321import static com .sun .codemodel .JExpr .cast ;
2422import static com .sun .codemodel .JExpr .invoke ;
23+ import static com .sun .codemodel .JExpr .lit ;
24+ import static com .sun .codemodel .JMod .FINAL ;
2525import static com .sun .codemodel .JMod .PRIVATE ;
2626import static com .sun .codemodel .JMod .PUBLIC ;
27+ import static com .sun .codemodel .JMod .STATIC ;
28+ import static org .androidannotations .helper .CanonicalNameConstants .PARCELABLE ;
29+ import static org .androidannotations .helper .CanonicalNameConstants .STRING ;
2730
2831import java .lang .annotation .Annotation ;
2932
3639
3740import org .androidannotations .annotations .Extra ;
3841import org .androidannotations .helper .APTCodeModelHelper ;
42+ import org .androidannotations .helper .CaseHelper ;
3943import org .androidannotations .processing .EBeansHolder .Classes ;
44+
4045import com .sun .codemodel .JBlock ;
4146import com .sun .codemodel .JCatchBlock ;
4247import com .sun .codemodel .JClass ;
4348import com .sun .codemodel .JCodeModel ;
4449import com .sun .codemodel .JExpr ;
4550import com .sun .codemodel .JFieldRef ;
51+ import com .sun .codemodel .JFieldVar ;
4652import com .sun .codemodel .JInvocation ;
4753import com .sun .codemodel .JMethod ;
4854import com .sun .codemodel .JMod ;
@@ -89,7 +95,16 @@ public void process(Element element, JCodeModel codeModel, EBeanHolder holder) {
8995 injectExtras (holder , codeModel );
9096 }
9197
92- JBlock ifContainsKey = holder .extrasNotNullBlock ._if (JExpr .invoke (holder .extras , "containsKey" ).arg (extraKey ))._then ();
98+ String staticFieldName ;
99+ if (fieldName .endsWith ("Extra" )) {
100+ staticFieldName = CaseHelper .camelCaseToUpperSnakeCase (fieldName );
101+ } else {
102+ staticFieldName = CaseHelper .camelCaseToUpperSnakeCase (fieldName + "Extra" );
103+ }
104+
105+ JFieldVar extraKeyField = holder .generatedClass .field (PUBLIC | STATIC | FINAL , classes .STRING , staticFieldName , lit (extraKey ));
106+
107+ JBlock ifContainsKey = holder .extrasNotNullBlock ._if (JExpr .invoke (holder .extras , "containsKey" ).arg (extraKeyField ))._then ();
93108
94109 JTryBlock containsKeyTry = ifContainsKey ._try ();
95110
@@ -98,9 +113,9 @@ public void process(Element element, JCodeModel codeModel, EBeanHolder holder) {
98113 if (isPrimitive ) {
99114 JPrimitiveType primitiveType = JType .parse (codeModel , elementType .toString ());
100115 JClass wrapperType = primitiveType .boxify ();
101- containsKeyTry .body ().assign (extraField , JExpr .cast (wrapperType , holder .extras .invoke ("get" ).arg (extraKey )));
116+ containsKeyTry .body ().assign (extraField , JExpr .cast (wrapperType , holder .extras .invoke ("get" ).arg (extraKeyField )));
102117 } else {
103- containsKeyTry .body ().assign (extraField , JExpr .invoke (holder .cast ).arg (holder .extras .invoke ("get" ).arg (extraKey )));
118+ containsKeyTry .body ().assign (extraField , JExpr .invoke (holder .cast ).arg (holder .extras .invoke ("get" ).arg (extraKeyField )));
104119 }
105120
106121 JCatchBlock containsKeyCatch = containsKeyTry ._catch (classes .CLASS_CAST_EXCEPTION );
@@ -139,7 +154,7 @@ public void process(Element element, JCodeModel codeModel, EBeanHolder holder) {
139154 JClass paramClass = helper .typeMirrorToJClass (extraType , holder );
140155 JVar extraParam = method .param (paramClass , fieldName );
141156 JBlock body = method .body ();
142- JInvocation invocation = body .invoke (holder .intentField , "putExtra" ).arg (extraKey );
157+ JInvocation invocation = body .invoke (holder .intentField , "putExtra" ).arg (extraKeyField );
143158 if (castToSerializable ) {
144159 invocation .arg (cast (classes .SERIALIZABLE , extraParam ));
145160 } else {
0 commit comments