All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.wordnik.swagger.models.ModelImpl Maven / Gradle / Ivy

The newest version!
package com.wordnik.swagger.models;

import com.wordnik.swagger.models.properties.*;

import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

import java.util.*;

import javax.xml.bind.annotation.*;

@XmlType(propOrder = { "required", "properties"})
@JsonPropertyOrder({ "required", "properties"})
public class ModelImpl extends AbstractModel {
  private String type;
  private String name;
  private List required;
  private Map properties;
  private boolean isSimple = false;
  private String description;
  private String example;
  private Property additionalProperties;
  private String discriminator;
  private Xml xml;

  public ModelImpl discriminator(String discriminator) {
    this.setDiscriminator(discriminator);
    return this;
  }
  public ModelImpl name(String name) {
    this.setName(name);
    return this;
  }
  public ModelImpl description(String description) {
    this.setDescription(description);
    return this;
  }
  public ModelImpl property(String key, Property property) {
    this.addProperty(key, property);
    return this;
  }
  public ModelImpl example(String example) {
    this.setExample(example);
    return this;
  }
  public ModelImpl additionalProperties(Property additionalProperties) {
    this.setAdditionalProperties(additionalProperties);
    return this;
  }
  public ModelImpl required(String name) {
    this.addRequired(name);
    return this;
  }
  public ModelImpl xml(Xml xml) {
    this.setXml(xml);
    return this;
  }

  public String getDiscriminator() {
    return this.discriminator;
  }
  public void setDiscriminator(String discriminator) {
    this.discriminator = discriminator;
  }

  @JsonIgnore
  public String getName() {
    return this.name;
  }
  public void setName(String name) {
    this.name = name;
  }

  public String getDescription() {
    return description;
  }
  public void setDescription(String description) {
    this.description = description;
  }

  @JsonIgnore
  public boolean isSimple() {
    return isSimple;
  }
  public void setSimple(boolean isSimple) {
    this.isSimple = isSimple;
  }

  public Property getAdditionalProperties() {
    return additionalProperties;
  }
  public void setAdditionalProperties(Property additionalProperties) {
    this.setType("object");
    this.additionalProperties = additionalProperties;
  }

  public String getType() {
    return type;
  }
  public void setType(String type) {
    this.type = type;
  }

  public void addRequired(String name) {
    Property p = properties.get(name);
    if(p != null)
      p.setRequired(true);
  }

  public List getRequired() {
    List output = new ArrayList();
    if(properties != null) {
      for(String key : properties.keySet()) {
        Property prop = properties.get(key);
        if(prop != null && prop.getRequired())
          output.add(key);
      }
    }
    Collections.sort(output);
    if(output.size() > 0)
      return output;
    else
      return null;
  }
  public void setRequired(List required) {
    this.required = required;
    for(String s : required) {
      if(properties != null) {
        Property p = properties.get(s);
        if(p != null) {
          p.setRequired(true);
        }
      }
    }
  }

  public void addProperty(String key, Property property) {
    if(property == null)
      return;
    if(properties == null)
      properties = new LinkedHashMap();
    if(required != null) {
      for(String ek : required) {
        if(key.equals(ek))
          property.setRequired(true);
      }
    }
    properties.put(key, property);    
  }

  public Map getProperties() {
    return properties;
  }
  public void setProperties(Map properties) {
    if(properties != null)
      for(String key: properties.keySet()) {
        this.addProperty(key, properties.get(key));
      }
  }

  public String getExample() {
    if(example == null) {
      // TODO: will add logic to construct examples based on payload here
    }

    return example;
  }

  public void setExample(String example) {
    this.example = example;
  }

  public Xml getXml(){
    return xml;
  }
  public void setXml(Xml xml) {
    this.xml = xml;
  }

  public Object clone() {
    ModelImpl cloned = new ModelImpl();
    super.cloneTo(cloned);
    cloned.type = this.type;
    cloned.name = this.name;
    cloned.required = this.required;
    cloned.properties = this.properties;
    cloned.isSimple = this.isSimple;
    cloned.description = this.description;
    cloned.example = this.example;
    cloned.additionalProperties = this.additionalProperties;
    cloned.discriminator = this.discriminator;
    cloned.xml = this.xml;

    return cloned;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy