private static List<Set<Type>> supertypes(Iterable<Type> types) { try { List<Set<Type>> results = new LinkedList<>(); for (Type type : types) { checkParametrizedType(type); Set<Type> supertypes = new LinkedHashSet<>(); supertypes.add(type); for (Type supertype : ((JavaType) type).symbol.superTypes()) { checkParametrizedType(supertype); supertypes.add(supertype); } results.add(supertypes); } return results; } catch (UnsupportedOperationException e) { return Collections.emptyList(); } }
private boolean isMethodDefinedOnConstructedType(Symbol symbol) { TypeJavaSymbol methodEnclosingClass = (TypeJavaSymbol) symbol.enclosingClass(); for (ClassJavaType superType : constructorType.superTypes()) { if (superType.getSymbol().equals(methodEnclosingClass)) { return true; } } return constructorType.equals(methodEnclosingClass); } }
private boolean isMethodDefinedOnConstructedType(Symbol symbol) { TypeJavaSymbol methodEnclosingClass = (TypeJavaSymbol) symbol.enclosingClass(); for (ClassJavaType superType : constructorType.superTypes()) { if (superType.getSymbol().equals(methodEnclosingClass)) { return true; } } return constructorType.equals(methodEnclosingClass); } }
@CheckForNull public MethodJavaSymbol overriddenSymbol() { if (isStatic()) { return null; } TypeJavaSymbol enclosingClass = enclosingClass(); boolean unknownFound = false; for (JavaType.ClassJavaType superType : enclosingClass.superTypes()) { MethodJavaSymbol overridden = overriddenSymbolFrom(superType); if (overridden != null) { if (!overridden.isUnknown()) { return overridden; } else { unknownFound = true; } } } if (unknownFound) { return Symbols.unknownMethodSymbol; } return null; }
private static boolean definesOrInheritsSymbol(Symbol symbol, JavaSymbol.TypeJavaSymbol typeSymbol) { return definesSymbol(symbol, typeSymbol) || typeSymbol.superTypes().stream().anyMatch(superType -> definesSymbol(symbol, superType.symbol())); }
public Boolean isOverriden() { Boolean result = false; TypeJavaSymbol enclosingClass = enclosingClass(); for (JavaType.ClassJavaType superType : enclosingClass.superTypes()) { Boolean overrideFromType = overridesFromSymbol(superType); if (overrideFromType == null) { result = null; } else if (BooleanUtils.isTrue(overrideFromType)) { return true; } } return result; }
private boolean isMethodDefinedOnConstructedType(Symbol symbol) { TypeJavaSymbol methodEnclosingClass = (TypeJavaSymbol) symbol.enclosingClass(); for (ClassJavaType superType : constructorType.superTypes()) { if (superType.getSymbol().equals(methodEnclosingClass)) { return true; } } return constructorType.equals(methodEnclosingClass); }
private static boolean definesOrInheritsSymbol(Symbol symbol, JavaSymbol.TypeJavaSymbol typeSymbol) { return definesSymbol(symbol, typeSymbol) || typeSymbol.superTypes().stream().anyMatch(superType -> definesSymbol(symbol, superType.symbol())); }
private static boolean isSAM(ClassTree classBody) { if (hasOnlyOneMethod(classBody.members())) { // When overriding only one method of a functional interface, it can only be the single abstract method // and not one of the default methods. No need to check that the method signature matches. JavaSymbol.TypeJavaSymbol symbol = (JavaSymbol.TypeJavaSymbol) classBody.symbol(); // should be anonymous class of interface and not abstract class return symbol.getInterfaces().size() == 1 && symbol.getSuperclass().is(JAVA_LANG_OBJECT) && hasSingleAbstractMethodInHierarchy(symbol.superTypes()); } return false; }
private boolean superTypeContains(String fullyQualifiedName) { for (ClassJavaType classType : symbol.superTypes()) { if (classType.is(fullyQualifiedName)) { return true; } } return false; } }
private boolean superTypeContains(String fullyQualifiedName) { for (ClassJavaType classType : symbol.superTypes()) { if (classType.is(fullyQualifiedName)) { return true; } } return false; } }
private boolean isGuiClass(TypeJavaSymbol symbol) { for (ClassJavaType superType : symbol.superTypes()) { TypeJavaSymbol superTypeSymbol = superType.getSymbol(); if (hasGuiPackage(superTypeSymbol)) { return true; } } return hasGuiPackage(symbol) || (!symbol.equals(symbol.outermostClass()) && isGuiClass(symbol.outermostClass())); }
private boolean isNotSerializable(Symbol.TypeSymbol symbol) { for (Type superType : ((TypeJavaSymbol) symbol).superTypes()) { if (superType.isUnknown()) { return false; } } return !symbol.type().isSubtypeOf("java.io.Serializable"); }
private boolean superTypeContains(String fullyQualifiedName) { for (ClassJavaType classType : symbol.superTypes()) { if (classType.is(fullyQualifiedName)) { return true; } } return false; }
private static boolean isGuiClass(TypeJavaSymbol symbol) { for (ClassJavaType superType : symbol.superTypes()) { TypeJavaSymbol superTypeSymbol = superType.getSymbol(); if (hasGuiPackage(superTypeSymbol)) { return true; } } return hasGuiPackage(symbol) || (!symbol.equals(symbol.outermostClass()) && isGuiClass(symbol.outermostClass())); }
private static boolean isNotSerializable(Symbol.TypeSymbol symbol) { for (Type superType : ((TypeJavaSymbol) symbol).superTypes()) { if (superType.isUnknown()) { return false; } } return !symbol.type().isSubtypeOf("java.io.Serializable"); }
private static boolean isSAM(ClassTree classBody) { if (hasOnlyOneMethod(classBody.members())) { // When overriding only one method of a functional interface, it can only be the single abstract method // and not one of the default methods. No need to check that the method signature matches. JavaSymbol.TypeJavaSymbol symbol = (JavaSymbol.TypeJavaSymbol) classBody.symbol(); // should be anonymous class of interface and not abstract class return symbol.getInterfaces().size() == 1 && symbol.getSuperclass().is(JAVA_LANG_OBJECT) && hasSingleAbstractMethodInHierarchy(symbol.superTypes()); } return false; }
private static boolean isNotSerializable(Symbol.TypeSymbol symbol) { for (Type superType : ((TypeJavaSymbol) symbol).superTypes()) { if (superType.isUnknown()) { return false; } } return !symbol.type().isSubtypeOf("java.io.Serializable"); }
private static boolean isGuiClass(TypeJavaSymbol symbol) { for (ClassJavaType superType : symbol.superTypes()) { TypeJavaSymbol superTypeSymbol = superType.getSymbol(); if (hasGuiPackage(superTypeSymbol)) { return true; } } return hasGuiPackage(symbol) || (!symbol.equals(symbol.outermostClass()) && isGuiClass(symbol.outermostClass())); }
private boolean superTypeContains(String fullyQualifiedName) { for (ClassJavaType classType : symbol.superTypes()) { if (classType.is(fullyQualifiedName)) { return true; } } return false; }