📄 proxygenerator.java
字号:
m_writer.println(" throws " + ClassNames.IOEXCEPTION); m_writer.openBlock(); if (m_templateUnit.getRenderArgs().hasNext()) { m_writer.println( "ImplData" + m_templateUnit.getGenericParams().generateGenericParamsList() + " implData = getImplData();"); for (Iterator<AbstractArgument> i = m_templateUnit.getRenderArgs(); i.hasNext(); ) { AbstractArgument arg = i.next(); m_writer.println("implData." + arg.getSetterName() + "(" + arg.getName() + ");"); } } if (m_templateUnit.getGenericParams().getCount() > 0) { m_writer.print("@SuppressWarnings(\"unchecked\") "); } m_writer.println( "Intf instance = (Intf) getTemplateManager().constructImpl(this);" ); m_writer.println("instance.renderNoFlush(" + ArgNames.WRITER + ");"); m_writer.println("reset();"); m_writer.closeBlock(); m_writer.println(); } private void generateMakeRenderer() { m_writer.print("public " + ClassNames.RENDERER + " makeRenderer"); m_writer.openList(); m_templateUnit.printRenderArgsDecl(m_writer); m_writer.closeList(); m_writer.println(); m_writer.openBlock(); m_writer.print( "return new " + ClassNames.ABSTRACT_RENDERER + "() "); m_writer.openBlock(); m_writer.println("@Override"); m_writer.println("public void renderTo(" + ArgNames.WRITER_DECL + ")"); m_writer.println( " throws " + ClassNames.IOEXCEPTION); m_writer.openBlock(); m_writer.print("render"); m_writer.openList(); m_writer.printListElement(ArgNames.WRITER); m_templateUnit.printRenderArgs(m_writer); m_writer.closeList(); m_writer.println(";"); m_writer.closeBlock(); m_writer.closeBlock(";"); m_writer.closeBlock(); m_writer.println(); } private void generateImplData() { m_templateUnit.getGenericParams() .suppressGenericHidingWarnings(m_writer); m_writer.println( "protected static class ImplData" + m_templateUnit.getGenericParams().generateGenericsDeclaration()); m_writer.print(" extends "); if(m_templateUnit.hasParentPath()) { m_writer.println(PathUtils.getFullyQualifiedIntfClassName( m_templateUnit.getParentPath()) + ".ImplData"); } else { m_writer.println(ClassNames.IMPL_DATA); } m_writer.openBlock(); if (m_templateUnit.isOriginatingJamonContext()) { m_writer.println( "private " + m_templateUnit.getJamonContextType() + " m_jamonContext;"); m_writer.println( "public " + m_templateUnit.getJamonContextType() + " getJamonContext()"); m_writer.openBlock(); m_writer.println("return m_jamonContext;"); m_writer.closeBlock(); m_writer.println( "public void setJamonContext(" + m_templateUnit.getJamonContextType() + " p_jamonContext)"); m_writer.openBlock(); m_writer.println("m_jamonContext = p_jamonContext;"); m_writer.closeBlock(); } for (Iterator<AbstractArgument> i = m_templateUnit.getDeclaredArgs(); i.hasNext(); ) { i.next().generateImplDataCode(m_writer); } m_writer.closeBlock(); if (! m_templateUnit.isParent()) { m_writer.println("@Override"); m_writer.println( "protected ImplData" + m_templateUnit.getGenericParams().generateGenericParamsList() + " makeImplData()"); m_writer.openBlock(); m_writer.println( "return new ImplData" + m_templateUnit.getGenericParams().generateGenericParamsList() + "();"); m_writer.closeBlock(); } m_writer.println( "@Override @SuppressWarnings(\"unchecked\") protected ImplData" + m_templateUnit.getGenericParams().generateGenericParamsList() + " getImplData()"); m_writer.openBlock(); m_writer.println( "return (ImplData" + m_templateUnit.getGenericParams().generateGenericParamsList() + ") super.getImplData();"); m_writer.closeBlock(); } private void generateJamonContextSetter() { m_writer.println(); if (! m_templateUnit.isOriginatingJamonContext()) { m_writer.print("@Override "); } m_writer.print("public " ); printFullProxyType(); m_writer.println( " setJamonContext(" + m_templateUnit.getJamonContextType() + " p_jamonContext)"); m_writer.openBlock(); m_writer.println("getImplData().setJamonContext(p_jamonContext);"); m_writer.println("return this;"); m_writer.closeBlock(); } private void generateOptionalArgs() { for (Iterator<OptionalArgument> i = m_templateUnit.getDeclaredOptionalArgs(); i.hasNext(); ) { OptionalArgument arg = i.next(); m_writer.println(); m_writer.println("protected " + arg.getType() + " " + arg.getName() + ";"); m_writer.print("public final "); printFullProxyType(); m_writer.println( " " + arg.getSetterName() + "(" + arg.getType() +" p_" + arg.getName() + ")"); m_writer.openBlock(); m_writer.println( "(" + "getImplData()" + ")." + arg.getSetterName() + "(p_" + arg.getName() + ");"); m_writer.println("return this;"); m_writer.closeBlock(); } } private void printFullProxyType() { String pkgName = getPackageName(); if (pkgName.length() > 0) { m_writer.print(pkgName + "."); } m_writer.print(getClassName()); m_writer.print(m_templateUnit.getGenericParams().generateGenericsDeclaration()); } private void generateIntf() { m_templateUnit.getGenericParams() .suppressGenericHidingWarnings(m_writer); m_writer.println( "protected interface Intf" + m_templateUnit.getGenericParams().generateGenericsDeclaration()); m_writer.print(" extends " + (m_templateUnit.hasParentPath() ? PathUtils.getFullyQualifiedIntfClassName( m_templateUnit.getParentPath()) + ".Intf" : ClassNames.TEMPLATE_INTF)); m_writer.openBlock(); generateFragmentInterfaces(true); if(! m_templateUnit.isParent()) { m_writer.println("void renderNoFlush(" + ArgNames.WRITER_DECL + ") throws " + ClassNames.IOEXCEPTION + ";"); m_writer.println(); } m_writer.closeBlock(); } private void generateParentRendererClass() { m_writer.println("public abstract class ParentRenderer"); m_writer.openBlock(); m_writer.println("protected ParentRenderer() {}"); for (Iterator<OptionalArgument> i = m_templateUnit.getSignatureOptionalArgs(); i.hasNext(); ) { OptionalArgument arg = i.next(); m_writer.println(); String name = arg.getName(); m_writer.print("public final ParentRenderer "); m_writer.println(arg.getSetterName() + "(" + arg.getType() +" p_" + name + ")"); m_writer.openBlock(); m_writer.println(getClassName() + ".this." + arg.getSetterName() + "(" + "p_" + name + ");"); m_writer.println("return this;"); m_writer.closeBlock(); } if (m_templateUnit.getJamonContextType() != null) { m_writer.print( "public final ParentRenderer setJamonContext(" + m_templateUnit.getJamonContextType() + " p_jamonContext)"); m_writer.openBlock(); m_writer.println( getClassName() + ".this.setJamonContext(p_jamonContext);"); m_writer.println("return this;"); m_writer.closeBlock(); } if (! m_templateUnit.hasParentPath()) { m_writer.print("public void render"); m_writer.openList(); m_writer.printListElement(ArgNames.WRITER_DECL); m_templateUnit.printDeclaredRenderArgsDecl(m_writer); m_writer.closeList(); m_writer.println(); m_writer.print(" throws " + ClassNames.IOEXCEPTION); m_writer.openBlock(); m_writer.print("renderNoFlush"); m_writer.openList(); m_writer.printListElement(ArgNames.WRITER); m_templateUnit.printDeclaredRenderArgs(m_writer); m_writer.closeList(); m_writer.println(";"); m_writer.println(ArgNames.WRITER + ".flush();"); m_writer.closeBlock(); m_writer.print("public void renderNoFlush"); m_writer.openList(); m_writer.printListElement(ArgNames.WRITER_DECL); m_templateUnit.printDeclaredRenderArgsDecl(m_writer); m_writer.closeList(); m_writer.println(); m_writer.print(" throws " + ClassNames.IOEXCEPTION); m_writer.openBlock(); m_writer.print("renderChild"); m_writer.openList(); m_writer.printListElement(ArgNames.WRITER); m_templateUnit.printDeclaredRenderArgs(m_writer); m_writer.closeList(); m_writer.println(";"); m_writer.closeBlock(); generateMakeRenderer(); } else { generateMakeParentRenderer(); } m_writer.print("protected abstract void renderChild"); m_writer.openList(); m_writer.printListElement(ArgNames.WRITER_DECL); m_templateUnit.printRenderArgsDecl(m_writer); m_writer.closeList(); m_writer.println(); m_writer.println(" throws " + ClassNames.IOEXCEPTION + ";"); m_writer.closeBlock(); } private void generateMakeParentRenderer() { String parentRendererClass = PathUtils.getFullyQualifiedIntfClassName( m_templateUnit.getParentPath()) + ".ParentRenderer"; m_writer.print("public " + parentRendererClass + " makeParentRenderer"); m_writer.openList(); m_templateUnit.printDeclaredRenderArgsDecl(m_writer); m_writer.closeList(); m_writer.println(); m_writer.openBlock(); m_writer.print("return new " + parentRendererClass + "() "); m_writer.openBlock(); m_writer.print("@Override protected void renderChild"); m_writer.openList(); m_writer.printListElement(ArgNames.WRITER_DECL); m_templateUnit.printParentRenderArgsDecl(m_writer); m_writer.closeList(); m_writer.println(); m_writer.println(" throws " + ClassNames.IOEXCEPTION); m_writer.openBlock(); m_writer.print(PathUtils .getFullyQualifiedIntfClassName(getClassName())); if (m_templateUnit.isParent()) { m_writer.print(".ParentRenderer.this.renderChild"); } else { m_writer.print(".this.renderNoFlush"); } m_writer.openList(); m_writer.printListElement(ArgNames.WRITER); m_templateUnit.printRenderArgs(m_writer); m_writer.closeList(); m_writer.println(";"); m_writer.closeBlock(); m_writer.closeBlock(";"); m_writer.closeBlock(); } private void generateEpilogue() { m_writer.println(); m_writer.closeBlock(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -