Package com.sun.codemodel

Examples of com.sun.codemodel.JMethod


      return;
    }
    LOG.info("generate toString field#: " + implClass.name() + " (" + fields.size() + ")");

    // generate hashCode() and equals()-method
    final JMethod toString = implClass.method(JMod.PUBLIC, String.class, "toString");

    boolean isSuperClass = false;
    if (classOutline != null) {
      isSuperClass = checkForSuperClass((ClassOutlineImpl) classOutline);
    }
    // annotate with @Override
    toString.annotate(Override.class);

    for (final JFieldVar jFieldVar : fields) {
      LOG.info("!!!!!!!!!!!!!!!!!!!!! " + jFieldVar.name());
    }

   
    toString.body()._return(JExpr.lit("null"));
  }
View Full Code Here


      fieldVar.annotate(XmlJavaTypeAdapter.class).param("value", pool.getClassCoordinateConverter());
      jaxbElementClass = codeModel.ref(ArrayList.class).narrow(annotateCoordinates);
    }
    // cClassInfo
    final String createAndSetCoordinatesName = "createAndSetCoordinates";
    final JMethod m = implClass.method(JMod.PUBLIC, fieldVar.type(), createAndSetCoordinatesName);
    final JVar newValue = m.body().decl(fieldVar.type(), "newValue", JExpr._new(jaxbElementClass));
    final JInvocation methodInvoke = JExpr._this().invoke("set" + Util.upperFirst(fieldVar.name())).arg(newValue);
    m.body().add(methodInvoke);
    m.body()._return(newValue);

    m.javadoc().append("Creates a new instance of ");
    m.javadoc().append(fieldVar.type());
    m.javadoc().append("and set it to this." + fieldVar.name() + ".\n");

    final ArrayList<String> javadoc = new ArrayList<String>();
    javadoc.add("\n");
    javadoc.add("This method is a short version for:\n");
    javadoc.add("<pre>\n");
    javadoc.add("<code>\n");
    javadoc.add("" + fieldVar.type().name() + " " + newValue.name() + " = new " + fieldVar.type().name() + "();\n");
    javadoc.add("this.set" + Util.upperFirst(fieldVar.name()) + "(" + newValue.name() + ");");
    javadoc.add("</code>\n");
    javadoc.add("</pre>\n");

    m.javadoc().append(javadoc);
    debugOut.append("m> " + cc.implRef.name() + " :: public " + fieldVar.type().name() + " " + createAndSetCoordinatesName + "() created.");
    LOG.info(debugOut.toString());
  }
View Full Code Here

   *
   * <pre> void setField(T field) { this.field = field; } </pre>
   */
  private void generateSetCollection(final ClassOutlineImpl cc, final JFieldVar field, final boolean override) {
    // creates the setter
    final JMethod generateSet = cc.implClass.method(JMod.PUBLIC, cc.implClass.owner().VOID, "set" + Util.upperFirst(field.name()));
    final JVar value = generateSet.param(JMod.FINAL, field.type(), field.name());
    // set the assignment to the body: this.value = value;
    if (override) {
      if (annotateObvicious != null) {
        generateSet.annotate(annotateObvicious);
      }
      generateSet.annotate(Override.class);
      // super.setObjectSimpleExtensionGroup(objectSimpleExtensionGroup);
      // generateSet.body().assign(JExpr._this().ref(field.name()), value);
      generateSet.body().directStatement("super.set" + Util.upperFirst(field.name()) + "(" + value.name() + ");");
    } else {
      generateSet.javadoc().append("Sets the value of the " + field.name() + " property");
      generateSet.javadoc().addParam(value);
      generateSet.javadoc().append("Objects of the following type(s) are allowed in the list ");
      generateSet.javadoc().append(field.type().name());
      generateSet.javadoc().append(".\n<p>Note:\n<p>");
      generateSet.javadoc().append("This method does not make use of the fluent pattern.");
      generateSet.javadoc()
          .append("If you would like to make it fluent, use {@link #with" + Util.upperFirst(field.name()) + "} instead.\n");
      generateSet.body().assign(JExpr._this().ref(field.name()), value);
    }
    // LOG.info("s> " + implClass.name() + " >> public void set" + JaxbUtil.upperFirst(field.name()) + "(" + field.type().name() +
    // ") created [Override: " + override + "].");
  }
