/** * Exits a statement. */ protected void exitCtStatement(CtStatement statement) { if (!(statement instanceof CtBlock || statement instanceof CtIf || statement instanceof CtFor || statement instanceof CtForEach || statement instanceof CtWhile || statement instanceof CtTry || statement instanceof CtSwitch || statement instanceof CtSynchronized || statement instanceof CtClass || statement instanceof CtComment)) { if (context.isStatement(statement) && !context.isFirstForVariable() && !context.isNextForVariable()) { printer.writeSeparator(";"); } } elementPrinterHelper.writeComment(statement, CommentOffset.AFTER); }
/** * Writes a statement. */ public void writeStatement(CtStatement statement) { try (Writable _context = prettyPrinter.getContext().modify().setStatement(statement)) { prettyPrinter.scan(statement); } }
@Override public <T> void visitCtLiteral(CtLiteral<T> literal) { enterCtExpression(literal); printer.writeLiteral(LiteralHelper.getLiteralToken(literal)); exitCtExpression(literal); }
@Override public void visitCtDo(CtDo doLoop) { enterCtStatement(doLoop); printer.writeKeyword("do"); elementPrinterHelper.writeIfOrLoopBlock(doLoop.getBody()); printer.writeKeyword("while").writeSpace().writeSeparator("("); scan(doLoop.getLoopingExpression()); printer.writeSpace().writeSeparator(")"); exitCtStatement(doLoop); }
@Override public void visitCtProvidedService(CtProvidedService moduleProvidedService) { printer.writeKeyword("provides").writeSpace(); scan(moduleProvidedService.getServiceType()); this.elementPrinterHelper.printList(moduleProvidedService.getImplementationTypes(), null, false, " with", true, false, ",", true, false, null, implementations -> scan(implementations)); printer.writeSeparator(";").writeln(); }
@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("}"); }
/** * Creates a new code generator visitor. */ public DefaultJavaPrettyPrinter(Environment env) { this.env = env; this.imports = new HashSet<>(); setPrinterTokenWriter(new DefaultTokenWriter(new PrinterHelper(env))); if (env.isAutoImports()) { this.importsContext = new ImportScannerImpl(); } else { this.importsContext = new MinimalImportScanner(); } }
@Override public <T> void visitCtArrayTypeReference(CtArrayTypeReference<T> reference) { if (reference.isImplicit()) { return; } scan(reference.getComponentType()); if (!context.skipArray()) { printer.writeSeparator("[").writeSeparator("]"); } }
private void reset() { printer.reset(); context = new PrintingContext(); if (env.isAutoImports()) { this.importsContext = new ImportScannerImpl(); } else { this.importsContext = new MinimalImportScanner(); } }
public void writePackageLine(String packageQualifiedName) { printer.writeKeyword("package").writeSpace(); writeQualifiedName(packageQualifiedName).writeSeparator(";").writeln(); }
private <T> void visitCtType(CtType<T> type) { elementPrinterHelper.writeComment(type, CommentOffset.BEFORE); getPrinterHelper().mapLine(type, sourceCompilationUnit); if (type.isTopLevel()) { context.currentTopLevel = type; } elementPrinterHelper.visitCtNamedElement(type, sourceCompilationUnit); elementPrinterHelper.writeModifiers(type); }
@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()); } }
/** * Gets the currently pretty-printed string. */ @Override public String toString() { return printer.getPrinterHelper().toString(); }
/** * @return current line separator. By default there is CR LF, LF or CR depending on the Operation system * defined by System.getProperty("line.separator") */ public String getLineSeparator() { return getPrinterHelper().getLineSeparator(); }
/** * @param lineSeparator characters which will be printed as End of line. * By default there is System.getProperty("line.separator") */ public DefaultJavaPrettyPrinter setLineSeparator(String lineSeparator) { getPrinterHelper().setLineSeparator(lineSeparator); return this; }
@Override public void visitCtJavaDocTag(CtJavaDocTag docTag) { /* * is not called during normal printing of java sources. * It can be called only when CtJavaDocTag has to be printed directly. * E.g. from CtJavaDocTag#toString * Write directly to PrinterHelper, because java doc tag is not a java token. Normally it is part of COMMENT token. */ CommentHelper.printJavaDocTag(printer.getPrinterHelper(), docTag, x -> { return x; }); }
@Override protected boolean addClassImport(CtTypeReference<?> ref) { boolean shouldTypeBeImported = this.shouldTypeBeImported(ref); if (shouldTypeBeImported) { return super.addClassImport(ref); } else { return false; } }
@Override public Map<Integer, Integer> getLineNumberMapping() { return getPrinterHelper().getLineNumberMapping(); }
@Override public void visitCtWhile(CtWhile whileLoop) { enterCtStatement(whileLoop); printer.writeKeyword("while").writeSpace().writeSeparator("("); scan(whileLoop.getLoopingExpression()); printer.writeSeparator(")"); elementPrinterHelper.writeIfOrLoopBlock(whileLoop.getBody()); exitCtStatement(whileLoop); }
@Override public String getResult() { return printer.getPrinterHelper().toString(); }