Package com.sun.codemodel

Examples of com.sun.codemodel.JDefinedClass


                writer.write(" {};");
            } else if (DEFAULT_TYPE_MAP.contains(tp.fullName())) {
                writeDefaultType(writer, tp, path);
                writer.write(";");
            } else if (tp instanceof JDefinedClass) {
                JDefinedClass jdc = (JDefinedClass)tp;
                if (jdc.getClassType() == ClassType.ENUM) {
                    //no way to get the field list as it's private with
                    //no accessors :-(
                    try {
                        Field f = jdc.getClass().getDeclaredField("enumConstantsByName");
                        f.setAccessible(true);
                        Map<?, ?> map = (Map<?, ?>)f.get(jdc);
                        Set<String> values = CastUtils.cast(map.keySet());
                        String first = defaultValues.chooseEnumValue(path, values);
                        writer.write(tp.fullName());
                        writer.write(".");
                        writer.write(first);
                        writer.write(";");
                    } catch (Exception e) {
                        IOException ex = new IOException(e.getMessage());
                        ex.initCause(e);
                        throw ex;
                    }
                } else if (jdc.isAbstract()) {
                    writer.write("null;");
                } else {
                    writer.write("new ");
                    writer.write(tp.fullName());
                    writer.write("();");
View Full Code Here


            if (mapping != null) {
                typeAnno = mapping.getType();
            }
        }
        if (typeAnno != null && typeAnno.getTypeClass() instanceof JDefinedClass) {
            JDefinedClass dc = (JDefinedClass)typeAnno.getTypeClass();
            if (dc.isAbstract()) {
                //no default values for abstract classes
                typeAnno = null;
            }
        }
        if (typeAnno != null) {
View Full Code Here

  }
 
 
  private void convertComplexTypesToSimpleTypes(final ClassOutlineImpl cc) {
    final JDefinedClass implClass = cc.implClass;
    // if no fields are present return
    if (implClass.fields().isEmpty()) {
      return;
    }
    final JType stringClass = cm._ref(String.class);
    replacedTypes = 0;
    replaceComplexTypes(implClass, "java.lang.Double", cm.DOUBLE);
    replaceComplexTypes(implClass, "double", cm.DOUBLE);
    replaceComplexTypes(implClass, "java.lang.Integer", cm.INT);
    replaceComplexTypes(implClass, "int", cm.INT);
    replaceComplexTypes(implClass, "byte[]", stringClass);

    if (replacedTypes == 0) {
      return;
    }

    LOG.info(implClass.name() + " types replaced: " + replacedTypes);
  }
View Full Code Here

    createBooleanConverter(outline);
  }
 
  @SuppressWarnings("restriction")
  private void createBooleanConverter(final Outline outline) {
    final JDefinedClass booleanConverter = pool.getClassBooleanConverter();

    final JClass xmladapter = outline.getCodeModel().ref(XmlAdapter.class).narrow(Integer.class).narrow(Boolean.class);
    booleanConverter._extends(xmladapter);
   
    // toString
    final JMethod unmarshal = booleanConverter.method(JMod.PUBLIC, Boolean.class, "unmarshal");
    final JVar stringConstructorArg = unmarshal.param(JMod.FINAL, Integer.class, "i");
    unmarshal.annotate(Override.class);
    unmarshal._throws(Exception.class);
    unmarshal.body()._return(JOp.cond(stringConstructorArg.eq(JExpr._null()), JExpr._null(), stringConstructorArg.eq(JExpr.lit(1))));
   
    // toString
    final JMethod marshal = booleanConverter.method(JMod.PUBLIC, Integer.class, "marshal");
    final JVar unmarshallparam = marshal.param(JMod.FINAL, Boolean.class, "b");
    marshal.annotate(Override.class);
    marshal._throws(Exception.class);
    marshal.body()._return(JOp.cond(unmarshallparam.eq(JExpr._null()), JExpr._null(), JOp.cond(unmarshallparam, JExpr.lit(1), JExpr.lit(0))));
View Full Code Here

      annotateBooleanFieldsWithBooleanConverter((ClassOutlineImpl) classOutline);
    }
  }
 
  private void annotateBooleanFieldsWithBooleanConverter(final ClassOutlineImpl cc) {
    final JDefinedClass implClass = cc.implClass;
    // if no fields are present return
    if (implClass.fields().isEmpty()) {
      return;
    }
   
    for (final JFieldVar jFieldVar : implClass.fields().values()) {
      if (jFieldVar.type().fullName().equals("java.lang.Boolean")) {
        jFieldVar.annotate(XmlJavaTypeAdapter.class).param("value", pool.getClassBooleanConverter());
      }
    }
  }