View Full Code Here

      return;
    }
    LOG.info("generateEquals and hashCode field#: "+ implClass.name() + " (" + fields.size() + ")");

    // generate hashCode() and equals()-method
    final JMethod hashCodeMethod = implClass.method(JMod.PUBLIC, implClass.owner().INT, "hashCode");
    final JMethod equalsMethod = implClass.method(JMod.PUBLIC, implClass.owner().BOOLEAN, "equals");

    boolean isSuperClass = false;
    if (classOutline != null) {
      isSuperClass = checkForSuperClass((ClassOutlineImpl)classOutline);
    }
    // annotate with @Override
    hashCodeMethod.annotate(Override.class);
    equalsMethod.annotate(Override.class);

    // add paramter for equals()-method
    final JVar vObj = equalsMethod.param(Object.class, "obj");

    // is it me? this==obj -> true
    final JConditional condMe = equalsMethod.body()._if(JExpr._this().eq(vObj));
    condMe._then()._return(JExpr.TRUE);

    // it's null? obj==null -> false
    final JConditional condNull = equalsMethod.body()._if(vObj.eq(JExpr._null()));
    condNull._then()._return(JExpr.FALSE);

    // paternity test (only add if equals in superclass isn't overridden)?
    // !super.equals(obj) -> false --> (super.equals(obj) == false)
    if (isSuperClass) {
      final JConditional condSuper = equalsMethod.body()._if(JExpr._super().invoke("equals").arg(vObj).eq(JExpr.FALSE));
      condSuper._then()._return(JExpr.FALSE);
    }

    // suit the class? !(obj instanceof TypeB) -> false --> if ((obj instanceof TypeB) == false)
    final JConditional condInstance = equalsMethod.body()._if(vObj._instanceof(implClass).eq(JExpr.FALSE));
    condInstance._then()._return(JExpr.FALSE);

    // cast: TYPE other = (TYPE) obj;
    final JVar vOther = equalsMethod.body().decl(implClass, "other", JExpr.cast(implClass, vObj));

    /*
     * check for each declared field distinguish between primitive types:
     *
     * <pre> if (field != other.field) { return false; } </pre>
     *
     * and reference types: <pre> if (field == null) { if (other.field != null) { return false; } } else if (!field.equals(other.field)) {
     * // --> if (field.equals(other.field) == false) return false; } </code>
     */
    JConditional condFieldCheck;
    boolean containsDouble = false;
    for (final JFieldVar jFieldVar : fields) {
      if (jFieldVar.type().fullName().equals("java.lang.Double") || jFieldVar.type().fullName().equals("double")) {
        jFieldVar.type(implClass.owner().DOUBLE);
        containsDouble = true;
      //  break;
      }
    }

    for (final JFieldVar jFieldVar : fields) {
      if (jFieldVar.type().isPrimitive()) {
        // LOG.info("JConditional: " + jFieldVar.name() +
        // " is PRIMITIVE");
        condFieldCheck = equalsMethod.body()._if(JExpr.ref(jFieldVar.name()).ne(vOther.ref(jFieldVar.name())));
        condFieldCheck._then()._return(JExpr.FALSE);
      } else {
        // LOG.info("JConditional: " + jFieldVar.name() +
        // " is REFERENCE");
        condFieldCheck = equalsMethod.body()._if(JExpr.ref(jFieldVar.name()).eq(JExpr._null()));
        condFieldCheck._then()._if(vOther.ref(jFieldVar.name()).ne(JExpr._null()))._then()._return(JExpr.FALSE);
        condFieldCheck._elseif(JExpr.ref(jFieldVar.name()).invoke("equals").arg(vOther.ref(jFieldVar.name())).eq(JExpr.FALSE))._then()
            ._return(JExpr.FALSE);
      }
    }

    // ir all works out, the objects are equal, return true
    equalsMethod.body()._return(JExpr.TRUE);

    // useful fields
    final JFieldRef vPrime = JExpr.ref("prime");
    final JFieldRef vResult = JExpr.ref("result");

