@Override protected List<Statement> generateCreateInstanceStatements(final ClassStructureBuilder<?> bodyBlockBuilder, final Injectable injectable, final DependencyGraph graph, final InjectionContext injectionContext) { final List<Statement> stmts = new ArrayList<>(); final String elementVar = "element"; stmts.add(declareFinalVariable(elementVar, Element.class, loadStatic(DomGlobal.class, "document").invoke("createElement", tagName))); for (final Property property : properties) { stmts.add(loadVariable(elementVar).invoke("setAttribute", loadLiteral(property.name()), loadLiteral(property.value()))); } if (!classNames.isEmpty()) { stmts.add(loadVariable(elementVar).loadField("className") .assignValue(loadLiteral(classNames.stream().collect(joining(" "))))); } final String retValVar = "retVal"; stmts.add(declareFinalVariable(retValVar, type, invokeStatic(Js.class, "cast", loadVariable(elementVar)))); if (implementsNativeHasValueAndRequiresGeneratedInvocation(type)) { stmts.add(Stmt.invokeStatic(NativeHasValueAccessors.class, "registerAccessor", loadVariable(retValVar), createAccessorImpl(type, retValVar))); } stmts.add(loadVariable(retValVar).returnValue()); return stmts; }
@Override protected List<Statement> generateCreateInstanceStatements(final ClassStructureBuilder<?> bodyBlockBuilder, final Injectable injectable, final DependencyGraph graph, final InjectionContext injectionContext) { final List<Statement> stmts = new ArrayList<>(); final String elementVar = "element"; stmts.add(declareFinalVariable(elementVar, Element.class, loadStatic(DomGlobal.class, "document").invoke("createElement", tagName))); for (final Property property : properties) { stmts.add(loadVariable(elementVar).invoke("setAttribute", loadLiteral(property.name()), loadLiteral(property.value()))); } if (!classNames.isEmpty()) { stmts.add(loadVariable(elementVar).loadField("className") .assignValue(loadLiteral(classNames.stream().collect(joining(" "))))); } final String retValVar = "retVal"; stmts.add(declareFinalVariable(retValVar, type, invokeStatic(Js.class, "cast", loadVariable(elementVar)))); if (implementsNativeHasValueAndRequiresGeneratedInvocation(type)) { stmts.add(Stmt.invokeStatic(NativeHasValueAccessors.class, "registerAccessor", loadVariable(retValVar), createAccessorImpl(type, retValVar))); } stmts.add(loadVariable(retValVar).returnValue()); return stmts; }