/** {@inheritDoc} */ @Override public void header(final ParserContext context) { out.println("package " + context.getPackageName() + ";"); if (!context.getImports().isEmpty()) { out.println(); for (final String importPackage : context.getImports()) { out.println("import " + importPackage + ";"); } } out.println(); out.println("/**"); out.println(format(" * %s template.", context.getClassName())); out.println(" */"); out.println("public class " + context.getClassName() + " {"); out.println(); out.println(" /**"); out.println(format(" * Generates %s template.", context.getClassName())); out.println(" *"); out.println(" * @param arguments"); out.println(" * arguments"); out.println(" * @return generated template"); out.println(" */"); out.println( format( " public String generate(final %s arguments) {", context.getArgumentsClassName())); out.println(" final java.io.StringWriter w = new java.io.StringWriter();"); out.println(" generate(arguments, w);"); out.println(" return w.toString();"); out.println(" }"); out.println(); out.println(" /**"); out.println( format(" * Writes %s template to a {@link java.io.Writer}.", context.getClassName())); out.println(" *"); out.println(" * @param arguments"); out.println(" * arguments"); out.println(" * @param writer"); out.println(" * writer to output to"); out.println(" */"); out.println( format( " public void generate(final %s arguments, final java.io.Writer writer) {", context.getArgumentsClassName())); out.println(" final java.io.PrintWriter out = new java.io.PrintWriter(writer);"); }