1616package com .googlecode .androidannotations .rclass ;
1717
1818import java .util .HashMap ;
19+ import java .util .HashSet ;
1920import java .util .List ;
2021import java .util .Map ;
22+ import java .util .Set ;
2123
2224import javax .lang .model .element .Element ;
2325import javax .lang .model .element .TypeElement ;
3335public class RInnerClass implements IRInnerClass {
3436
3537 private final Map <Integer , String > idQualifiedNamesByIdValues = new HashMap <Integer , String >();
38+ private final Set <String > idQualifiedNames = new HashSet <String >();
3639
3740 private final String rInnerQualifiedName ;
3841
@@ -48,8 +51,12 @@ public RInnerClass(TypeElement rInnerTypeElement) {
4851 for (VariableElement idField : idFields ) {
4952 TypeKind fieldType = idField .asType ().getKind ();
5053 if (fieldType .isPrimitive () && fieldType .equals (TypeKind .INT )) {
54+ String idQualifiedName = rInnerQualifiedName + "." + idField .getSimpleName ();
55+ idQualifiedNames .add (idQualifiedName );
5156 Integer idFieldId = (Integer ) idField .getConstantValue ();
52- idQualifiedNamesByIdValues .put (idFieldId , rInnerQualifiedName + "." + idField .getSimpleName ());
57+ if (idFieldId != null ) {
58+ idQualifiedNamesByIdValues .put (idFieldId , idQualifiedName );
59+ }
5360 }
5461 }
5562 } else {
@@ -69,11 +76,11 @@ public String getIdQualifiedName(Integer idValue) {
6976
7077 @ Override
7178 public boolean containsField (String name ) {
72- boolean containsField = idQualifiedNamesByIdValues . containsValue (rInnerQualifiedName + "." + name );
79+ boolean containsField = idQualifiedNames . contains (rInnerQualifiedName + "." + name );
7380
7481 if (!containsField ) {
7582 String snakeCaseName = CaseHelper .camelCaseToSnakeCase (name );
76- containsField = idQualifiedNamesByIdValues . containsValue (rInnerQualifiedName + "." + snakeCaseName );
83+ containsField = idQualifiedNames . contains (rInnerQualifiedName + "." + snakeCaseName );
7784 }
7885
7986 return containsField ;
@@ -83,12 +90,12 @@ public boolean containsField(String name) {
8390 public String getIdQualifiedName (String name ) {
8491 String idQualifiedName = rInnerQualifiedName + "." + name ;
8592
86- if (idQualifiedNamesByIdValues . containsValue (idQualifiedName )) {
93+ if (idQualifiedNames . contains (idQualifiedName )) {
8794 return idQualifiedName ;
8895 } else {
8996 String snakeCaseName = CaseHelper .camelCaseToSnakeCase (name );
9097 idQualifiedName = rInnerQualifiedName + "." + snakeCaseName ;
91- if (idQualifiedNamesByIdValues . containsValue (idQualifiedName )) {
98+ if (idQualifiedNames . contains (idQualifiedName )) {
9299 return idQualifiedName ;
93100 } else {
94101 return null ;
0 commit comments