Search in sources :

Example 1 with MethodWriter

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));
}
Also used : MethodWriter(com.sun.tools.xjc.generator.bean.MethodWriter) JBlock(com.sun.codemodel.JBlock)

Example 2 with MethodWriter

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);
}
Also used : JAssignmentTarget(com.sun.codemodel.JAssignmentTarget) MethodWriter(com.sun.tools.xjc.generator.bean.MethodWriter) JBlock(com.sun.codemodel.JBlock) JMethod(com.sun.codemodel.JMethod) JForLoop(com.sun.codemodel.JForLoop) JVar(com.sun.codemodel.JVar)

Example 3 with MethodWriter

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());
    }
}
Also used : MethodWriter(com.sun.tools.xjc.generator.bean.MethodWriter) JExpression(com.sun.codemodel.JExpression) JCodeModel(com.sun.codemodel.JCodeModel) FieldAccessor(com.sun.tools.xjc.outline.FieldAccessor)

Example 4 with MethodWriter

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));
}
Also used : MethodWriter(com.sun.tools.xjc.generator.bean.MethodWriter) JBlock(com.sun.codemodel.JBlock)

Example 5 with MethodWriter

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));
}
Also used : MethodWriter(com.sun.tools.xjc.generator.bean.MethodWriter) JBlock(com.sun.codemodel.JBlock)

Aggregations

MethodWriter (com.sun.tools.xjc.generator.bean.MethodWriter)5 JBlock (com.sun.codemodel.JBlock)4 JAssignmentTarget (com.sun.codemodel.JAssignmentTarget)1 JCodeModel (com.sun.codemodel.JCodeModel)1 JExpression (com.sun.codemodel.JExpression)1 JForLoop (com.sun.codemodel.JForLoop)1 JMethod (com.sun.codemodel.JMethod)1 JVar (com.sun.codemodel.JVar)1 FieldAccessor (com.sun.tools.xjc.outline.FieldAccessor)1