Commit 6a52df22 authored by Noel's avatar Noel
Browse files

Añade etiqueta uniqueItemsByRequiredProperties

Añade etiqueta que indica que un item del array no puede ser enviado
con id a null si ya existía en el array
parent 9604948e
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
package com.kjetland.jackson.jsonSchema.annotations;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

@Target({ METHOD, FIELD, PARAMETER, TYPE })
@Retention(RUNTIME)
public @interface JsonSchemaUniqueItemsByRequiredProperties {
}
+15 −2
Original line number Diff line number Diff line
@@ -364,6 +364,9 @@ class JsonSchemaGenerator
          setType(node, currentProperty, "array")
          //node.put("type", "array")

          if (propertyIsUniqueItemsByRequiredProperties(currentProperty))
            node.put("uniqueItemsByRequiredProperties", true)

          config.defaultArrayFormat.foreach {
            format => setFormat(node, format)
          }
@@ -701,7 +704,7 @@ class JsonSchemaGenerator
              val objectBuilder: ObjectNode => Option[JsonObjectFormatVisitor] = {
                thisObjectNode: ObjectNode =>

                  thisObjectNode.put("type", "object")

                  //thisObjectNode.put("additionalProperties", false)

                  // If class is annotated with JsonSchemaFormat, we should add it
@@ -765,6 +768,9 @@ class JsonSchemaGenerator
                    def myPropertyHandler(propertyName: String, propertyType: JavaType, prop: Option[BeanProperty], jsonPropertyRequired: Boolean): Unit = {

                      if (propertyIsNotIgnored(prop)) {

                        setType(thisObjectNode, prop, "object");

                        l(s"JsonObjectFormatVisitor - ${propertyName}: ${propertyType}")
                        if (propertiesNode.get(propertyName) != null) {
                          if (!config.disableWarnings) {
@@ -966,7 +972,7 @@ class JsonSchemaGenerator
      def setType(node: ObjectNode, prop: Option[BeanProperty], typePrimary: String)
      =
      {
        if (propertyIsNullable(prop)) {
        if (prop == null || propertyIsNullable(prop)) {
          val types = JsonNodeFactory.instance.arrayNode()
          types.add(typePrimary)
          types.add("null")
@@ -989,6 +995,13 @@ class JsonSchemaGenerator
      {
        (prop.isEmpty || prop.get.getAnnotation(classOf[JsonSchemaIgnore]) == null)
      }

      // Comprueba si se debe añadir la propiedad uniqueItemsByRequiredProperties
      def propertyIsUniqueItemsByRequiredProperties(prop: Option[BeanProperty])
      =
      {
        (prop != null && !prop.isEmpty && prop.get.getAnnotation(classOf[JsonSchemaUniqueItemsByRequiredProperties]) != null)
      }
  }

  def generateTitleFromPropertyName(propertyName:String):String = {