@SuppressWarnings("unchecked") public <T> T extractAnnotationValueParameter(Element element) { return (T) extractAnnotationParameter(element, "value"); }
@SuppressWarnings("unchecked") public <T> T extractAnnotationParameter(Element element, String methodName) { return (T) extractAnnotationParameter(element, annotationName, methodName); }
public void annotationParameterIsOptionalValidResId(Element element, Res res, String parameterName, ElementValidation valid) { Integer resId = annotationHelper.extractAnnotationParameter(element, parameterName); if (!resId.equals(ResId.DEFAULT_VALUE) && !idAnnotationHelper.containsIdValue(resId, res)) { valid.addError("Id value not found in R." + res.rName() + ": " + resId); } }
public void childFragmentUsedOnlyIfEnclosingClassIsFragment(Element element, ElementValidation validation) { boolean childFragment = annotationHelper.extractAnnotationParameter(element, "childFragment"); if (childFragment) { TypeElement fragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.FRAGMENT); TypeElement supportFragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.SUPPORT_V4_FRAGMENT); TypeElement androidxFragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.ANDROIDX_FRAGMENT); boolean enclosingElementIsFragment = false; TypeElement enclosingElement = (TypeElement) element.getEnclosingElement(); if (fragment != null && annotationHelper.isSubtype(enclosingElement, fragment)) { enclosingElementIsFragment = true; } else if (supportFragment != null && annotationHelper.isSubtype(enclosingElement, supportFragment)) { enclosingElementIsFragment = true; } else if (androidxFragment != null && annotationHelper.isSubtype(enclosingElement, androidxFragment)) { enclosingElementIsFragment = true; } if (!enclosingElementIsFragment) { validation.addError(element, "The 'childFragmentManager' parameter only can be used if the class containing the annotated field is either subclass of " + CanonicalNameConstants.FRAGMENT + ", " + CanonicalNameConstants.SUPPORT_V4_FRAGMENT + " or " + CanonicalNameConstants.ANDROIDX_FRAGMENT); } } }
public void getChildFragmentManagerMethodIsAvailable(Element element, ElementValidation validation) { boolean childFragment = annotationHelper.extractAnnotationParameter(element, "childFragment"); if (childFragment) { TypeElement enclosingElement = (TypeElement) element.getEnclosingElement(); TypeElement fragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.FRAGMENT); TypeElement supportFragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.SUPPORT_V4_FRAGMENT); TypeElement androidxFragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.ANDROIDX_FRAGMENT); if (supportFragment != null && annotationHelper.isSubtype(enclosingElement, supportFragment)) { if (!methodIsAvailableIn(supportFragment, "getChildFragmentManager")) { validation.addError(element, "The 'childFragmentManager' parameter only can be used if the getChildFragmentManager() method is available in " + CanonicalNameConstants.SUPPORT_V4_FRAGMENT + ", update your support library version."); } } else if (androidxFragment != null && annotationHelper.isSubtype(enclosingElement, androidxFragment)) { if (!methodIsAvailableIn(androidxFragment, "getChildFragmentManager")) { validation.addError(element, "The 'childFragmentManager' parameter only can be used if the getChildFragmentManager() method is available in " + CanonicalNameConstants.ANDROIDX_FRAGMENT + ", update your support library version."); } } else if (fragment != null && annotationHelper.isSubtype(enclosingElement, fragment) && environment().getAndroidManifest().getMinSdkVersion() < 17) { validation.addError(element, "The 'childFragmentManager' parameter only can be used if the getChildFragmentManager() method is available in " + CanonicalNameConstants.FRAGMENT + " (from API 17). Increment 'minSdkVersion' or use " + CanonicalNameConstants.SUPPORT_V4_FRAGMENT + " or " + CanonicalNameConstants.ANDROIDX_FRAGMENT + "."); } } }
@SuppressWarnings("unchecked") public <T> T extractAnnotationParameter(Element element, String methodName) { return (T) extractAnnotationParameter(element, annotationName, methodName); }
@SuppressWarnings("unchecked") public <T> T extractAnnotationValueParameter(Element element) { return (T) extractAnnotationParameter(element, "value"); }
public void annotationParameterIsOptionalValidResId(Element element, Res res, String parameterName, ElementValidation valid) { Integer resId = annotationHelper.extractAnnotationParameter(element, parameterName); if (!resId.equals(ResId.DEFAULT_VALUE) && !idAnnotationHelper.containsIdValue(resId, res)) { valid.addError("Id value not found in R." + res.rName() + ": " + resId); } }
public void childFragmentUsedOnlyIfEnclosingClassIsFragment(Element element, ElementValidation validation) { boolean childFragment = annotationHelper.extractAnnotationParameter(element, "childFragment"); if (childFragment) { TypeElement fragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.FRAGMENT); TypeElement supportFragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.SUPPORT_V4_FRAGMENT); TypeElement androidxFragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.ANDROIDX_FRAGMENT); boolean enclosingElementIsFragment = false; TypeElement enclosingElement = (TypeElement) element.getEnclosingElement(); if (fragment != null && annotationHelper.isSubtype(enclosingElement, fragment)) { enclosingElementIsFragment = true; } else if (supportFragment != null && annotationHelper.isSubtype(enclosingElement, supportFragment)) { enclosingElementIsFragment = true; } else if (androidxFragment != null && annotationHelper.isSubtype(enclosingElement, androidxFragment)) { enclosingElementIsFragment = true; } if (!enclosingElementIsFragment) { validation.addError(element, "The 'childFragmentManager' parameter only can be used if the class containing the annotated field is either subclass of " + CanonicalNameConstants.FRAGMENT + ", " + CanonicalNameConstants.SUPPORT_V4_FRAGMENT + " or " + CanonicalNameConstants.ANDROIDX_FRAGMENT); } } }
public void getChildFragmentManagerMethodIsAvailable(Element element, ElementValidation validation) { boolean childFragment = annotationHelper.extractAnnotationParameter(element, "childFragment"); if (childFragment) { TypeElement enclosingElement = (TypeElement) element.getEnclosingElement(); TypeElement fragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.FRAGMENT); TypeElement supportFragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.SUPPORT_V4_FRAGMENT); TypeElement androidxFragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.ANDROIDX_FRAGMENT); if (supportFragment != null && annotationHelper.isSubtype(enclosingElement, supportFragment)) { if (!methodIsAvailableIn(supportFragment, "getChildFragmentManager")) { validation.addError(element, "The 'childFragmentManager' parameter only can be used if the getChildFragmentManager() method is available in " + CanonicalNameConstants.SUPPORT_V4_FRAGMENT + ", update your support library version."); } } else if (androidxFragment != null && annotationHelper.isSubtype(enclosingElement, androidxFragment)) { if (!methodIsAvailableIn(androidxFragment, "getChildFragmentManager")) { validation.addError(element, "The 'childFragmentManager' parameter only can be used if the getChildFragmentManager() method is available in " + CanonicalNameConstants.ANDROIDX_FRAGMENT + ", update your support library version."); } } else if (fragment != null && annotationHelper.isSubtype(enclosingElement, fragment) && environment().getAndroidManifest().getMinSdkVersion() < 17) { validation.addError(element, "The 'childFragmentManager' parameter only can be used if the getChildFragmentManager() method is available in " + CanonicalNameConstants.FRAGMENT + " (from API 17). Increment 'minSdkVersion' or use " + CanonicalNameConstants.SUPPORT_V4_FRAGMENT + " or " + CanonicalNameConstants.ANDROIDX_FRAGMENT + "."); } } }