blob: 081015051b07250e413f38a493fa9064ae643011 [file] [log] [blame]
// ***************************************************************************************************************************
// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *
// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *
// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *
// * with the License. You may obtain a copy of the License at *
// * *
// * http://www.apache.org/licenses/LICENSE-2.0 *
// * *
// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *
// * specific language governing permissions and limitations under the License. *
// ***************************************************************************************************************************
package org.apache.juneau.dto.swagger;
import java.net.*;
import org.apache.juneau.*;
/**
* Various useful static methods for creating Swagger elements.
*
* <ul class='seealso'>
* <li class='link'>{@doc juneau-dto.Swagger}
* </ul>
*/
public class SwaggerBuilder {
/**
* Creates an empty {@link Contact} element.
*
* @return The new element.
*/
public static final Contact contact() {
return new Contact();
}
/**
* Creates an {@link Contact} element with the specified {@link Contact#setName(String) name} attribute.
*
* @param name The {@link Contact#setName(String) name} attribute.
* @return The new element.
*/
public static final Contact contact(String name) {
return contact().name(name);
}
/**
* Creates an {@link Contact} element with the specified {@link Contact#setName(String) name}, {@link Contact#setUrl(URI) url},
* and {@link Contact#setEmail(String) email} attributes.
*
* @param name The {@link Contact#setName(String) name} attribute.
* @param url
* The {@link Contact#setUrl(URI) url} attribute.
* <br>The value can be of any of the following types: {@link URI}, {@link URL}, {@link String}.
* <br>Strings must be valid URIs.
* <br>URIs defined by {@link UriResolver} can be used for values.
* @param email The {@link Contact#setEmail(String) email} attribute.
* @return The new element.
*/
public static final Contact contact(String name, Object url, String email) {
return contact().name(name).url(url).email(email);
}
/**
* Creates an empty {@link ExternalDocumentation} element.
*
* @return The new element.
*/
public static final ExternalDocumentation externalDocumentation() {
return new ExternalDocumentation();
}
/**
* Creates an {@link ExternalDocumentation} element with the specified {@link ExternalDocumentation#setUrl(URI) url}
* attribute.
*
* @param url
* The {@link ExternalDocumentation#setUrl(URI) url} attribute.
* <br>The value can be of any of the following types: {@link URI}, {@link URL}, {@link String}.
* <br>Strings must be valid URIs.
* <br>URIs defined by {@link UriResolver} can be used for values.
* @return The new element.
*/
public static final ExternalDocumentation externalDocumentation(Object url) {
return externalDocumentation().url(url);
}
/**
* Creates an {@link ExternalDocumentation} element with the specified {@link ExternalDocumentation#setUrl(URI) url}
* and {@link ExternalDocumentation#setDescription(String) description} attributes.
*
* @param url
* The {@link ExternalDocumentation#setUrl(URI) url} attribute.
* <br>The value can be of any of the following types: {@link URI}, {@link URL}, {@link String}.
* <br>Strings must be valid URIs.
* <br>URIs defined by {@link UriResolver} can be used for values.
* @param description The {@link ExternalDocumentation#setDescription(String) description} attribute.
* @return The new element.
*/
public static final ExternalDocumentation externalDocumentation(Object url, String description) {
return externalDocumentation().url(url).description(description);
}
/**
* Creates an empty {@link HeaderInfo} element.
*
* @return The new element.
*/
public static final HeaderInfo headerInfo() {
return new HeaderInfo();
}
/**
* Creates an {@link HeaderInfo} element with the specified {@link HeaderInfo#setType(String) type} attribute.
*
* @param type The {@link HeaderInfo#setType(String) type} attribute.
* @return The new element.
*/
public static final HeaderInfo headerInfo(String type) {
return headerInfo().type(type);
}
/**
* Creates an {@link HeaderInfo} element with the specified {@link HeaderInfo#setType(String) type} attribute.
*
* <p>
* Throws a runtime exception if the type is not valid.
*
* @param type
* The {@link HeaderInfo#setType(String) type} attribute.
* <br>Valid values:
* <ul>
* <li><js>"string"</js>
* <li><js>"number"</js>
* <li><js>"integer"</js>
* <li><js>"boolean"</js>
* <li><js>"array"</js>
* </ul>
* @return The new element.
*/
public static final HeaderInfo headerInfoStrict(String type) {
return headerInfo().strict().type(type);
}
/**
* Creates an empty {@link Info} element.
*
* @return The new element.
*/
public static final Info info() {
return new Info();
}
/**
* Creates an {@link Info} element with the specified {@link Info#setTitle(String) title} and {@link Info#setVersion(String) version}
* attributes.
*
* @param title The {@link Info#setTitle(String) title} attribute.
* @param version The {@link Info#setVersion(String) version} attribute.
* @return The new element.
*/
public static final Info info(String title, String version) {
return info().title(title).version(version);
}
/**
* Creates an empty {@link Items} element.
*
* @return The new element.
*/
public static final Items items() {
return new Items();
}
/**
* Creates an {@link Items} element with the specified {@link Items#setType(String) type} attribute.
*
* @param type The {@link Items#setType(String) type} attribute.
* @return The new element.
*/
public static final Items items(String type) {
return items().type(type);
}
/**
* Creates an {@link Items} element with the specified {@link Items#setType(String) type} attribute.
*
* <p>
* Throws a runtime exception if the type is not valid.
*
* @param type
* The {@link Items#setType(String) type} attribute.
* <br>Valid values:
* <ul>
* <li><js>"string"</js>
* <li><js>"number"</js>
* <li><js>"integer"</js>
* <li><js>"boolean"</js>
* <li><js>"array"</js>
* </ul>
* @return The new element.
*/
public static final Items itemsStrict(String type) {
return items().strict().type(type);
}
/**
* Creates an empty {@link License} element.
*
* @return The new element.
*/
public static final License license() {
return new License();
}
/**
* Creates an {@link License} element with the specified {@link License#setName(String) name} attribute.
*
* @param name The {@link License#setName(String) name} attribute.
* @return The new element.
*/
public static final License license(String name) {
return license().name(name);
}
/**
* Creates an {@link License} element with the specified {@link License#setName(String) name} and {@link License#setUrl(URI) url} attributes.
*
* @param name The {@link License#setName(String) name} attribute.
* @param url The {@link License#setUrl(URI) url} attribute.
* @return The new element.
*/
public static final License license(String name, URI url) {
return license().name(name).url(url);
}
/**
* Creates an empty {@link Operation} element.
*
* @return The new element.
*/
public static final Operation operation() {
return new Operation();
}
/**
* Creates an empty {@link ParameterInfo} element.
*
* @return The new element.
*/
public static final ParameterInfo parameterInfo() {
return new ParameterInfo();
}
/**
* Creates an {@link ParameterInfo} element with the specified {@link ParameterInfo#setIn(String) in} and
* {@link ParameterInfo#setName(String) name} attributes.
*
* @param in The {@link ParameterInfo#setIn(String) in} attribute.
* @param name The {@link ParameterInfo#setName(String) name} attribute.
* @return The new element.
*/
public static final ParameterInfo parameterInfo(String in, String name) {
return parameterInfo().in(in).name(name);
}
/**
* Creates an {@link ParameterInfo} element with the specified {@link ParameterInfo#setIn(String) in} and
* {@link ParameterInfo#setName(String) name} attributes.
*
* <p>
* Throws a runtime exception if the type is not valid.
*
* @param in
* The {@link ParameterInfo#setIn(String) in} attribute.
* <br>Valid values:
* <ul>
* <li><js>"query"</js>
* <li><js>"header"</js>
* <li><js>"path"</js>
* <li><js>"formData"</js>
* <li><js>"body"</js>
* </ul>
* @param name The {@link ParameterInfo#setName(String) name} attribute.
* @return The new element.
*/
public static final ParameterInfo parameterInfoStrict(String in, String name) {
return parameterInfo().strict().in(in).name(name);
}
/**
* Creates an empty {@link ResponseInfo} element.
*
* @return The new element.
*/
public static final ResponseInfo responseInfo() {
return new ResponseInfo();
}
/**
* Creates an {@link ResponseInfo} element with the specified {@link ResponseInfo#setDescription(String) description} attribute.
*
* @param description The {@link ResponseInfo#setDescription(String) description} attribute.
* @return The new element.
*/
public static final ResponseInfo responseInfo(String description) {
return responseInfo().description(description);
}
/**
* Creates an empty {@link SchemaInfo} element.
*
* @return The new element.
*/
public static final SchemaInfo schemaInfo() {
return new SchemaInfo();
}
/**
* Creates an empty {@link SecurityScheme} element.
*
* @return The new element.
*/
public static final SecurityScheme securityScheme() {
return new SecurityScheme();
}
/**
* Creates an {@link SecurityScheme} element with the specified {@link SecurityScheme#setType(String) type} attribute.
*
* @param type The {@link SecurityScheme#setType(String) type} attribute.
* @return The new element.
*/
public static final SecurityScheme securityScheme(String type) {
return securityScheme().type(type);
}
/**
* Creates an {@link SecurityScheme} element with the specified {@link SecurityScheme#setType(String) type} attribute.
*
* <p>
* Throws a runtime exception if the type is not valid.
*
* @param type
* The {@link SecurityScheme#setType(String) type} attribute.
* <br>Valid values:
* <ul>
* <li><js>"basic"</js>
* <li><js>"apiKey"</js>
* <li><js>"oauth2"</js>
* </ul>
* @return The new element.
*/
public static final SecurityScheme securitySchemeStrict(String type) {
return securityScheme().strict().type(type);
}
/**
* Creates an empty {@link Swagger} element.
*
* @return The new element.
*/
public static final Swagger swagger() {
return new Swagger();
}
/**
* Creates an {@link Swagger} element with the specified {@link Swagger#setInfo(Info) info} attribute.
*
* @param info The {@link Swagger#setInfo(Info) info} attribute.
* @return The new element.
*/
public static final Swagger swagger(Info info) {
return swagger().info(info);
}
/**
* Creates an empty {@link Tag} element.
*
* @return The new element.
*/
public static final Tag tag() {
return new Tag();
}
/**
* Creates an {@link Tag} element with the specified {@link Tag#setName(String) name} attribute.
*
* @param name The {@link Tag#setName(String) name} attribute.
* @return The new element.
*/
public static final Tag tag(String name) {
return tag().name(name);
}
/**
* Creates an empty {@link Xml} element.
*
* @return The new element.
*/
public static final Xml xml() {
return new Xml();
}
}