View Full Code Here

    createArgFactoryMethod(cc, coordinateCreateMethods);

    coordinateCreateMethods.clear();

    // create public Point addToCoordinates(final String coordinates) {...}
    final JMethod generateAdd = cc.implClass.method(JMod.PUBLIC, cc.implClass, "addToCoordinates");
    generateAdd.javadoc().append("add a value to the coordinates property collection");
    final JInvocation returntype = JExpr._new(classCoordinates);
    final JVar arg = generateAdd.param(JMod.FINAL, String.class, field.name());
    generateAdd.javadoc().addParam(arg).append("required parameter");
    returntype.arg(arg);

    generateAdd.javadoc().addReturn().append("<tt>true</tt> (as general contract of <tt>Collection.add</tt>). ");
    generateAdd.body().add(JExpr._this().invoke("getCoordinates").invoke("add").arg(returntype));
    generateAdd.body()._return(JExpr._this());

  }
View Full Code Here

  private JDefinedClass createNestedPrefixCustomizer(final ClassOutlineImpl cc) throws JClassAlreadyExistsException {
    final JDefinedClass namespacebeautyfier = cc.implClass._class(JMod.PRIVATE | JMod.STATIC | JMod.FINAL, "NameSpaceBeautyfier");
    namespacebeautyfier._extends(NamespacePrefixMapper.class);

    final JMethod namespacebeautyfiergetpreferredprefix = namespacebeautyfier.method(JMod.PUBLIC, stringClass, "getPreferredPrefix");
    namespacebeautyfiergetpreferredprefix.annotate(Override.class);
    namespacebeautyfiergetpreferredprefix.javadoc().append("Internal method!\n");
    namespacebeautyfiergetpreferredprefix.javadoc().append(
        "<p>Customizing Namespace Prefixes During Marshalling to a more readable format.</p>\n");
    namespacebeautyfiergetpreferredprefix.javadoc().append("<p>The default output is like:</p>\n");
    namespacebeautyfiergetpreferredprefix
        .javadoc()
        .append(
            "<pre>{@code&lt;kml ... xmlns:ns2=\"http://www.w3.org/2005/Atom\" xmlns:ns3=\"urn:oasis:names:tc:ciq:xsdschema:xAL:2.0\" xmlns:ns4=\"http://www.google.com/kml/ext/2.2\"&gt;}</pre>\n");
    namespacebeautyfiergetpreferredprefix.javadoc().append("<p>is changed to:</p>\n");
    namespacebeautyfiergetpreferredprefix
        .javadoc()
        .append(
            "<pre>{@code &lt;kml ... xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:xal=\"urn:oasis:names:tc:ciq:xsdschema:xAL:2.0\" xmlns:gx=\"http://www.google.com/kml/ext/2.2\"&gt;}</pre>");
    namespacebeautyfiergetpreferredprefix.javadoc().append("<p>What it does:</p>\n");
    namespacebeautyfiergetpreferredprefix.javadoc().append("<p>namespaceUri: http://www.w3.org/2005/Atom              prefix: atom</p>");
    namespacebeautyfiergetpreferredprefix.javadoc().append("<p>namespaceUri: urn:oasis:names:tc:ciq:xsdschema:xAL:2.0 prefix: xal</p>");
    namespacebeautyfiergetpreferredprefix.javadoc().append("<p>namespaceUri: http://www.google.com/kml/ext/2.2        prefix: gx</p>");

    namespacebeautyfiergetpreferredprefix.javadoc().append("<p>namespaceUri: anything else prefix: null</p>");
    namespacebeautyfiergetpreferredprefix.javadoc().trimToSize();
    final JVar namespaceuri = namespacebeautyfiergetpreferredprefix.param(stringClass, "namespaceUri");
    namespacebeautyfiergetpreferredprefix.param(stringClass, "suggestion");
    namespacebeautyfiergetpreferredprefix.param(cc.implClass.owner().BOOLEAN, "requirePrefix");

    namespacebeautyfiergetpreferredprefix.body()._if(namespaceuri.invoke("matches").arg("http://www.w3.org/\\d{4}/Atom"))._then()._return(
        JExpr.lit("atom"));
    namespacebeautyfiergetpreferredprefix.body()._if(namespaceuri.invoke("matches").arg("urn:oasis:names:tc:ciq:xsdschema:xAL:.*?"))
        ._then()._return(JExpr.lit("xal"));
    namespacebeautyfiergetpreferredprefix.body()._if(namespaceuri.invoke("matches").arg("http://www.google.com/kml/ext/.*?"))._then()
    ._return(JExpr.lit("gx"));
    //namespacebeautyfiergetpreferredprefix.body()._if(namespaceuri.invoke("matches").arg("http://www.opengis.net/kml/.*?"))._then()
    //._return(JExpr.lit("kml"));
    namespacebeautyfiergetpreferredprefix.body()._return(JExpr._null());
    return namespacebeautyfier;
  }
