Example #1
0
 private void addJsonTypeInfoAnnotation(JDefinedClass jclass, JsonNode node) {
   if (this.ruleFactory.getGenerationConfig().getAnnotationStyle() == AnnotationStyle.JACKSON2) {
     String annotationName = node.get("deserializationClassProperty").asText();
     JAnnotationUse jsonTypeInfo = jclass.annotate(JsonTypeInfo.class);
     jsonTypeInfo.param("use", JsonTypeInfo.Id.CLASS);
     jsonTypeInfo.param("include", JsonTypeInfo.As.PROPERTY);
     jsonTypeInfo.param("property", annotationName);
   }
 }
  @Override
  public JAnnotationUse apply(
      ApiResourceMetadata controllerMetadata, JDefinedClass generatableType) {
    JAnnotationUse feignClient = generatableType.annotate(FeignClient.class);

    feignClient.param("url", controllerMetadata.getControllerUrl());
    feignClient.param("name", getClientName(controllerMetadata));

    return feignClient;
  }
  private void addGenerated(final JDefinedClass type) {
    assert type != null;

    JAnnotationUse anno = type.annotate(Generated.class);
    anno.param("value", String.format("XJC %s", Driver.getBuildID()));

    Date now = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat(ISO_8601_FORMAT);
    anno.param("date", sdf.format(now));

    // TODO: Maybe support customized comments?
  }
  private void addJsr303Annotations(final AbstractParam parameter, final JVar argumentVariable) {
    if (isNotBlank(parameter.getPattern())) {
      LOGGER.info(
          "Pattern constraint ignored for parameter: "
              + ToStringBuilder.reflectionToString(parameter, SHORT_PREFIX_STYLE));
    }

    final Integer minLength = parameter.getMinLength();
    final Integer maxLength = parameter.getMaxLength();
    if ((minLength != null) || (maxLength != null)) {
      final JAnnotationUse sizeAnnotation = argumentVariable.annotate(Size.class);

      if (minLength != null) {
        sizeAnnotation.param("min", minLength);
      }

      if (maxLength != null) {
        sizeAnnotation.param("max", maxLength);
      }
    }

    final BigDecimal minimum =
        parameter.getMinimum() == null ? null : BigDecimal.valueOf(parameter.getMinimum());
    if (minimum != null) {
      addMinMaxConstraint(parameter, "minimum", Min.class, minimum, argumentVariable);
    }

    final BigDecimal maximum =
        parameter.getMaximum() == null ? null : BigDecimal.valueOf(parameter.getMaximum());

    if (maximum != null) {
      addMinMaxConstraint(parameter, "maximum", Max.class, maximum, argumentVariable);
    }

    if (parameter.isRequired()) {
      argumentVariable.annotate(NotNull.class);
    }
  }
Example #5
0
  /**
   * Generates a class for each configured object class. See {@link #objectClasses}. {@link
   * #write(String)} must be invoked to write the classes to disk.
   */
  public void generate() {
    for (String objectClass : objectClasses) {
      final JDefinedClass definedClass = createClass(packageName, objectClass);
      final JDocComment jDocComment = definedClass.javadoc();
      jDocComment.add(String.format("Ldaptive generated bean for objectClass '%s'", objectClass));

      final ObjectClass oc = schema.getObjectClass(objectClass);
      final Set<String> attributeNames = getAttributeNames(oc);
      if (useOperationalAttributes) {
        for (AttributeType type : schema.getAttributeTypes()) {
          if (AttributeUsage.DIRECTORY_OPERATION.equals(type.getUsage())) {
            attributeNames.add(type.getName());
          }
        }
      }

      final Map<String, AttributeType> mutators = new TreeMap<>();
      for (String name : attributeNames) {
        final AttributeType type = schema.getAttributeType(name);
        if (!isNameExcluded(type)) {
          if (nameMappings.containsKey(type.getName())) {
            mutators.put(nameMappings.get(type.getName()), type);
          } else {
            mutators.put(formatAttributeName(type.getName()), type);
          }
        }
      }

      // add entry annotation
      final JAnnotationUse entryAnnotation =
          definedClass.annotate(codeModel.ref(org.ldaptive.beans.Entry.class));
      entryAnnotation.param("dn", "dn");

      final JAnnotationArrayMember attrArray = entryAnnotation.paramArray("attributes");

      // add mutator for the DN
      createMutators(definedClass, "dn", String.class, false);

      // add mutators for each attribute
      for (Map.Entry<String, AttributeType> mutator : mutators.entrySet()) {
        final Class<?> syntaxType =
            getSyntaxType(
                mutator.getValue(), schema.getSyntax(mutator.getValue().getSyntaxOID(false)));
        if (mutator.getValue().isSingleValued()) {
          createMutators(definedClass, mutator.getKey(), syntaxType, false);
        } else {
          createMutators(definedClass, mutator.getKey(), syntaxType, true);
        }

        // add attribute annotation
        final JAnnotationUse attrAnnotation =
            attrArray.annotate(org.ldaptive.beans.Attribute.class);
        attrAnnotation.param("name", mutator.getValue().getName());
        if (!mutator.getKey().equals(mutator.getValue().getName())) {
          attrAnnotation.param("property", mutator.getKey());
        }
        if (byte[].class.equals(syntaxType)) {
          attrAnnotation.param("binary", true);
        }
      }

      // create additional methods
      createHashCode(definedClass);
      createEquals(definedClass);
      createToString(definedClass);
    }
  }
Example #6
0
 private void addGeneratedAnnotation(JDefinedClass jclass) {
   JAnnotationUse generated = jclass.annotate(Generated.class);
   generated.param("value", SchemaMapper.class.getPackage().getName());
 }