private FieldInfo filterAnnotationsFor(FieldInfo field) { return new FieldInfo( field.getClassName(), field.getFieldName(), field.getModifiers(), field.getTypeDescriptorStr(), field.getTypeSignatureStr(), field.getConstFinalValue(), field.getAnnotationInfo().stream() .filter(this::isVisibleAnnotation) .sorted() .collect(toList()) ); }
private void writeFields(ApiPrintWriter writer, List<FieldInfo> fields) { sort(fields); for (FieldInfo field : fields) { if (isVisible(field.getModifiers()) && isValid(field.getModifiers(), FIELD_MASK) && !hasInternalAnnotation(field.getAnnotationNames())) { writer.println(filterAnnotationsFor(field), " "); } } }
/** * Deprecated, use getModifierStr() instead. * * @return The modifiers as a string. */ @Deprecated public String getModifierStrs() { return getModifierStr(); }
public void println(FieldInfo field, String indentation) { append(asAnnotations(field.getAnnotationNames(), indentation)) .append(indentation) .append(field.getModifierStr()) .append(' ') .append(removeQualifierFromBaseTypes(field.getTypeStr())) .append(' ') .append(field.getFieldName()); if (field.getConstFinalValue() != null) { append(" = "); if (field.getConstFinalValue() instanceof String) { append('"').append(field.getConstFinalValue().toString()).append('"'); } else if (field.getConstFinalValue() instanceof Character) { append('\'').append(field.getConstFinalValue().toString()).append('\''); } else { append(field.getConstFinalValue().toString()); } } println(); }
@Override public Set<Field> getFieldsAnnotatedWith(Class clazz) { Map<String, ClassInfo> classInfos = scanResult.getClassNameToClassInfo(); Set<FieldIdentifier> fieldIdentifiers = new HashSet<>(); for (ClassInfo classInfo : classInfos.values()){ for (FieldInfo fieldInfo : classInfo.getFieldInfo()) { List<AnnotationInfo> fieldsAnnotationInfos = fieldInfo.getAnnotationInfo(); for (AnnotationInfo oneFieldAnnotation: fieldsAnnotationInfos) { if (oneFieldAnnotation.getAnnotationType() == clazz) { fieldIdentifiers.add(new FieldIdentifier(fieldInfo.getClassName(), fieldInfo.getFieldName(), fieldInfo.getType())); } } } } Set<Field> fields = new HashSet<>(fieldIdentifiers.size()); for (FieldIdentifier fieldIdentifier : fieldIdentifiers) { Class<?> classe = scanResult.classNameToClassRef(fieldIdentifier.getClassName()); for (Field field : classe.getDeclaredFields()) { if (fieldIdentifier.matchesField(classe, field)){ fields.add(field); } } } return fields; }
for (final AnnotationInfo ai : fi.getAnnotationInfo()) { if (buf.charAt(buf.length() - 1) != ' ') { buf.append(' '); buf.append(' '); buf.append(fi.getModifierStr()); buf.append(' '); GraphvizUtils.htmlEncode(fi.getTypeSignatureOrTypeDescriptor().toString(), buf); buf.append("</td>"); GraphvizUtils.htmlEncode(fi.getFieldName(), buf); buf.append("</b></td></tr>");
@Override public int compare(final FieldInfo f1, final FieldInfo f2) { return f1.getFieldName().compareTo(f2.getFieldName()); } });
/** * Returns {@code Class<?>} references for the unique annotations on this field. Note that this calls * Class.forName() on the annotation types, which will cause each annotation class to be loaded. * * @return {@code Class<?>} references for the unique annotations on this field. * @throws IllegalArgumentException * if the annotation type could not be loaded. */ public List<Class<?>> getAnnotationTypes() throws IllegalArgumentException { if (annotationInfo == null || annotationInfo.isEmpty()) { return Collections.<Class<?>> emptyList(); } else { final List<Class<?>> annotationClassRefs = new ArrayList<>(); for (final String annotationName : getAnnotationNames()) { annotationClassRefs.add(scanResult.classNameToClassRef(annotationName)); } return annotationClassRefs; } }
classInfoUnlinked.addFieldInfo(new FieldInfo(className, fieldName, fieldModifierFlags, fieldTypeDescriptor, fieldTypeSignature, fieldConstValue, fieldAnnotationInfo));
fieldNameToFieldInfo.put(f.getFieldName(), f);