View Full Code Here

    generateAdd.body()._return(JExpr._this());

  }

  private void createArgFactoryMethod(final ClassOutlineImpl cc, final Collection<JFieldVar> coordinateCreateMethods) {
    final JMethod generateAdd = cc.implClass.method(JMod.PUBLIC, cc.implClass, "addToCoordinates");
    generateAdd.javadoc().append("add a value to the coordinates property collection");
    final JInvocation returntype = JExpr._new(classCoordinates);
    for (final JFieldVar field : coordinateCreateMethods) {

      final JVar arg = generateAdd.param(JMod.FINAL, field.type(), field.name());
      generateAdd.javadoc().addParam(arg).append("required parameter");
      returntype.arg(arg);
    }

    generateAdd.javadoc().addReturn().append("<tt>true</tt> (as general contract of <tt>Collection.add</tt>). ");
    generateAdd.body().add(JExpr._this().invoke("getCoordinates").invoke("add").arg(returntype));
    generateAdd.body()._return(JExpr._this());

  }
View Full Code Here

  private void commonAddtoCase(final ClassOutlineImpl cc, final JFieldVar field, final boolean override, final CPropertyInfo propertyInfo) {
    // find the common type
    final JType type = TypeUtil.getCommonBaseType(codeModel, Util.listPossibleTypes(cc, propertyInfo));

    // creates the add method
    final JMethod generateAdd = cc.implClass.method(JMod.PUBLIC, cc.implClass, "addTo" + Util.upperFirst(field.name()));
    final JVar value = generateAdd.param(JMod.FINAL, type, field.name());

    if (override) {
      if (annotateObvicious != null) {
        generateAdd.annotate(annotateObvicious);
      }
      generateAdd.annotate(Override.class);
      // if (field.name().equals("coordinates")) {
      // LOG.info("####################### coordinates found : create new #######################");
      // generateAdd.body().add(JExpr._super().invoke("get" +
      // Util.upperFirst(field.name())).invoke("add").arg(JExpr._new(annotateCoordinates).arg(value)));
      // } else {
      generateAdd.body().add(JExpr._super().invoke("get" + Util.upperFirst(field.name())).invoke("add").arg(value));
      // LOG.info("#######################  ####################### " + field.name());
      // }

      // generateAdd.body().directStatement("super.get" + Util.upperFirst(field.name()) + "().add(" + value.name() + ");");
    } else {
      generateAdd.javadoc().append("add a value to the " + field.name() + " property collection");
      generateAdd.javadoc().addParam(value).append("Objects of the following type are allowed in the list: ").append(
          Util.listPossibleTypes(cc, propertyInfo));
      generateAdd.javadoc().addReturn().append("<tt>true</tt> (as general contract of <tt>Collection.add</tt>). ");
      generateAdd.body().directStatement("this.get" + Util.upperFirst(field.name()) + "().add(" + value.name() + ");");

    }
    generateAdd.body()._return(JExpr._this());
    // LOG.info("a> " + cc.implClass.name() + " >> public " + cc.implClass.name() + " addTo" + Util.upperFirst(field.name()) + "(" +
    // type.name() + ") created [Override: " + override + "].");
  }
