public Optional<TypeInfo> interfaceTypeInfoAnnotatedWith(Class<? extends Annotation> annotationType) { return interfaceInfoMap().stream() .filter(info -> info.hasAnnotation(annotationType)) .map(InterfaceInfo::typeInfo) .findFirst(); }
Stream<MethodInfo> superMethodInfoStream() { Stream<MethodInfo> superTypeStream = superTypeInfoMethodStream(); Stream<MethodInfo> interfaceStream = interfaceInfoMap().methodInfoStream(); Set<String> signatureSet = new HashSet<>(); return Stream.concat(superTypeStream, interfaceStream) .filter(m -> signatureSet.add(m.signature())); }
public Stream<MethodInfo> methodInfoStream() { Stream<MethodInfo> superTypeStream = superTypeInfoMethodStream(); Stream<MethodInfo> interfaceStream = interfaceInfoMap().methodInfoStream(); Set<String> signatureSet = methodInfoList().stream() .map(MethodInfo::signature) .collect(Collectors.toSet()); Stream<MethodInfo> superStream = Stream.concat(superTypeStream, interfaceStream) .filter(m -> signatureSet.add(m.signature())); return Stream.concat(superStream, methodInfoList().stream()); }
@Override public Stream<AnnotationInfo> annotationInfoStream() { Stream<AnnotationInfo> superTypeStream = superTypeInfoAnnotationStream(); Stream<AnnotationInfo> interfaceStream = interfaceInfoMap().annotationInfoStream(); Set<String> nameSet = annotationInfoList().stream() .map(AnnotationInfo::qualifiedName) .collect(Collectors.toSet()); Stream<AnnotationInfo> superStream = Stream.concat(superTypeStream, interfaceStream) .filter(m -> nameSet.add(m.qualifiedName())); return Stream.concat(superStream, annotationInfoList().stream()); }
InterfaceInfoMap getInterfaceInfoMap() { SuperTypeInfo superTypeInfo = superTypeInfo().orElse(SuperTypeInfoVoid.get()); InterfaceInfoMap thisMap = interfaceInfoMap(); return thisMap.add(superTypeInfo.getInterfaceInfoMap()); }
private static SuperTypeInfo superTypeInfo(TypeInfo typeInfo) { return TestingSuperTypeInfo.builder() .annotationInfoList(typeInfo.annotationInfoList()) .superTypeInfo(typeInfo.superTypeInfo()) .interfaceInfoMap(typeInfo.interfaceInfoMap()) .methodInfoList(typeInfo.methodInfoList()) .build(); }
@Override public Equality isEqualTo(Object that) { return Tester.of(TypeInfo.class) .add("accessInfo", o -> o.accessInfo()) .add("kind", o -> o.kind()) .add("packageInfo", o -> o.packageInfo()) .add("name", o -> o.name()) .add("typeParameterInfoMap", o -> o.typeParameterInfoMap()) .add("annotationInfoList", o -> o.annotationInfoList()) .add("enclosingSimpleTypeInfo", o -> o.enclosingSimpleTypeInfo()) .add("superTypeInfo", o -> o.superTypeInfo()) .add("interfaceInfoMap", o -> o.interfaceInfoMap()) .add("fieldInfoList", o -> o.fieldInfoList()) .add("constructorInfoList", o -> o.constructorInfoList()) .add("methodInfoList", o -> o.methodInfoList()) .add("declaredTypeInfoList", o -> o.declaredTypeInfoList()) .test(this, that); }