public void extractFromProjectSource(Collection<CompilationUnitDeclaration> units) { TypedefCollector collector = new TypedefCollector(units, false /*requireHide*/, true /*requireSourceRetention*/); typedefs = collector.getTypedefs(); typedefClasses = collector.getNonPublicTypedefClasses(); for (CompilationUnitDeclaration unit : units) { analyze(unit); } }
public void extractFromProjectSource(Collection<CompilationUnitDeclaration> units) { TypedefCollector collector = new TypedefCollector(units, false /*requireHide*/, true /*requireSourceRetention*/); typedefs = collector.getTypedefs(); typedefsToRemove = collector.getPrivateTypedefClasses(); for (CompilationUnitDeclaration unit : units) { analyze(unit); } }
private boolean hasRelevantAnnotations(Element item) { for (Element annotationElement : getChildren(item)) { if (isRelevantAnnotation(annotationElement)) { return true; } } return false; }
private void mergeField(Element item, String containingClass, String fieldName) { if (apiFilter != null && !hasHistoricData(item) && !apiFilter.hasField(containingClass, fieldName)) { if (isListIgnored()) { info("Skipping imported element because it is not part of the API file: " + containingClass + "#" + fieldName); } filteredCount++; } else { FieldItem fieldItem = new FieldItem(containingClass, ClassKind.CLASS, fieldName, null); Item existing = findItem(containingClass, fieldItem); if (existing != null) { mergedCount += mergeAnnotations(item, existing); } else { addItemUnconditionally(containingClass, fieldItem); mergedCount += addAnnotations(item, fieldItem); } } }
private void mergeField(Element item, String containingClass, String fieldName) { if (apiFilter != null && !apiFilter.hasField(containingClass, fieldName)) { if (isListIgnored()) { info("Skipping imported element because it is not part of the API file: " + containingClass + "#" + fieldName); } filteredCount++; } else { FieldItem fieldItem = new FieldItem(containingClass, ClassKind.CLASS, fieldName, null); Item existing = findItem(containingClass, fieldItem); if (existing != null) { mergedCount += mergeAnnotations(item, existing); } else { addItem(containingClass, fieldItem); mergedCount += addAnnotations(item, fieldItem); } } }
private void addItem(@NonNull String fqn, @NonNull Item item) { // Not part of the API? if (apiFilter != null && item.isFiltered(apiFilter)) { if (isListIgnored()) { info("Skipping API because it is not part of the API file: " + item); } filteredCount++; return; } addItemUnconditionally(fqn, item); }
@NonNull static ClassItem create(@NonNull String classFqn, @NonNull ClassKind kind) { classFqn = ApiDatabase.getRawClass(classFqn); return new ClassItem(classFqn, kind); }
public static void main(String[] args) { new ExtractAnnotationsDriver().run(args); }
@Override public boolean visit(FieldDeclaration fieldDeclaration, MethodScope scope) { Annotation[] annotations = fieldDeclaration.annotations; if (hasRelevantAnnotations(annotations)) { FieldBinding fieldBinding = fieldDeclaration.binding; if (fieldBinding == null) { return false; } String fqn = getFqn(scope); ClassKind kind = scope.referenceContext instanceof TypeDeclaration ? ClassKind.forType((TypeDeclaration)scope.referenceContext) : ClassKind.CLASS; Item item = FieldItem.create(fqn, kind, fieldBinding); if (item != null && fqn != null) { addItem(fqn, item); addAnnotations(annotations, item); } } return false; }
@Override public boolean visit(TypeDeclaration memberTypeDeclaration, ClassScope scope) { return recordTypedefs(memberTypeDeclaration); }
public static void removeTypedefClasses(@NonNull File classDir, @NonNull File typedefFile) { // Perform immediately boolean quiet = false; boolean verbose = false; boolean dryRun = false; //noinspection ConstantConditions TypedefRemover remover = new TypedefRemover(null, quiet, verbose, dryRun); remover.removeFromTypedefFile(classDir, typedefFile); }
@Override public String toString() { return "Parameter #" + argIndex + " in " + super.toString(); }
private boolean hasRelevantAnnotations(@Nullable Annotation[] annotations) { if (annotations == null) { return false; } for (Annotation annotation : annotations) { if (isRelevantAnnotation(annotation)) { return true; } } return false; }
@NonNull static ClassItem create(@NonNull String classFqn, @NonNull ClassKind kind) { classFqn = ApiDatabase.getRawClass(classFqn); return new ClassItem(classFqn, kind); }
private boolean hasRelevantAnnotations(Element item) { for (Element annotationElement : getChildren(item)) { if (isRelevantAnnotation(annotationElement)) { return true; } } return false; }
public static void main(String[] args) { new ExtractAnnotationsDriver().run(args); }
@Override public boolean visit(TypeDeclaration memberTypeDeclaration, ClassScope scope) { return recordTypedefs(memberTypeDeclaration); }
@Override public String toString() { return "Parameter #" + argIndex + " in " + super.toString(); }
@Override public boolean visit(TypeDeclaration typeDeclaration, CompilationUnitScope scope) { return recordTypedefs(typeDeclaration); }
@Override public boolean visit(TypeDeclaration typeDeclaration, CompilationUnitScope scope) { return recordTypedefs(typeDeclaration); }