&& method.getEnclosingElement().getKind() == ElementKind.INTERFACE && method.getModifiers().contains(Modifier.ABSTRACT) && elements.overrides(method, objectMethods.get(signature), type)) { continue; // Skip abstract methods on interfaces redelaring Object methods. while (iterator.hasNext()) { ExecutableElement otherMethod = iterator.next(); if (elements.overrides(method, otherMethod, type) || method.getParameters().equals(otherMethod.getParameters())) { iterator.remove();
/** * Find a method that is overridden by the one passed to this function. * * @param currentMethod the method for which we want to find the overridden methods * @param typeElement the class or interface analyzed * @return the overridden method if there is one, and {@code null} otherwise */ private ExecutableElement getOverriddenMethod(ExecutableElement currentMethod, TypeElement typeElement) { if ( typeElement == null ) { return null; } TypeElement enclosingTypeElement = getEnclosingTypeElement( currentMethod ); for ( Element element : elementUtils.getAllMembers( typeElement ) ) { if ( !element.getKind().equals( ElementKind.METHOD ) ) { continue; } if ( elementUtils.overrides( currentMethod, (ExecutableElement) element, enclosingTypeElement ) ) { return (ExecutableElement) element; } } return null; }
@Override boolean overrides(ExecutableElement overrider, ExecutableElement overridden, TypeElement in) { return elementUtils.overrides(overrider, overridden, in); } }
@Override public boolean isOverriddenBy(ExecutableElement overrider, TypeElement type) { while (overrider instanceof ParameterizedExecutable) { overrider = ((ParameterizedExecutable) overrider).executableElement; } return env.getElementUtils().overrides(overrider, this.executableElement, type); }
@Override public boolean overrides(ExecutableElement overridden, TypeElement scope) { while (overridden instanceof InterfaceExecutable) { overridden = ((InterfaceExecutable) overridden).executableElement; } return env.getElementUtils().overrides(this.executableElement, overridden, scope); }
@Override public boolean isOverriddenBy(ExecutableElement overrider, TypeElement type) { while (overrider instanceof InterfaceExecutable) { overrider = ((InterfaceExecutable) overrider).executableElement; } return env.getElementUtils().overrides(overrider, this.executableElement, type); }
@Override public boolean overrides(ExecutableElement overridden, TypeElement scope) { while (overridden instanceof ParameterizedExecutable) { overridden = ((ParameterizedExecutable) overridden).executableElement; } return env.getElementUtils().overrides(this.executableElement, overridden, scope); }
@Override public boolean overrides(ExecutableElement overridden, TypeElement scope) { while (overridden instanceof InterfaceExecutable) { overridden = ((InterfaceExecutable) overridden).executableElement; } return env.getElementUtils().overrides(this.executableElement, overridden, scope); }
@Override public boolean overrides(ExecutableElement overridden, TypeElement scope) { while (overridden instanceof ParameterizedExecutable) { overridden = ((ParameterizedExecutable) overridden).executableElement; } return env.getElementUtils().overrides(this.executableElement, overridden, scope); }
@Override public boolean overrides(ExecutableElement overridden, TypeElement scope) { while (overridden instanceof InterfaceExecutable) { overridden = ((InterfaceExecutable) overridden).executableElement; } return env.getElementUtils().overrides(this.executableElement, overridden, scope); }
@Override public boolean isOverriddenBy(ExecutableElement overrider, TypeElement type) { while (overrider instanceof InterfaceExecutable) { overrider = ((InterfaceExecutable) overrider).executableElement; } return env.getElementUtils().overrides(overrider, this.executableElement, type); }
public boolean isOverriding(ExecutableElement method, TypeElement base) { Elements elements = env.getElementUtils(); while (true) { for (ExecutableElement m : ElementFilter.methodsIn(elements.getAllMembers(base))) { if (elements.overrides(method, m, base)) return true; } if (base.getSuperclass().getKind().equals(TypeKind.NONE)) return false; base = (TypeElement) env.getTypeUtils().asElement(base.getSuperclass()); } }
public boolean isOverriding(ExecutableElement method, TypeElement base) { Elements elements = env.getElementUtils(); while (true) { for (ExecutableElement m : ElementFilter.methodsIn(elements.getAllMembers(base))) { if (elements.overrides(method, m, base)) return true; } if (base.getSuperclass().getKind().equals(TypeKind.NONE)) return false; base = (TypeElement) env.getTypeUtils().asElement(base.getSuperclass()); } }
private boolean abstractMethod(ExecutableElement e) { return e.getModifiers().contains(Modifier.ABSTRACT) && !((e.getEnclosingElement().getKind() == ElementKind.INTERFACE) && (Elements.overrides(e, objectModel.equalsMethod(), objectModel.classModel()) || Elements.overrides(e, objectModel.hashCodeMethod(), objectModel.classModel()) || Elements.overrides(e, objectModel.toStringMethod(), objectModel.classModel()))); }
Optional<ExecutableElement> findAbstractToString(TypeElement typeElement) { return deriveUtils.allAbstractMethods(typeElement) .stream() .filter(e -> deriveUtils.elements().overrides(e, deriveUtils.object().toStringMethod(), typeElement)) .findFirst(); }
Optional<ExecutableElement> findAbstractEquals(TypeElement typeElement) { return deriveUtils.allAbstractMethods(typeElement) .stream() .filter(e -> deriveUtils.elements().overrides(e, deriveUtils.object().equalsMethod(), typeElement)) .findFirst(); }
Optional<ExecutableElement> findAbstractHashCode(TypeElement typeElement) { return deriveUtils.allAbstractMethods(typeElement) .stream() .filter(e -> deriveUtils.elements().overrides(e, deriveUtils.object().hashCodeMethod(), typeElement)) .findFirst(); }
Optional<ExecutableElement> findAbstractToString(TypeElement typeElement) { return deriveUtils.allAbstractMethods(typeElement) .stream() .filter(e -> deriveUtils.elements().overrides(e, deriveUtils.object().toStringMethod(), typeElement)) .findFirst(); }
Optional<ExecutableElement> findAbstractHashCode(TypeElement typeElement) { return deriveUtils.allAbstractMethods(typeElement) .stream() .filter(e -> deriveUtils.elements().overrides(e, deriveUtils.object().hashCodeMethod(), typeElement)) .findFirst(); }
private boolean isEqualHashcodeToString(ExecutableElement executableElement) { return elements.overrides(executableElement, deriveUtils.object().equalsMethod(), deriveUtils.object().classModel()) || elements.overrides(executableElement, deriveUtils.object().hashCodeMethod(), deriveUtils.object().classModel()) || elements.overrides(executableElement, deriveUtils.object().toStringMethod(), deriveUtils.object().classModel()); }