@Override public TokenWriter writeIdentifier(String token) { this.listener.onTokenWriterWrite(TokenType.IDENTIFIER, token, null, () -> delegate.writeIdentifier(token)); return this; }
@Override public <T> void visitCtParameterReference(CtParameterReference<T> reference) { printer.writeIdentifier(reference.getSimpleName()); }
@Override public <T> void visitCtUnboundVariableReference(CtUnboundVariableReference<T> reference) { printer.writeIdentifier(reference.getSimpleName()); }
@Override public void visitCtModuleReference(CtModuleReference moduleReference) { printer.writeIdentifier(moduleReference.getSimpleName()); }
@Override public <T> void visitCtLocalVariableReference(CtLocalVariableReference<T> reference) { printer.writeIdentifier(reference.getSimpleName()); }
@Override public <T> void visitCtCatchVariableReference(CtCatchVariableReference<T> reference) { printer.writeIdentifier(reference.getSimpleName()); }
/** * splits qualified name to primitive tokens and sends them to TokenWriter individually * @param qualifiedName to be sent qualified name */ public TokenWriter writeQualifiedName(String qualifiedName) { StringTokenizer st = new StringTokenizer(qualifiedName, QUALIFIED_NAME_SEPARATORS, true); while (st.hasMoreTokens()) { String token = st.nextToken(); if (token.length() == 1 && QUALIFIED_NAME_SEPARATORS.indexOf(token.charAt(0)) >= 0) { printer.writeSeparator(token); } else { printer.writeIdentifier(token); } } return printer; }
@Override public TokenWriter writeIdentifier(String token) { if (isMuted()) { getPrinterHelper().setShouldWriteTabs(false); return this; } delegate.writeIdentifier(token); return this; } @Override
@Override public <T> void visitCtVariableRead(CtVariableRead<T> variableRead) { enterCtExpression(variableRead); printer.writeIdentifier(variableRead.getVariable().getSimpleName()); exitCtExpression(variableRead); }
@Override public <T> void visitCtVariableWrite(CtVariableWrite<T> variableWrite) { enterCtExpression(variableWrite); printer.writeIdentifier(variableWrite.getVariable().getSimpleName()); exitCtExpression(variableWrite); }
@Override public void visitCtContinue(CtContinue continueStatement) { enterCtStatement(continueStatement); printer.writeKeyword("continue"); if (continueStatement.getTargetLabel() != null) { printer.writeSpace().writeIdentifier(continueStatement.getTargetLabel()); } exitCtStatement(continueStatement); }
@Override public void visitCtTypeParameterReference(CtTypeParameterReference ref) { if (ref.isImplicit()) { return; } elementPrinterHelper.writeAnnotations(ref); if (printQualified(ref)) { elementPrinterHelper.writeQualifiedName(ref.getQualifiedName()); } else { printer.writeIdentifier(ref.getSimpleName()); } }
@Override public <T> void visitCtCatchVariable(CtCatchVariable<T> catchVariable) { if (env.isPreserveLineNumbers()) { getPrinterHelper().adjustStartPosition(catchVariable); } elementPrinterHelper.writeModifiers(catchVariable); scan(catchVariable.getType()); printer.writeSpace(); printer.writeIdentifier(catchVariable.getSimpleName()); }
@Override public void visitCtTypeParameter(CtTypeParameter typeParameter) { elementPrinterHelper.writeAnnotations(typeParameter); printer.writeIdentifier(typeParameter.getSimpleName()); if (typeParameter.getSuperclass() != null && typeParameter.getSuperclass().isImplicit() == false) { printer.writeSpace().writeKeyword("extends").writeSpace(); scan(typeParameter.getSuperclass()); } }
@Override public <A extends Annotation> void visitCtAnnotationType(CtAnnotationType<A> annotationType) { visitCtType(annotationType); printer.writeSeparator("@").writeKeyword("interface") .writeSpace().writeIdentifier(annotationType.getSimpleName()) .writeSpace().writeSeparator("{").incTab(); elementPrinterHelper.writeElementList(annotationType.getTypeMembers()); printer.decTab().writeSeparator("}"); }
@Override public <T> void visitCtParameter(CtParameter<T> parameter) { elementPrinterHelper.writeComment(parameter); elementPrinterHelper.writeAnnotations(parameter); elementPrinterHelper.writeModifiers(parameter); if (parameter.isVarArgs()) { scan(((CtArrayTypeReference<T>) parameter.getType()).getComponentType()); printer.writeSeparator("..."); } else { scan(parameter.getType()); } printer.writeSpace(); printer.writeIdentifier(parameter.getSimpleName()); }
@Override public <T> void visitCtEnumValue(CtEnumValue<T> enumValue) { elementPrinterHelper.visitCtNamedElement(enumValue, sourceCompilationUnit); elementPrinterHelper.writeComment(enumValue, CommentOffset.BEFORE); printer.writeIdentifier(enumValue.getSimpleName()); if (enumValue.getDefaultExpression() != null) { CtConstructorCall<?> constructorCall = (CtConstructorCall<?>) enumValue.getDefaultExpression(); if (!constructorCall.isImplicit()) { elementPrinterHelper.printList(constructorCall.getArguments(), null, false, "(", false, false, ",", true, false, ")", expr -> scan(expr)); } if (constructorCall instanceof CtNewClass) { scan(((CtNewClass<?>) constructorCall).getAnonymousClass()); } } }
@Override public void visitCtModule(CtModule module) { enter(module); if (module.isOpenModule()) { printer.writeKeyword("open").writeSpace(); } printer.writeKeyword("module").writeSpace().writeIdentifier(module.getSimpleName()); printer.writeSpace().writeSeparator("{").incTab().writeln(); for (CtModuleDirective moduleDirective : module.getModuleDirectives()) { scan(moduleDirective); } printer.decTab().writeSeparator("}"); exit(module); }
@Override public <T> void visitCtField(CtField<T> f) { elementPrinterHelper.writeComment(f, CommentOffset.BEFORE); elementPrinterHelper.visitCtNamedElement(f, sourceCompilationUnit); elementPrinterHelper.writeModifiers(f); scan(f.getType()); printer.writeSpace(); printer.writeIdentifier(f.getSimpleName()); if (f.getDefaultExpression() != null) { printer.writeSpace().writeOperator("=").writeSpace(); scan(f.getDefaultExpression()); } printer.writeSeparator(";"); elementPrinterHelper.writeComment(f, CommentOffset.AFTER); }
@Override public <T> void visitCtAnnotationMethod(CtAnnotationMethod<T> annotationMethod) { elementPrinterHelper.writeComment(annotationMethod); elementPrinterHelper.visitCtNamedElement(annotationMethod, sourceCompilationUnit); elementPrinterHelper.writeModifiers(annotationMethod); scan(annotationMethod.getType()); printer.writeSpace(); printer.writeIdentifier(annotationMethod.getSimpleName()); printer.writeSeparator("(").writeSeparator(")"); if (annotationMethod.getDefaultExpression() != null) { printer.writeSpace().writeKeyword("default").writeSpace(); scan(annotationMethod.getDefaultExpression()); } printer.writeSeparator(";"); }