private void implementSetter( TreeLogger logger, MethodBuffer mb, JMethod method, ModelMagic manifest, HasModelFields models, Annotation[] annos) { JPrimitiveType primitive = method.getReturnType().isPrimitive(); boolean isVoid = primitive == JPrimitiveType.VOID; boolean isFluent = ModelGeneratorGwt.isFluent(method); String name = ModelGeneratorGwt.fieldName(method, manifest); ModelField field = models.getOrMakeField(name); field.addSetter( X_Source.binaryToSource(method.getReturnType().getQualifiedBinaryName()), name, ModelGeneratorGwt.toTypes(method.getParameterTypes())) .fluent = isFluent; if (!isFluent && !isVoid) { mb.println("var value = getProperty(\"" + name + "\");"); } JParameter[] params = method.getParameters(); if (params.length != 1) throw new NotConfiguredCorrectly( "A setter method, " + method.getJsniSignature() + " must have exactly one parameter"); mb.println("setProperty(\"" + name + "\", A);"); if (!isVoid) mb.println("return " + (isFluent ? "this;" : "value;")); }
private void implementAction( TreeLogger logger, ModelGenerator generator, JMethod method, ModelMagic models, Annotation[] annos) { boolean fluent = ModelGeneratorGwt.isFluent(method); JPrimitiveType primitive = method.getReturnType().isPrimitive(); if (primitive != JPrimitiveType.VOID) { if (!fluent) { // non-fluent, non-void return type is not an action // TODO change this! // implementGetter(logger, mb, method, models, annos, // method.getReturnType().getSimpleSourceName()); logger.log( Type.ERROR, "No getter for " + method.getJsniSignature() + "; " + "If your type does not use javabean getField() naming conventions, " + "then you MUST annotate a getter field with @GetterField"); } return; } MethodBuffer mb = generator.createMethod( method.getReturnType().getQualifiedSourceName(), method.getName(), ModelGeneratorGwt.typeToParameterString(method.getParameterTypes())); if (method.getName().equals("clear")) { // implement clear } if (fluent) { mb.println("return this;"); } }