public boolean isParcelType(TypeMirror typeMirror, boolean root) { if (typeMirror instanceof DeclaredType && getElementUtils().getTypeElement(CanonicalNameConstants.PARCEL_ANNOTATION) != null) { DeclaredType declaredType = (DeclaredType) typeMirror; TypeElement element = (TypeElement) declaredType.asElement(); String name = element.getQualifiedName().toString(); if (isAnnotatedWith(element, CanonicalNameConstants.PARCEL_ANNOTATION)) { return true; } if (SUPPORTED_PARCEL_TYPES.containsKey(name)) { boolean genericsMatch = true; Integer genericsSize = SUPPORTED_PARCEL_TYPES.get(name); if (genericsSize == declaredType.getTypeArguments().size() && (!root || genericsSize > 0)) { for (int i = 0; i < genericsSize; i++) { genericsMatch &= isParcelType(declaredType.getTypeArguments().get(i), false); } return genericsMatch; } } } return false; } }
public boolean isParcelType(TypeMirror typeMirror, boolean root) { if (typeMirror instanceof DeclaredType && getElementUtils().getTypeElement(CanonicalNameConstants.PARCEL_ANNOTATION) != null) { DeclaredType declaredType = (DeclaredType) typeMirror; TypeElement element = (TypeElement) declaredType.asElement(); String name = element.getQualifiedName().toString(); if (isAnnotatedWith(element, CanonicalNameConstants.PARCEL_ANNOTATION)) { return true; } if (SUPPORTED_PARCEL_TYPES.containsKey(name)) { boolean genericsMatch = true; Integer genericsSize = SUPPORTED_PARCEL_TYPES.get(name); if (genericsSize == declaredType.getTypeArguments().size() && (!root || genericsSize > 0)) { for (int i = 0; i < genericsSize; i++) { genericsMatch &= isParcelType(declaredType.getTypeArguments().get(i), false); } return genericsMatch; } } } return false; } }