@Override public boolean doIsEquals(CompilationUnit first, CompilationUnit second) { // 检测包声明 if (!isEqualsUseMerger(first.getPackage(), second.getPackage())) return false; // 检查公共类声明 for (TypeDeclaration outer : first.getTypes()) { for (TypeDeclaration inner : second.getTypes()) { if (ModifierSet.isPublic(outer.getModifiers()) && ModifierSet.isPublic(inner.getModifiers())) { if (outer.getName().equals(inner.getName())) { return true; } } } } return false; }
public void index(TypeDeclaration<?> type, int cuId) { EnumSet<Modifier> modifiers = type.getModifiers(); boolean isInterface = type instanceof ClassOrInterfaceDeclaration && ((ClassOrInterfaceDeclaration) type).isInterface(); boolean isAnnotation = type instanceof AnnotationDeclaration; boolean isEnumeration = type instanceof EnumDeclaration; boolean isClass = !isAnnotation && !isEnumeration && !isInterface; Type t = new Type(type.getNameAsString(), type.isPublic(), type.isStatic(), modifiers.contains(FINAL), modifiers.contains(ABSTRACT), isClass, isInterface, isEnumeration, isAnnotation, cuId); int typeId = typeDao.save(t); for (BodyDeclaration member : type.getMembers()) { bodyDeclarationIndexer.index(member, typeId); } } }
classInfo.isStaticNested = containerClass != null && ModifierSet.isStatic(td.getModifiers()); classInfo.reflectionClassName = getReflectionClassName(packageName, containerClass == null ? "" : containerClass.reflectionClassName, td.getName().toString()); classInfo.visibility = Visibility.fromModifiers(td.getModifiers()); classInfo.isAbstract = ModifierSet.isAbstract(td.getModifiers());
classInfo.isStaticNested = containerClass != null && ModifierSet.isStatic(td.getModifiers()); classInfo.reflectionClassName = getReflectionClassName(packageName, containerClass == null ? "" : containerClass.reflectionClassName, td.getName().toString()); classInfo.visibility = Visibility.fromModifiers(td.getModifiers()); classInfo.isAbstract = ModifierSet.isAbstract(td.getModifiers());