package io.swagger.models;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.models.auth.SecuritySchemeDefinition;
import io.swagger.models.parameters.Parameter;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class Swagger {
protected String swagger = "2.0";
protected Info info;
protected String host;
protected String basePath;
protected List<Tag> tags;
protected List<Scheme> schemes;
protected List<String> consumes;
protected List<String> produces;
protected List<SecurityRequirement> security;
protected Map<String, Path> paths;
protected Map<String, SecuritySchemeDefinition> securityDefinitions;
protected Map<String, Model> definitions;
protected Map<String, Parameter> parameters;
protected Map<String, Response> responses;
protected ExternalDocs externalDocs;
protected Map<String, Object> vendorExtensions;
// builders
public Swagger info(Info info) {
this.setInfo(info);
return this;
}
public Swagger host(String host) {
this.setHost(host);
return this;
}
public Swagger basePath(String basePath) {
this.setBasePath(basePath);
return this;
}
public Swagger externalDocs(ExternalDocs value) {
this.setExternalDocs(value);
return this;
}
public Swagger tags(List<Tag> tags) {
this.setTags(tags);
return this;
}
public Swagger tag(Tag tag) {
this.addTag(tag);
return this;
}
public Swagger schemes(List<Scheme> schemes) {
this.setSchemes(schemes);
return this;
}
public Swagger scheme(Scheme scheme) {
this.addScheme(scheme);
return this;
}
public Swagger consumes(List<String> consumes) {
this.setConsumes(consumes);
return this;
}
public Swagger consumes(String consumes) {
this.addConsumes(consumes);
return this;
}
public Swagger produces(List<String> produces) {
this.setProduces(produces);
return this;
}
public Swagger produces(String produces) {
this.addProduces(produces);
return this;
}
public Swagger paths(Map<String, Path> paths) {
this.setPaths(paths);
return this;
}
public Swagger path(String key, Path path) {
if (this.paths == null) {
this.paths = new LinkedHashMap<String, Path>();
}
this.paths.put(key, path);
return this;
}
public Swagger responses(Map<String, Response> responses) {
this.responses = responses;
return this;
}
public Swagger response(String key, Response response) {
if (this.responses == null) {
this.responses = new LinkedHashMap<String, Response>();
}
this.responses.put(key, response);
return this;
}
public Swagger parameter(String key, Parameter parameter) {
this.addParameter(key, parameter);
return this;
}
public Swagger securityDefinition(String name, SecuritySchemeDefinition securityDefinition) {
this.addSecurityDefinition(name, securityDefinition);
return this;
}
public Swagger model(String name, Model model) {
this.addDefinition(name, model);
return this;
}
public Swagger security(SecurityRequirement securityRequirement) {
this.addSecurity(securityRequirement);
return this;
}
public Swagger vendorExtension(String key, Object extension) {
if(this.vendorExtensions == null) {
this.vendorExtensions = new LinkedHashMap<String, Object>();
}
this.vendorExtensions.put(key, extension);
return this;
}
// getter & setters
public String getSwagger() {
return swagger;
}
public void setSwagger(String swagger) {
this.swagger = swagger;
}
public Info getInfo() {
return info;
}
public void setInfo(Info info) {
this.info = info;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getBasePath() {
return basePath;
}
public void setBasePath(String basePath) {
this.basePath = basePath;
}
public List<Scheme> getSchemes() {
return schemes;
}
public void setSchemes(List<Scheme> schemes) {
this.schemes = schemes;
}
public void addScheme(Scheme scheme) {
if (schemes == null) {
schemes = new ArrayList<Scheme>();
}
if (!schemes.contains(scheme)) {
schemes.add(scheme);
}
}
public List<Tag> getTags() {
return tags;
}
public void setTags(List<Tag> tags) {
this.tags = tags;
}
public Tag getTag(String tagName) {
Tag tag = null;
if (this.tags != null && tagName != null) {
for (Tag existing : this.tags) {
if (existing.getName().equals(tagName)) {
tag = existing;
break;
}
}
}
return tag;
}
public void addTag(Tag tag) {
if (this.tags == null) {
this.tags = new ArrayList<Tag>();
}
if (tag != null && tag.getName() != null) {
if (getTag(tag.getName()) == null) {
this.tags.add(tag);
}
}
}
public List<String> getConsumes() {
return consumes;
}
public void setConsumes(List<String> consumes) {
this.consumes = consumes;
}
public void addConsumes(String consumes) {
if (this.consumes == null) {
this.consumes = new ArrayList<String>();
}
if (!this.consumes.contains(consumes)) {
this.consumes.add(consumes);
}
}
public List<String> getProduces() {
return produces;
}
public void setProduces(List<String> produces) {
this.produces = produces;
}
public void addProduces(String produces) {
if (this.produces == null) {
this.produces = new ArrayList<String>();
}
if (!this.produces.contains(produces)) {
this.produces.add(produces);
}
}
public Map<String, Path> getPaths() {
return paths;
}
public void setPaths(Map<String, Path> paths) {
this.paths = paths;
}
public Path getPath(String path) {
if (this.paths == null) {
return null;
}
return this.paths.get(path);
}
public Map<String, SecuritySchemeDefinition> getSecurityDefinitions() {
return securityDefinitions;
}
public void setSecurityDefinitions(Map<String, SecuritySchemeDefinition> securityDefinitions) {
this.securityDefinitions = securityDefinitions;
}
public void addSecurityDefinition(String name, SecuritySchemeDefinition securityDefinition) {
if (this.securityDefinitions == null) {
this.securityDefinitions = new LinkedHashMap<String, SecuritySchemeDefinition>();
}
this.securityDefinitions.put(name, securityDefinition);
}
/**
* @deprecated Use {@link #getSecurity()}.
*/
@JsonIgnore
@Deprecated
public List<SecurityRequirement> getSecurityRequirement() {
return security;
}
/**
* @deprecated Use {@link #setSecurity(List)}.
*/
@JsonIgnore
@Deprecated
public void setSecurityRequirement(List<SecurityRequirement> securityRequirements) {
this.security = securityRequirements;
}
/**
* @deprecated Use {@link #addSecurity(SecurityRequirement)}.
*/
@JsonIgnore
@Deprecated
public void addSecurityDefinition(SecurityRequirement securityRequirement) {
this.addSecurity(securityRequirement);
}
public List<SecurityRequirement> getSecurity() {
return security;
}
public void setSecurity(List<SecurityRequirement> securityRequirements) {
this.security = securityRequirements;
}
public void addSecurity(SecurityRequirement securityRequirement) {
if (this.security == null) {
this.security = new ArrayList<SecurityRequirement>();
}
this.security.add(securityRequirement);
}
public Map<String, Model> getDefinitions() {
return definitions;
}
public void setDefinitions(Map<String, Model> definitions) {
this.definitions = definitions;
}
public void addDefinition(String key, Model model) {
if (this.definitions == null) {
this.definitions = new LinkedHashMap<String, Model>();
}
this.definitions.put(key, model);
}
public Map<String, Parameter> getParameters() {
return parameters;
}
public void setParameters(Map<String, Parameter> parameters) {
this.parameters = parameters;
}
public Parameter getParameter(String parameter) {
if (this.parameters == null) {
return null;
}
return this.parameters.get(parameter);
}
public void addParameter(String key, Parameter parameter) {
if (this.parameters == null) {
this.parameters = new LinkedHashMap<String, Parameter>();
}
this.parameters.put(key, parameter);
}
public Map<String, Response> getResponses() {
return responses;
}
public void setResponses(Map<String, Response> responses) {
this.responses = responses;
}
public ExternalDocs getExternalDocs() {
return externalDocs;
}
public void setExternalDocs(ExternalDocs value) {
externalDocs = value;
}
@JsonAnyGetter
public Map<String, Object> getVendorExtensions() {
return vendorExtensions;
}
@JsonAnySetter
public void setVendorExtension(String name, Object value) {
if (name.startsWith("x-")) {
vendorExtension(name, value);
}
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((basePath == null) ? 0 : basePath.hashCode());
result = prime * result + ((consumes == null) ? 0 : consumes.hashCode());
result = prime * result
+ ((definitions == null) ? 0 : definitions.hashCode());
result = prime * result
+ ((externalDocs == null) ? 0 : externalDocs.hashCode());
result = prime * result + ((host == null) ? 0 : host.hashCode());
result = prime * result + ((info == null) ? 0 : info.hashCode());
result = prime * result
+ ((parameters == null) ? 0 : parameters.hashCode());
result = prime * result + ((paths == null) ? 0 : paths.hashCode());
result = prime * result + ((produces == null) ? 0 : produces.hashCode());
result = prime * result + ((schemes == null) ? 0 : schemes.hashCode());
result = prime
* result
+ ((securityDefinitions == null) ? 0 : securityDefinitions
.hashCode());
result = prime
* result
+ ((security == null) ? 0 : security
.hashCode());
result = prime * result + ((swagger == null) ? 0 : swagger.hashCode());
result = prime * result + ((tags == null) ? 0 : tags.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Swagger other = (Swagger) obj;
if (basePath == null) {
if (other.basePath != null) {
return false;
}
} else if (!basePath.equals(other.basePath)) {
return false;
}
if (consumes == null) {
if (other.consumes != null) {
return false;
}
} else if (!consumes.equals(other.consumes)) {
return false;
}
if (definitions == null) {
if (other.definitions != null) {
return false;
}
} else if (!definitions.equals(other.definitions)) {
return false;
}
if (externalDocs == null) {
if (other.externalDocs != null) {
return false;
}
} else if (!externalDocs.equals(other.externalDocs)) {
return false;
}
if (host == null) {
if (other.host != null) {
return false;
}
} else if (!host.equals(other.host)) {
return false;
}
if (info == null) {
if (other.info != null) {
return false;
}
} else if (!info.equals(other.info)) {
return false;
}
if (parameters == null) {
if (other.parameters != null) {
return false;
}
} else if (!parameters.equals(other.parameters)) {
return false;
}
if (paths == null) {
if (other.paths != null) {
return false;
}
} else if (!paths.equals(other.paths)) {
return false;
}
if (produces == null) {
if (other.produces != null) {
return false;
}
} else if (!produces.equals(other.produces)) {
return false;
}
if (schemes == null) {
if (other.schemes != null) {
return false;
}
} else if (!schemes.equals(other.schemes)) {
return false;
}
if (securityDefinitions == null) {
if (other.securityDefinitions != null) {
return false;
}
} else if (!securityDefinitions.equals(other.securityDefinitions)) {
return false;
}
if (security == null) {
if (other.security != null) {
return false;
}
} else if (!security.equals(other.security)) {
return false;
}
if (swagger == null) {
if (other.swagger != null) {
return false;
}
} else if (!swagger.equals(other.swagger)) {
return false;
}
if (tags == null) {
if (other.tags != null) {
return false;
}
} else if (!tags.equals(other.tags)) {
return false;
}
return true;
}
public Swagger vendorExtensions(Map<String, Object> vendorExtensions) {
if( vendorExtensions == null ){
return this;
}
if( this.vendorExtensions == null ){
this.vendorExtensions = new LinkedHashMap<String, Object>();
}
this.vendorExtensions.putAll( vendorExtensions );
return this;
}
public void setVendorExtensions(Map<String, Object> vendorExtensions) {
this.vendorExtensions = vendorExtensions;
}
}