Package com.fasterxml.jackson.module.jsonSchema.types

Source Code of com.fasterxml.jackson.module.jsonSchema.types.AdditionalItemsDeserializer

package com.fasterxml.jackson.module.jsonSchema.types;

import java.io.IOException;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.TreeNode;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.BooleanNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.module.jsonSchema.JsonSchema;
import com.fasterxml.jackson.module.jsonSchema.types.AdditionalPropertiesDeserializer;
import com.fasterxml.jackson.module.jsonSchema.types.ArraySchema;

/**
* @author Yoann Rodière (adapted from {@link AdditionalPropertiesDeserializer}, by Ignacio del Valle Alles)
*/
public class AdditionalItemsDeserializer extends JsonDeserializer<ArraySchema.AdditionalItems>
{
  @Override
  public ArraySchema.AdditionalItems deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException
  {
      TreeNode node = jp.readValueAsTree();
   
    if (node instanceof ObjectNode) {
        // not clean, but has to do...
            ObjectMapper mapper = (ObjectMapper) jp.getCodec();
      JsonSchema innerSchema = mapper.treeToValue(node, JsonSchema.class);
      return new ArraySchema.SchemaAdditionalItems(innerSchema);
    }
    if (node instanceof BooleanNode) {
      BooleanNode booleanNode = (BooleanNode) node;
      if (booleanNode.booleanValue()) {
        return null; // "additionalItems":true is the default
      }
      return new ArraySchema.NoAdditionalItems();
    }
    throw new JsonMappingException("additionalItems nodes can only be of "
            + "type Boolean or Object; instead found something starting with token " + node.asToken());
  }
}
TOP

Related Classes of com.fasterxml.jackson.module.jsonSchema.types.AdditionalItemsDeserializer

TOP
Copyright © 2018 www.massapi.com. 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.