private static List<Symbol> retrieveMembers(Symbol.TypeSymbol classSymbol) { List<Symbol> results = Lists.newLinkedList(); results.addAll(extractMembers(classSymbol, false)); for (Type parentInterface : classSymbol.interfaces()) { results.addAll(extractMembers(parentInterface.symbol(), true)); } Type superClass = classSymbol.superClass(); if (superClass != null) { results.addAll(extractMembers(superClass.symbol(), true)); } return results; }
@CheckForNull private static Symbol.TypeSymbol getSuperclass(Symbol.TypeSymbol symbol) { Type superType = symbol.superClass(); if (superType != null) { return superType.symbol(); } return null; }
@CheckForNull private Symbol.TypeSymbol getSuperclass(Symbol.TypeSymbol symbol) { Type superType = symbol.superClass(); if (superType != null) { return superType.symbol(); } return null; }
private static boolean requiresSuperCall(Symbol.MethodSymbol methodSymbol) { Type superType = methodSymbol.owner().type().symbol().superClass(); Collection<Symbol> symbols = Lists.newArrayList(); while (superType != null && !superType.is(JUNIT_FRAMEWORK_TEST_CASE) && symbols.isEmpty()) { symbols = superType.symbol().lookupSymbols(methodSymbol.name()); superType = superType.symbol().superClass(); } return !symbols.isEmpty() && !symbols.iterator().next().owner().type().is(JUNIT_FRAMEWORK_TEST_CASE); }
private static boolean parentClassImplementsEquals(Symbol.TypeSymbol symbol) { Type superClass = symbol.superClass(); while (superClass != null && superClass.symbol().isTypeSymbol()) { Symbol.TypeSymbol superClassSymbol = superClass.symbol(); if (!superClass.is(JAVA_LANG_OBJECT) && hasEqualsMethod(superClassSymbol)) { return true; } superClass = superClassSymbol.superClass(); } return false; }
private static JavaType getObjectType(JavaType type) { JavaType superClass = (JavaType) type.symbol().superClass(); if (superClass == null) { return type; } return getObjectType(superClass); }
private static boolean requiresSuperCall(Symbol.MethodSymbol methodSymbol) { Type superType = methodSymbol.owner().type().symbol().superClass(); Collection<Symbol> symbols = Lists.newArrayList(); while (superType != null && !superType.is(JUNIT_FRAMEWORK_TEST_CASE) && symbols.isEmpty()) { symbols = superType.symbol().lookupSymbols(methodSymbol.name()); superType = superType.symbol().superClass(); } return !symbols.isEmpty() && !symbols.iterator().next().owner().type().is(JUNIT_FRAMEWORK_TEST_CASE); }
private static boolean isStrutsActionParameter(VariableTree variableTree) { Type superClass = variableTree.symbol().enclosingClass().superClass(); return superClass != null && superClass.isSubtypeOf(STRUTS_ACTION_SUPERCLASS) && EXCLUDED_STRUTS_ACTION_PARAMETER_TYPES.contains(variableTree.symbol().type().fullyQualifiedName()); }
private static boolean extendsOuterClass(Symbol.TypeSymbol classSymbol) { Type superType = classSymbol.superClass(); return superType != null && superType.erasure().equals(classSymbol.owner().type().erasure()); }
private static boolean isDirectSubtypeOfThread(Symbol.TypeSymbol classSymbol) { Type superClass = classSymbol.superClass(); // Only 'java.lang.Object' has no super class return superClass != null && superClass.is(JAVA_LANG_THREAD); }
private static boolean isSubclassOfInputStreamOrOutputStreamWithoutClose(Type type) { TypeSymbol typeSymbol = type.symbol(); Type superClass = typeSymbol.superClass(); if (superClass != null && (superClass.is("java.io.OutputStream") || superClass.is("java.io.InputStream"))) { return typeSymbol.lookupSymbols(CLOSE_METHOD_NAME).isEmpty(); } return false; }
@Override public void visitNode(Tree tree) { ClassTree classTree = (ClassTree) tree; if (hasSemantic()) { Symbol.TypeSymbol classSymbol = classTree.symbol(); checkSuperType(classTree, classSymbol.superClass()); for (Type interfaceType : classSymbol.interfaces()) { checkSuperType(classTree, interfaceType); } } }
private String getAnonymousClassTypeName(Symbol.TypeSymbol symbol) { String name = ""; if (symbol.interfaces().isEmpty()) { name = getTypeName(symbol.superClass()); } else { name = getTypeName(symbol.interfaces().get(0)); } return name; }
private static boolean superTypesHaveOnlyStaticMethods(Symbol.TypeSymbol newClassTypeSymbol) { Type superClass = newClassTypeSymbol.superClass(); if (superClass != null && !superClass.is("java.lang.Object") && !hasOnlyStaticMethodsAndFields(superClass.symbol())) { return false; } for (Type superInterface : newClassTypeSymbol.interfaces()) { if (!hasOnlyStaticMethodsAndFields(superInterface.symbol())) { return false; } } return true; }
@Override public void visitNode(Tree tree) { if (hasSemantic()) { Symbol.TypeSymbol classSymbol = ((ClassTree) tree).symbol(); Type superclass = classSymbol.superClass(); if (isSerializable(classSymbol.type()) && isNotSerializableMissingNoArgConstructor(superclass)) { reportIssue(tree, "Add a no-arg constructor to \"" + superclass + "\"."); } } }
@Override public void visitNode(Tree tree) { ClassTree classTree = (ClassTree) tree; if (hasSemantic()) { Symbol.TypeSymbol classSymbol = classTree.symbol(); checkSuperType(classTree, classSymbol.superClass()); for (Type interfaceType : classSymbol.interfaces()) { checkSuperType(classTree, interfaceType); } } }
private static JavaType getObjectType(JavaType type) { JavaType superClass = (JavaType) type.symbol().superClass(); if (superClass == null) { return type; } return getObjectType(superClass); }
private static boolean isStrutsActionParameter(VariableTree variableTree) { Type superClass = variableTree.symbol().enclosingClass().superClass(); return superClass != null && superClass.isSubtypeOf(STRUTS_ACTION_SUPERCLASS) && EXCLUDED_STRUTS_ACTION_PARAMETER_TYPES.contains(variableTree.symbol().type().fullyQualifiedName()); }
private static boolean isDirectSubtypeOfThread(Symbol.TypeSymbol classSymbol) { Type superClass = classSymbol.superClass(); // Only 'java.lang.Object' has no super class return superClass != null && superClass.is(JAVA_LANG_THREAD); }
private static String getAnonymousClassTypeName(Symbol.TypeSymbol symbol) { if (symbol.interfaces().isEmpty()) { return getTypeName(symbol.superClass()); } return getTypeName(symbol.interfaces().get(0)); }