View Full Code Here

      return;
    }

    LOG.info("trying to add javadocs to found enums:");
    for (final EnumOutline classOutline : outline.getEnums()) {
      final JDefinedClass implClass = classOutline.clazz;
      String namewithoutType = implClass.name().toLowerCase().trim();

      namewithoutType = eliminateTypeSuffix(namewithoutType);
      // special case for ItemIconState
      if (namewithoutType.endsWith("state")) {
        namewithoutType = namewithoutType.substring(0, namewithoutType.length() - 5);
      }
      // special case for ListItemType
      if (namewithoutType.equals("listitem")) {
        namewithoutType = "listitemtype";
      }

      final JaxbJavaDoc kmlJavaDocElement = kmlJavaDocElements.get(namewithoutType);
      if (kmlJavaDocElement == null) {
        LOG.info("- E> " + implClass.name());
        continue;
      }

      // LOG.info("+ E> " + namewithoutType);
      implClass.javadoc().clear();
      implClass.javadoc().append(kmlJavaDocElement.getJavaDoc());
    }

    LOG.info("trying to add javadocs to found classes:");
    for (final ClassOutline classOutline : outline.getClasses()) {
      final JDefinedClass implClass = classOutline.implClass;
      String namewithoutType = classOutline.implClass.name().toLowerCase().trim();
      namewithoutType = eliminateTypeSuffix(namewithoutType);
      final JaxbJavaDoc kmlJavaDocElement = kmlJavaDocElements.get(namewithoutType);
      if (kmlJavaDocElement == null) {
        // LOG.info("- C> " + classOutline.implClass.name());
        continue;
      }

      // LOG.info("+ C> " + namewithoutType);

      implClass.javadoc().clear();
      implClass.javadoc().append(kmlJavaDocElement.getJavaDoc());

      for (final FieldOutline fieldOutline : classOutline.getDeclaredFields()) {
        if (fieldOutline instanceof FieldOutline) {
          final CPropertyInfo property = fieldOutline.getPropertyInfo();

          final JCodeModel codeModel = classOutline.parent().getCodeModel();

          final JFieldVar currentField = implClass.fields().get(property.getName(false));

          // LOG.info("fieldType: " + currentField.name());
          // find the common type
          final JType currentFieldType = TypeUtil
              .getCommonBaseType(codeModel, listPossibleTypes((ClassOutlineImpl) classOutline, property));
View Full Code Here

    // m.setProperty("com.sun.xml.bind.namespacePrefixMapper", new PreferredMapper());

    createMashaller.body()._return(mVar);

    try {
      final JDefinedClass createNestedPrefixCustomizer = createNestedPrefixCustomizer(cc);
      ifBlockMarshaller._then().add(
          mVar.invoke("setProperty").arg("com.sun.xml.bind.namespacePrefixMapper").arg(JExpr._new(createNestedPrefixCustomizer)));
    } catch (final JClassAlreadyExistsException e) {
    }
View Full Code Here

    createAddToKmzFile.body().add(varKmzFile.invoke("marshal").arg(varOut));
    createAddToKmzFile.body().add(varOut.invoke("closeEntry"));
  }

  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");
View Full Code Here

  private void createCoordinateClass(final Outline outline) {
    // JPackage kmlpackage = Util.getKmlClassPackage(outline);
    // CodeModelClassFactory classFactory = outline.getClassFactory();
    // coordinateClass = classFactory.createClass(kmlpackage, JMod.PUBLIC, "Coordinate", null, ClassType.CLASS);
    final JDefinedClass coordinateClass = pool.getClassCoordinate();

    longitude = coordinateClass.fields().get("longitude");
    latitude = coordinateClass.fields().get("latitude");
    altitude = coordinateClass.fields().get("altitude");

//    longitude.init(JExpr.lit(0.0d));
//    latitude.init(JExpr.lit(0.0d));
//    altitude.init(JExpr.lit(0.0d));
    // longitude = coordinateClass.field(JMod.PRIVATE, cm.DOUBLE, "longitu33de", JExpr.lit(0.0d));
    // latitude = coordinateClass.field(JMod.PRIVATE, cm.DOUBLE, "latitud33e", JExpr.lit(0.0d));
    // altitude = coordinateClass.field(JMod.PRIVATE, cm.DOUBLE, "altitud33e", JExpr.lit(0.0d));

    final JMethod noArgConstructor = coordinateClass.constructor(JMod.PRIVATE);
    noArgConstructor.annotate(Deprecated.class);
    noArgConstructor.javadoc().add("Default no-arg constructor is private. Use overloaded constructor instead! ");
    noArgConstructor.javadoc().add("(Temporary solution, till a better and more suitable ObjectFactory is created.) ");

    final JMethod twoDoubleArgConstructor = coordinateClass.constructor(JMod.PUBLIC);
    addConstructorParam(twoDoubleArgConstructor, longitude);
    addConstructorParam(twoDoubleArgConstructor, latitude);

    final JMethod threeDoubleArgConstructor = coordinateClass.constructor(JMod.PUBLIC);
    addConstructorParam(threeDoubleArgConstructor, longitude);
    addConstructorParam(threeDoubleArgConstructor, latitude);
    addConstructorParam(threeDoubleArgConstructor, altitude);

    final JMethod stringArgConstructor = coordinateClass.constructor(JMod.PUBLIC);
    final JVar stringConstructorArg = stringArgConstructor.param(JMod.FINAL, String.class, "coordinates");
   
    //    http://code.google.com/p/javaapiforkml/issues/detail?id=10
    //    changed:
    //      String[] coords = coordinates.replaceAll(",[ ]+?", ",").trim().split(",");
    //      to:
    //      String[] coords = coordinates.replaceAll(",\\s+", ",").trim().split(",");
    final JVar varCoords = stringArgConstructor.body().decl(stringClass.array(), "coords",
        stringConstructorArg.invoke("replaceAll").arg(",\\s+").arg(",").invoke("trim").invoke("split").arg(","));
    // CODE: if ((coords < 1) && (coords > 3)) {throw IllegalArgumentException}
    stringArgConstructor.body()._if(
        JExpr.ref(varCoords.name()).ref("length").lt(JExpr.lit(1)).cand(JExpr.ref(varCoords.name()).ref("length").gt(JExpr.lit(3))))
        ._then()._throw(JExpr._new(illegalArgumentExceptionClass));
   
    stringArgConstructor.body().assign(JExpr.refthis(longitude.name()),
        JExpr.ref("Double").invoke("parseDouble").arg(JExpr.direct("coords[0]")));
    stringArgConstructor.body().assign(JExpr.refthis(latitude.name()),
        JExpr.ref("Double").invoke("parseDouble").arg(JExpr.direct("coords[1]")));
    stringArgConstructor.body()._if(JExpr.ref(varCoords.name()).ref("length").eq(JExpr.lit(3)))._then().assign(
        JExpr.refthis(altitude.name()), JExpr.ref("Double").invoke("parseDouble").arg(JExpr.direct("coords[2]")));

    // toString
    final JMethod toString = coordinateClass.method(JMod.PUBLIC, stringClass, "toString");
    toString.annotate(Override.class);
    final JVar sbVar = toString.body().decl(stringBuilderClass, "sb", JExpr._new(stringBuilderClass));
    toString.body().add(sbVar.invoke("append").arg(longitude));
    toString.body().add(sbVar.invoke("append").arg(","));
    toString.body().add(sbVar.invoke("append").arg(latitude));
View Full Code Here

  private void createCoordinateClassConverter(final Outline outline) {
    // JPackage kmlpackage = Util.getKmlClassPackage(outline);
    // CodeModelClassFactory classFactory = outline.getClassFactory();
    // coordinateClassConverter = classFactory.createClass(kmlpackage, JMod.PUBLIC | JMod.FINAL, "CoordinatesConverter", null,
    // ClassType.CLASS);
    final JDefinedClass coordinateClassConverter = pool.getClassCoordinateConverter();
    final JDefinedClass coordinateClass = pool.getClassCoordinate();

    final JClass listGenericsCoordinates = outline.getCodeModel().ref(List.class).narrow(coordinateClass);
    final JClass arraylistGenericsCoordinates = outline.getCodeModel().ref(ArrayList.class).narrow(coordinateClass);
    final JClass xmladapter = outline.getCodeModel().ref(XmlAdapter.class).narrow(String.class).narrow(listGenericsCoordinates);
    coordinateClassConverter._extends(xmladapter);
View Full Code Here

TOP

Related Classes of com.sun.codemodel.JDefinedClass

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.