@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)); }
@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 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 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, CtStatement statement) { for (CtStatement e : Query.getElements(this, insertionPoints)) { e.insertAfter(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, 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, CtStatement statement) { for (CtStatement e : Query.getElements(this, insertionPoints)) { e.insertAfter(statement); } return (T) this; }
@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 <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, 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; }
/** * Within a given factory, returns all the program elements that match the * filter. * * @param <E> * the type of the sought program elements * @param factory * the factory that contains the elements where to recursive * search on * @param filter * the filter which defines the matching criteria */ public static <E extends CtElement> List<E> getElements(Factory factory, Filter<E> filter) { return getElements(factory.Package().getRootPackage(), filter); }
/** * Changes name of a method, propagates the change in the executable references of the model. */ public static void changeMethodName(final CtMethod<?> method, String newName) { final List<CtExecutableReference<?>> references = Query.getElements(method.getFactory(), new TypeFilter<CtExecutableReference<?>>(CtExecutableReference.class) { @Override public boolean matches(CtExecutableReference<?> reference) { return reference.getDeclaration() == method; } }); method.setSimpleName(newName); for (CtExecutableReference<?> reference : references) { reference.setSimpleName(newName); } }
/** * 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 String typeQFN = type.getQualifiedName(); final List<CtTypeReference<?>> references = Query.getElements(type.getFactory(), new TypeFilter<CtTypeReference<?>>(CtTypeReference.class) { @Override public boolean matches(CtTypeReference<?> reference) { String refFQN = reference.getQualifiedName(); return typeQFN.equals(refFQN); } }); type.setSimpleName(name); for (CtTypeReference<?> reference : references) { reference.setSimpleName(name); } }
protected void generateProcessedSourceFilesUsingTypes(Filter<CtType<?>> typeFilter) { if (factory.getEnvironment().getDefaultFileGenerator() != null) { factory.getEnvironment().debugMessage("Generating source using types..."); ProcessingManager processing = new QueueProcessingManager(factory); processing.addProcessor(factory.getEnvironment().getDefaultFileGenerator()); if (typeFilter != null) { processing.process(Query.getElements(factory.getModel().getUnnamedModule(), typeFilter)); } else { processing.process(factory.getModel().getAllModules()); } } }
@Override public <T extends CtBlock<R>> T insertBefore( Filter<? extends CtStatement> insertionPoints, CtStatementList statements) { for (CtStatement e : Query.getElements(this, insertionPoints)) { e.insertBefore(statements); } return (T) this; }
private CtMethod<?> createStringMutant(CtMethod<?> method, int original_lit_index, String newValue) { CtMethod<?> cloned_method = CloneHelper.cloneTestMethodForAmp(method, "_literalMutationString"); Counter.updateInputOf(cloned_method, 1); CtLiteral toReplace = Query.getElements(cloned_method.getBody(), new LiteralToBeMutedFilter()) .get(original_lit_index); toReplace.replace(cloned_method.getFactory().Code().createLiteral(newValue)); DSpotUtils.addComment(toReplace, "TestDataMutator on strings", CtComment.CommentType.INLINE); return cloned_method; }
private static List<CtInvocation<?>> getMethods(CtClass<? extends Template<?>> root) { CtExecutableReference<?> methodRef = root.getFactory().Executable() .createReference(root.getFactory().Type().createReference(TemplateParameter.class), root.getFactory().Type().createTypeParameterReference("T"), "S"); List<CtInvocation<?>> meths = Query.getElements(root, new InvocationFilter(methodRef)); return meths; }