in json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java [2291:2346]
private ExecutableElement findWrite(ExecutableElement computedPropElem, TypeElement te, String name, String className) {
String err = null;
boolean instance = te.getAnnotation(Model.class).instance();
METHODS:
for (Element e : te.getEnclosedElements()) {
if (e.getKind() != ElementKind.METHOD) {
continue;
}
if (!e.getSimpleName().contentEquals(name)) {
continue;
}
if (e.equals(computedPropElem)) {
continue;
}
if (!instance && !e.getModifiers().contains(Modifier.STATIC)) {
computedPropElem = (ExecutableElement) e;
err = "Would have to be static";
continue;
}
ExecutableElement ee = (ExecutableElement) e;
if (ee.getReturnType().getKind() != TypeKind.VOID) {
computedPropElem = (ExecutableElement) e;
err = "Write method has to return void";
continue;
}
TypeMirror retType = computedPropElem.getReturnType();
final List<? extends VariableElement> params = ee.getParameters();
boolean error = false;
if (params.size() != 2) {
error = true;
} else {
String firstType = params.get(0).asType().toString();
int lastDot = firstType.lastIndexOf('.');
if (lastDot != -1) {
firstType = firstType.substring(lastDot + 1);
}
if (!firstType.equals(className)) {
error = true;
}
if (!processingEnv.getTypeUtils().isAssignable(retType, params.get(1).asType())) {
error = true;
}
}
if (error) {
computedPropElem = (ExecutableElement) e;
err = "Write method first argument needs to be " + className + " and second " + retType + " or Object";
continue;
}
return ee;
}
if (err == null) {
err = "Cannot find " + name + "(" + className + ", value) method in this class";
}
error(err, computedPropElem);
return null;
}