use of com.sun.tools.xjc.generator.bean.MethodWriter in project jaxb-ri by eclipse-ee4j.
the class ContentListField method generateAccessors.
@Override
public void generateAccessors() {
final MethodWriter writer = outline.createMethodWriter();
final Accessor acc = create(JExpr._this());
// [RESULT]
// List getXXX() {
// return <ref>;
// }
$get = writer.declareMethod(listT, "get" + prop.getName(true));
writer.javadoc().append(prop.javadoc);
JBlock block = $get.body();
// avoid using an internal getter
fixNullRef(block);
block._return(acc.ref(true));
String pname = NameConverter.standard.toVariableName(prop.getName(true));
writer.javadoc().append("Gets the value of the " + pname + " property.\n\n" + "<p>\n" + "This accessor method returns a reference to the live list,\n" + "not a snapshot. Therefore any modification you make to the\n" + "returned list will be present inside the Jakarta XML Binding object.\n" + "This is why there is not a <CODE>set</CODE> method for the " + pname + " property.\n" + "\n" + "<p>\n" + "For example, to add a new item, do as follows:\n" + "<pre>\n" + " get" + prop.getName(true) + "().add(newItem);\n" + "</pre>\n" + "\n\n");
writer.javadoc().append("<p>\n" + "Objects of the following type(s) are allowed in the list\n").append(listPossibleTypes(prop));
}
use of com.sun.tools.xjc.generator.bean.MethodWriter in project jaxb-ri by eclipse-ee4j.
the class ArrayField method generateAccessors.
@Override
public void generateAccessors() {
MethodWriter writer = outline.createMethodWriter();
Accessor acc = create(JExpr._this());
JVar $idx, $value;
JBlock body;
// [RESULT] T[] getX() {
// if( <var>==null ) return new T[0];
// T[] retVal = new T[this._return.length] ;
// System.arraycopy(this._return, 0, "retVal", 0, this._return.length);
// return (retVal);
// }
$getAll = writer.declareMethod(exposedType.array(), "get" + prop.getName(true));
writer.javadoc().append(prop.javadoc);
body = $getAll.body();
body._if(acc.ref(true).eq(JExpr._null()))._then()._return(JExpr.newArray(exposedType, 0));
JVar var = body.decl(exposedType.array(), "retVal", JExpr.newArray(implType, acc.ref(true).ref("length")));
body.add(codeModel.ref(System.class).staticInvoke("arraycopy").arg(acc.ref(true)).arg(JExpr.lit(0)).arg(var).arg(JExpr.lit(0)).arg(acc.ref(true).ref("length")));
body._return(JExpr.direct("retVal"));
List<Object> returnTypes = listPossibleTypes(prop);
writer.javadoc().addReturn().append("array of\n").append(returnTypes);
// [RESULT]
// ET getX(int idx) {
// if( <var>==null ) throw new IndexOutOfBoundsException();
// return unbox(<var>.get(idx));
// }
JMethod $get = writer.declareMethod(exposedType, "get" + prop.getName(true));
$idx = writer.addParameter(codeModel.INT, "idx");
$get.body()._if(acc.ref(true).eq(JExpr._null()))._then()._throw(JExpr._new(codeModel.ref(IndexOutOfBoundsException.class)));
writer.javadoc().append(prop.javadoc);
$get.body()._return(acc.ref(true).component($idx));
writer.javadoc().addReturn().append("one of\n").append(returnTypes);
// [RESULT] int getXLength() {
// if( <var>==null ) throw new IndexOutOfBoundsException();
// return <ref>.length;
// }
JMethod $getLength = writer.declareMethod(codeModel.INT, "get" + prop.getName(true) + "Length");
$getLength.body()._if(acc.ref(true).eq(JExpr._null()))._then()._return(JExpr.lit(0));
$getLength.body()._return(acc.ref(true).ref("length"));
// [RESULT] void setX(ET[] values) {
// if (values == null) {
// <ref> = null;
// return;
// }
// int len = values.length;
// for( int i=0; i<len; i++ )
// <ref>[i] = values[i];
// }
$setAll = writer.declareMethod(codeModel.VOID, "set" + prop.getName(true));
writer.javadoc().append(prop.javadoc);
$value = writer.addParameter(exposedType.array(), "values");
$setAll.body()._if($value.eq(JExpr._null()))._then().assign((JAssignmentTarget) acc.ref(true), JExpr._null())._return();
JVar $len = $setAll.body().decl(codeModel.INT, "len", $value.ref("length"));
$setAll.body().assign((JAssignmentTarget) acc.ref(true), castToImplTypeArray(JExpr.newArray(implType, $len)));
JForLoop _for = $setAll.body()._for();
JVar $i = _for.init(codeModel.INT, "i", JExpr.lit(0));
_for.test(JOp.lt($i, $len));
_for.update($i.incr());
_for.body().assign(acc.ref(true).component($i), castToImplType(acc.box($value.component($i))));
writer.javadoc().addParam($value).append("allowed objects are\n").append(returnTypes);
// [RESULT] ET setX(int idx, ET value)
// <ref>[idx] = value
JMethod $set = writer.declareMethod(exposedType, "set" + prop.getName(true));
$idx = writer.addParameter(codeModel.INT, "idx");
$value = writer.addParameter(exposedType, "value");
writer.javadoc().append(prop.javadoc);
body = $set.body();
body._return(JExpr.assign(acc.ref(true).component($idx), castToImplType(acc.box($value))));
writer.javadoc().addParam($value).append("allowed object is\n").append(returnTypes);
}
use of com.sun.tools.xjc.generator.bean.MethodWriter in project jaxb-ri by eclipse-ee4j.
the class IsSetField method generate.
private void generate(ClassOutlineImpl outline, CPropertyInfo prop) {
// add isSetXXX and unsetXXX.
MethodWriter writer = outline.createMethodWriter();
JCodeModel codeModel = outline.parent().getCodeModel();
FieldAccessor acc = core.create(JExpr._this());
if (generateIsSetMethod) {
// [RESULT] boolean isSetXXX()
JExpression hasSetValue = acc.hasSetValue();
if (hasSetValue == null) {
// issue an error
throw new UnsupportedOperationException();
}
writer.declareMethod(codeModel.BOOLEAN, "isSet" + this.prop.getName(true)).body()._return(hasSetValue);
}
if (generateUnSetMethod) {
// [RESULT] void unsetXXX()
acc.unsetValues(writer.declareMethod(codeModel.VOID, "unset" + this.prop.getName(true)).body());
}
}
use of com.sun.tools.xjc.generator.bean.MethodWriter in project jaxb-ri by eclipse-ee4j.
the class NoExtendedContentField method generateAccessors.
@Override
public void generateAccessors() {
final MethodWriter writer = outline.createMethodWriter();
final Accessor acc = create(JExpr._this());
// [RESULT]
// List getXXX() {
// return <ref>;
// }
$get = writer.declareMethod(listT, "get" + prop.getName(true));
writer.javadoc().append(prop.javadoc);
JBlock block = $get.body();
// avoid using an internal getter
fixNullRef(block);
block._return(acc.ref(true));
String pname = NameConverter.standard.toVariableName(prop.getName(true));
writer.javadoc().append("Gets the value of the " + pname + " property.\n\n" + "<p>\n" + "This accessor method returns a reference to the live list,\n" + "not a snapshot. Therefore any modification you make to the\n" + "returned list will be present inside the Jakarta XML Binding object.\n" + "This is why there is not a <CODE>set</CODE> method for the " + pname + " property.\n" + "\n" + "<p>\n" + "For example, to add a new item, do as follows:\n" + "<pre>\n" + " get" + prop.getName(true) + "().add(newItem);\n" + "</pre>\n" + "\n\n");
writer.javadoc().append("<p>\n" + "Objects of the following type(s) are allowed in the list\n").append(listPossibleTypes(prop));
}
use of com.sun.tools.xjc.generator.bean.MethodWriter in project jaxb-ri by eclipse-ee4j.
the class UntypedListField method generateAccessors.
@Override
public void generateAccessors() {
final MethodWriter writer = outline.createMethodWriter();
final Accessor acc = create(JExpr._this());
// [RESULT]
// List getXXX() {
// return <ref>;
// }
$get = writer.declareMethod(listT, "get" + prop.getName(true));
writer.javadoc().append(prop.javadoc);
JBlock block = $get.body();
// avoid using an internal getter
fixNullRef(block);
block._return(acc.ref(true));
String pname = NameConverter.standard.toVariableName(prop.getName(true));
writer.javadoc().append("Gets the value of the " + pname + " property.\n\n" + "<p>\n" + "This accessor method returns a reference to the live list,\n" + "not a snapshot. Therefore any modification you make to the\n" + "returned list will be present inside the Jakarta XML Binding object.\n" + "This is why there is not a <CODE>set</CODE> method for the " + pname + " property.\n" + "\n" + "<p>\n" + "For example, to add a new item, do as follows:\n" + "<pre>\n" + " get" + prop.getName(true) + "().add(newItem);\n" + "</pre>\n" + "\n\n");
writer.javadoc().append("<p>\n" + "Objects of the following type(s) are allowed in the list\n").append(listPossibleTypes(prop));
}
Aggregations