@Override @SuppressWarnings("unchecked") public <E extends CtElement> List<E> getAnnotatedChildren(Class<? extends Annotation> annotationType) { return (List<E>) Query.getElements(this, new AnnotationFilter<>(CtElement.class, annotationType)); }
/** * Within a given factory, returns all the program element references that * match the filter. * * @param <R> * the type of the sought program element references * @param factory * the factory that contains the references where to recursive * search on * @param filter * the filter which defines the matching criteria */ public static <R extends CtReference> List<R> getReferences( Factory factory, Filter<R> filter) { return getReferences(factory.Package().getRootPackage(), filter); }
@Override public <T extends CtStatementList> T insertBefore(Filter<? extends CtStatement> insertionPoints, CtStatementList statements) { for (CtStatement e : Query.getElements(this, insertionPoints)) { e.insertBefore(statements); } return (T) this; }
@Override public Set<CtTypeReference<?>> getUsedTypes(boolean includeSamePackage) { Set<CtTypeReference<?>> typeRefs = new QualifiedNameBasedSortedSet<>(); for (CtTypeReference<?> typeRef : Query.getReferences(this, new ReferenceTypeFilter<CtTypeReference<?>>(CtTypeReference.class))) { if (isValidTypeReference(typeRef) && shouldIncludeSamePackage(includeSamePackage, typeRef)) { typeRefs.add(typeRef); } } return typeRefs; }
@Override public <T extends CtStatementList> T insertBefore(Filter<? extends CtStatement> insertionPoints, CtStatement statement) { for (CtStatement e : Query.getElements(this, insertionPoints)) { e.insertBefore(statement); } return (T) this; }
/** * A helper method that recursively redirects all the type references from a * source type to a target type in the given element. */ public static void redirectTypeReferences(CtElement element, CtTypeReference<?> source, CtTypeReference<?> target) { List<CtTypeReference<?>> refs = Query.getReferences(element, new ReferenceTypeFilter<>(CtTypeReference.class)); String srcName = source.getQualifiedName(); String targetName = target.getSimpleName(); CtPackageReference targetPackage = target.getPackage(); for (CtTypeReference<?> ref : refs) { if (ref.getQualifiedName().equals(srcName)) { ref.setSimpleName(targetName); ref.setPackage(targetPackage); } } }
@Override public <T extends CtStatementList> T insertBefore(Filter<? extends CtStatement> insertionPoints, CtStatementList statements) { for (CtStatement e : Query.getElements(this, insertionPoints)) { e.insertBefore(statements); } return (T) this; }
public <T extends CtReference> List<T> getReferences(ReferenceFilter<T> filter) { return Query.getReferences(this, filter); }
@Override public <T extends CtStatementList> T insertAfter(Filter<? extends CtStatement> insertionPoints, CtStatement statement) { for (CtStatement e : Query.getElements(this, insertionPoints)) { e.insertAfter(statement); } return (T) this; }
/** * Within a given factory, returns all the program element references that * match the filter. * * @param <R> * the type of the sought program element references * @param factory * the factory that contains the references where to recursive * search on * @param filter * the filter which defines the matching criteria */ public static <R extends CtReference> List<R> getReferences( Factory factory, ReferenceFilter<R> filter) { List<R> r = new ArrayList<R>(); r.addAll(getReferences(factory.Package().getRootPackage(), filter)); return r; }
@Override public <T extends CtStatementList> T insertAfter(Filter<? extends CtStatement> insertionPoints, CtStatement statement) { for (CtStatement e : Query.getElements(this, insertionPoints)) { e.insertAfter(statement); } return (T) this; }
@Override public Set<CtTypeReference<?>> getUsedTypes(boolean includeSamePackage) { Set<CtTypeReference<?>> typeRefs = new HashSet<CtTypeReference<?>>(); for (CtTypeReference<?> typeRef : Query .getReferences(this, new ReferenceTypeFilter<CtTypeReference<?>>(CtTypeReference.class))) { if (!(typeRef.isPrimitive() || (typeRef instanceof CtArrayTypeReference) || typeRef.toString() .equals(CtTypeReference.NULL_TYPE_NAME) || ((typeRef.getPackage() != null) && "java.lang" .equals(typeRef.getPackage().toString()))) && !(!includeSamePackage && getPackageReference(typeRef) .equals(this.getPackage().getReference()))) { typeRefs.add(typeRef); } } return typeRefs; }
@Override public <T extends CtStatementList> T insertAfter(Filter<? extends CtStatement> insertionPoints, CtStatement statement) { for (CtStatement e : Query.getElements(this, insertionPoints)) { e.insertAfter(statement); } return (T) this; }
/** * Changes name of a type element. * * @param type * Type in the AST. * @param name * New name of the element. */ public static void changeTypeName(final CtType<?> type, String name) { final List<CtTypeReference<?>> references = Query.getReferences(type.getFactory(), new AbstractReferenceFilter<CtTypeReference<?>>(CtTypeReference.class) { @Override public boolean matches(CtTypeReference<?> reference) { return type.getQualifiedName().equals(reference.getQualifiedName()); } }); type.setSimpleName(name); for (CtTypeReference<?> reference : references) { reference.setSimpleName(name); } } }
@Override public <T extends CtStatementList> T insertAfter(Filter<? extends CtStatement> insertionPoints, CtStatementList statements) { for (CtStatement e : Query.getElements(this, insertionPoints)) { e.insertAfter(statements); } return (T) this; }
/** * A helper method that recursively redirects all the type references from a * source type to a target type in the given element. */ public static void redirectTypeReferences(CtElement element, CtTypeReference<?> source, CtTypeReference<?> target) { List<CtTypeReference<?>> refs = Query.getReferences(element, new ReferenceTypeFilter<CtTypeReference<?>>(CtTypeReference.class)); String srcName = source.getQualifiedName(); String targetName = target.getSimpleName(); CtPackageReference targetPackage = target.getPackage(); for (CtTypeReference<?> ref : refs) { if (ref.getQualifiedName().equals(srcName)) { ref.setSimpleName(targetName); ref.setPackage(targetPackage); } } }
@Override public <T extends CtStatementList> T insertBefore(Filter<? extends CtStatement> insertionPoints, CtStatement statement) { for (CtStatement e : Query.getElements(this, insertionPoints)) { e.insertBefore(statement); } return (T) this; }
@Override public <T extends CtStatementList> T insertAfter(Filter<? extends CtStatement> insertionPoints, CtStatementList statements) { for (CtStatement e : Query.getElements(this, insertionPoints)) { e.insertAfter(statements); } return (T) this; }
@Override public <T extends CtStatementList> T insertBefore(Filter<? extends CtStatement> insertionPoints, CtStatementList statements) { for (CtStatement e : Query.getElements(this, insertionPoints)) { e.insertBefore(statements); } return (T) this; }
@Override public <T extends CtStatementList> T insertAfter(Filter<? extends CtStatement> insertionPoints, CtStatementList statements) { for (CtStatement e : Query.getElements(this, insertionPoints)) { e.insertAfter(statements); } return (T) this; }