View Full Code Here

   *
   * <pre> void setField(T field) { this.field = field; } </pre>
   */
  private void generateWith(final ClassOutlineImpl cc, final JFieldVar field, final boolean override) {
    // creates the setter
    final JMethod generateWith = cc.implClass.method(JMod.PUBLIC, cc.implClass, "with" + Util.upperFirst(field.name()));
    final JVar value = generateWith.param(JMod.FINAL, Util.removeJAXBElement(cm, field.type()), field.name());
    // set the assignment to the body: this.value = value;
    if (override) {
      if (annotateObvicious != null) {
        generateWith.annotate(annotateObvicious);
      }
      generateWith.annotate(Override.class);
      // super.setObjectSimpleExtensionGroup(objectSimpleExtensionGroup);
      // generateSet.body().assign(JExpr._this().ref(field.name()), value);
      generateWith.body().directStatement("super.with" + Util.upperFirst(field.name()) + "(" + field.name() + ");");
    } else {
      generateWith.javadoc().add("fluent setter");
      generateWith.javadoc().addParam(value).append("required parameter");
      generateWith.javadoc().add("\n@see #set"+Util.upperFirst(field.name())+"("+value.type().name()+")");
      generateWith.body().directStatement("this.set" + Util.upperFirst(field.name()) + "(" + field.name() + ");");
    }
    // generateSet.body().directStatement("this."+field.name() + " = " + field.name()+";");
    // generate the javadoc
    generateWith.body()._return(JExpr._this());
    LOG.info("w> " + cc.implClass.name() + " >> public " + cc.implClass.name() + " with" + Util.upperFirst(field.name()) + "("
     +field.type().name() + ") created [Override: " + override + "].");
  }
View Full Code Here

    final Collection<JFieldVar> relevantFields = Util.getConstructorRequiredFields(asClass);

    final Map<String, FieldOutline> fieldOutlineasMap = Util.getRequiredFieldsAsMap(cc);

    final JMethod m = implClass.method(JMod.PUBLIC, cClassInfo, methodName.toString() + shortName);
    final JInvocation args = JExpr._new(cClassInfo);
    for (final JFieldVar field : relevantFields) {
      // FieldOutline fo = fieldOutlineasMap.get(field.name());
      // if (fo == null) {
      // continue;
      // }
      // if (fo.getPropertyInfo().isCollection()) {
      // LOG.info("!!!!! " + cc.implClass.name() + " is collection " + methodName );
      // continue;
      // }
      final JVar arg = m.param(JMod.FINAL, field.type(), field.name());
      args.arg(JExpr.ref(field.name()));
      m.javadoc().addParam(arg).append("required parameter");
      // m.body().assign(JExpr.refthis(field.name()), arg);
    }

    m.body().decl(cClassInfo, localName, args);

    m.body().add(methodInvoke);
    m.body()._return(JExpr.ref(localName));

    m.javadoc().append("Creates a new instance of ");
    m.javadoc().append(cClassInfo);
    m.javadoc().append(javadoc);
    debugOut.append("m> " + cc.implRef.name() + " :: public " + cClassInfo.name() + " " + methodName.toString() + shortName + "(");

    for (final JFieldVar field : relevantFields) {
      debugOut.append(field.type().name() + ", ");
    }
View Full Code Here

TOP

Related Classes of com.sun.codemodel.JMethod

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.