private ContextualStatementBuilder agent(final String field) { return agent().loadField(field); }
private ContextualStatementBuilder agent(final String field) { return agent().loadField(field); }
@Override public ContextualStatementBuilder call(final Statement instance, final HasAnnotations annotated, final BuildMetaClass factory, final Statement... params) { final MetaField field = (MetaField) annotated; if (field.isPublic()) { if (field.isStatic()) { return loadStatic(field.getDeclaringClass(), field.getName()); } else { return nestedCall(instance).loadField(field); } } else { final Object[] accessorParams = (field.isStatic() ? new Object[0] : new Object[] { instance }); return invokeStatic(notNull(factory), getPrivateFieldAccessorName(field), accessorParams); } } },
@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); }
@Test public void testAssignInvalidField() { try { final String s = Stmt.create(Context.create().autoImport()).nestedCall( Stmt.newObject(Foo.class)) .loadField("invalid") .assignValue("test") .toJavaString(); fail("expected UndefinedFieldException"); } catch (UndefinedFieldException e) { // expected } }
setSwitchBlock.case_("this") .append(Stmt.loadClassMember(targetField).assignValue(Stmt.castTo(bindable, Stmt.loadVariable("value")))) .append(agent().loadField("target").assignValue(Stmt.loadClassMember(targetField))) .append(Stmt.break_()) .finish(); .withParameters(agent().loadField("propertyTypes")))) .append(Stmt.loadVariable("props").invoke("remove", "this")) .append(Stmt.invokeStatic(Collections.class, "unmodifiableMap", Stmt.loadVariable("props")).returnValue())
setSwitchBlock.case_("this") .append(Stmt.loadClassMember(targetField).assignValue(Stmt.castTo(bindable, Stmt.loadVariable("value")))) .append(agent().loadField("target").assignValue(Stmt.loadClassMember(targetField))) .append(Stmt.break_()) .finish(); .withParameters(agent().loadField("propertyTypes")))) .append(Stmt.loadVariable("props").invoke("remove", "this")) .append(Stmt.invokeStatic(Collections.class, "unmodifiableMap", Stmt.loadVariable("props")).returnValue())
.publicOverridesMethod("setName", Parameter.of(String.class, "name")) .append( Stmt.loadStatic(outer.getClassDefinition(), "this").loadField("outerName").assignValue( Variable.get("name"))) .append(Stmt.loadStatic(outer.getClassDefinition(), "this").invoke("setOuterName", Variable.get("name")))
.publicOverridesMethod("proceed", Parameter.of(RemoteCallback.class, "interceptorCallback", true)) .append(Stmt.declareVariable(RemoteCallback.class).asFinal().named("providedCallback").initializeWith( Stmt.loadStatic(proxyClass, "this").loadField("remoteCallback"))) .append( Stmt.loadVariable("remoteCallback").assignValue(Stmt.newObject(RemoteCallback.class).extend() .append( Stmt.declareVariable(ErrorCallback.class).asFinal().named("providedErrorCallback").initializeWith( Stmt.loadStatic(proxyClass, "this").loadField("errorCallback"))) .append( Stmt.loadVariable("errorCallback").assignValue(
.publicOverridesMethod("proceed", Parameter.of(RemoteCallback.class, "interceptorCallback", true)) .append(Stmt.declareVariable(RemoteCallback.class).asFinal().named("providedCallback").initializeWith( Stmt.loadStatic(proxyClass, "this").loadField("remoteCallback"))) .append( Stmt.loadVariable("remoteCallback").assignValue(Stmt.newObject(RemoteCallback.class).extend() .append( Stmt.declareVariable(ErrorCallback.class).asFinal().named("providedErrorCallback").initializeWith( Stmt.loadStatic(proxyClass, "this").loadField("errorCallback"))) .append( Stmt.loadVariable("errorCallback").assignValue(