@Override public void scan(CtRole role, Map<String, ? extends CtElement> elements) { // TODO Auto-generated method stub super.scan(role, elements); } }
@Override public void scan(CtRole role, CtElement element) { //This is called only for elements which are in single value attribute. Like `CtType#superClass` if (searchMatchInList(role, Collections.singletonList(element), false) == 0) { super.scan(role, element); } }
@Override public void scan(CtRole role, Object o) { if (isTerminated() || o == null) { return; } if (o instanceof CtElement) { scan(role, (CtElement) o); } else if (o instanceof Collection<?>) { scan(role, (Collection<? extends CtElement>) o); } else if (o instanceof Map<?, ?>) { for (Object obj : ((Map) o).values()) { scan(role, obj); if (isTerminated()) { return; } } } }
@Override public void scan(CtRole role, Map<String, ? extends CtElement> elements) { if (isTerminated() || elements == null) { return; } for (CtElement obj : elements.values()) { scan(role, obj); if (isTerminated()) { return; } } }
@Override public void visitCtCompilationUnit(CtCompilationUnit compilationUnit) { if (isVisitCompilationUnitContent()) { enter(compilationUnit); scan(CtRole.COMMENT, compilationUnit.getComments()); scan(CtRole.ANNOTATION, compilationUnit.getAnnotations()); scan(CtRole.PACKAGE_DECLARATION, compilationUnit.getPackageDeclaration()); scan(CtRole.DECLARED_IMPORT, compilationUnit.getImports()); //visit directly the module (instead of reference only) scan(CtRole.DECLARED_MODULE, compilationUnit.getDeclaredModule()); //visit directly the types (instead of references only) scan(CtRole.DECLARED_TYPE, compilationUnit.getDeclaredTypes()); exit(compilationUnit); } else { super.visitCtCompilationUnit(compilationUnit); } }
@Override public void scan(CtRole role, Collection<? extends CtElement> elements) { if (isTerminated() || elements == null) { return; } // we use defensive copy so as to be able to change the class while scanning // otherwise one gets a ConcurrentModificationException for (CtElement e : new ArrayList<>(elements)) { scan(role, e); if (isTerminated()) { return; } } }
.scan(element.getRoleInParent(), element);
/** * @return true if `element` still exist in the printed model. false if it was removed or was never there */ public boolean isElementExists(SourcePositionHolder element) { if (element instanceof CtExtendedModifier) { CtExtendedModifier modifier = (CtExtendedModifier) element; if (this.element instanceof CtModifiable) { return ((CtModifiable) this.element).hasModifier(modifier.getKind()); } } EarlyTerminatingScanner<Boolean> scanner = new EarlyTerminatingScanner<Boolean>() { @Override protected void enter(CtElement e) { if (element == e) { setResult(Boolean.TRUE); terminate(); } } }; scanner.scan(this.element); return scanner.getResult() == Boolean.TRUE; }
super.scan(element);
super.scan(role, tobeMatched.getTargets().get(0));
super.scan(role, object);