public static ContextualStatementBuilder getPublicOrPrivateFieldValue(final FactoryController controller, final MetaField field) { if (field.isPublic()) { return loadVariable("instance").loadField(field); } else { return controller.exposedFieldStmt(field); } }
@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; }
private Object createHandlerForMethod(final MetaMethod method) { return ObjectBuilder .newInstanceOf(PropertyChangeHandler.class) .extend() .publicOverridesMethod("onPropertyChange", finalOf(PropertyChangeEvent.class, "event")) .append(castTo(method.getDeclaringClass(), loadVariable("agent").loadField("target")).invoke(method, loadVariable("event"))) .finish() .finish(); }
createInstanceStatements.add(loadVariable("this").invoke(privateFieldInjectorName, loadVariable("instance"), loadVariable(fieldDepVarName))); } else { createInstanceStatements.add(loadVariable("instance").loadField(field).assignValue(loadVariable(fieldDepVarName)));
private Object createHandlerForMethod(final MetaMethod method) { return ObjectBuilder .newInstanceOf(PropertyChangeHandler.class) .extend() .publicOverridesMethod("onPropertyChange", finalOf(PropertyChangeEvent.class, "event")) .append(castTo(method.getDeclaringClass(), loadVariable("agent").loadField("target")).invoke(method, loadVariable("event"))) .finish() .finish(); }
@Test public void testAssignField() { final String s = Stmt.create(Context.create().autoImport()).nestedCall( Stmt.newObject(Foo.class)).loadField("bar").loadField("name").assignValue("test").toJavaString(); assertEquals("failed to generate nested field assignment", "new Foo().bar.name = \"test\";", s); }
return loadVariable("a0").loadField(field.getName());
return loadVariable("a0").loadField(field.getName());
.initializeWith(Stmt.newArray(toMap, dimParms))); dmBuilder.append(autoForLoop("i", Stmt.loadVariable("newArray").loadField("length")) .append(dim == 1 ? outerAccessorStatement : loadVariable("newArray", loadVariable("i")).assignValue( .append(autoForLoop("i", Stmt.loadVariable("a0").loadField("length")) .append(Stmt.if_(Bool.greaterThan(Stmt.loadVariable("i"), 0)) .append(Stmt.loadVariable("sb").invoke("append", ",")).finish())
.initializeWith(Stmt.newArray(toMap, dimParms))); dmBuilder.append(autoForLoop("i", Stmt.loadVariable("newArray").loadField("length")) .append(dim == 1 ? outerAccessorStatement : loadVariable("newArray", loadVariable("i")).assignValue( .append(autoForLoop("i", Stmt.loadVariable("a0").loadField("length")) .append(Stmt.if_(Bool.greaterThan(Stmt.loadVariable("i"), 0)) .append(Stmt.loadVariable("sb").invoke("append", ",")).finish())
caseBlock.append(loadVariable("entity").loadField(field.getName()).assignValue(val)) .append(Stmt.break_()).finish(); continue;
caseBlock.append(loadVariable("entity").loadField(field.getName()).assignValue(val)) .append(Stmt.break_()).finish(); continue;