private static String listAllowedValues(@NonNull Object[] allowedValues) { StringBuilder sb = new StringBuilder(); for (Object allowedValue : allowedValues) { String s; if (allowedValue instanceof Integer) { s = allowedValue.toString(); } else if (allowedValue instanceof ResolvedNode) { ResolvedNode node = (ResolvedNode) allowedValue; if (node instanceof ResolvedField) { ResolvedField field = (ResolvedField) node; String containingClassName = field.getContainingClassName(); containingClassName = containingClassName.substring(containingClassName.lastIndexOf('.') + 1); s = containingClassName + "." + field.getName(); } else { s = node.getSignature(); } } else { continue; } if (sb.length() > 0) { sb.append(", "); } sb.append(s); } return sb.toString(); }
@Override public boolean equals(Object obj) { if (obj instanceof ResolvedExternalField) { return mSignature.equals(((ResolvedExternalField)obj).mSignature); } else if (obj instanceof ResolvedField) { ResolvedField field = (ResolvedField)obj; if (mSignature.endsWith(field.getName())) { ResolvedClass containingClass = field.getContainingClass(); String signature = containingClass != null ? containingClass.getSignature() + "." + field.getName() : field.getName(); return mSignature.equals(signature); } return false; } else { return false; } }
@Nullable private FieldInfo findField(@NonNull ResolvedField field) { ResolvedClass containingClass = field.getContainingClass(); if (containingClass == null) { return null; } ClassInfo c = findClass(containingClass); if (c == null) { return null; } if (c.fields == null) { return null; } return c.fields.get(field.getName()); }