in dv/src/main/java/org/apache/cxf/xjc/dv/DefaultValuePlugin.java [478:525]
private void updateSetter(ClassOutline co, FieldOutline fo,
JDefinedClass dc) {
String fieldName = fo.getPropertyInfo().getName(false);
JType type = fo.getRawType();
String typeName = type.fullName();
String getterName = ("java.lang.Boolean".equals(typeName) ? "is" : "get")
+ fo.getPropertyInfo().getName(true);
JMethod method = dc.getMethod(getterName, new JType[0]);
JType mtype = method.type();
String setterName = "set" + fo.getPropertyInfo().getName(true);
method = dc.getMethod(setterName, new JType[] {mtype});
if (LOG.isLoggable(Level.FINE)) {
LOG.fine("Updating setter: " + setterName);
}
if (method == null) {
return;
}
JDocComment doc = method.javadoc();
// remove existing method and define new one
dc.methods().remove(method);
int mods = method.mods().getValue();
mtype = mtype.unboxify();
method = dc.method(mods, method.type(), setterName);
method.javadoc().append(doc);
JVar var = method.param(mtype, "value");
JFieldRef fr = JExpr.ref(fieldName);
method.body().assign(fr, var);
JMethod oldMethod = dc.getMethod("unset" + fo.getPropertyInfo().getName(true), new JType[0]);
if (oldMethod != null) {
dc.methods().remove(oldMethod);
}
method = dc.method(mods, method.type(), "unset" + fo.getPropertyInfo().getName(true));
method.body().assign(fr, JExpr._null());
method = dc.getMethod("isSet" + fo.getPropertyInfo().getName(true), new JType[0]);
if (method != null) {
//move to end
dc.methods().remove(method);
dc.methods().add(method);
}
}