{title:'Swagger UI'}

The {@link oaj.dto.swagger.ui.SwaggerUI} class is a DTO class for generating Swagger user interfaces from {@link oaj.dto.swagger.Swagger} beans.

The PetStore example described later provides an example of auto-generated Swagger JSON:

Using {@link oaj.dto.swagger.ui.SwaggerUI}, we're able to render that JSON as a Swagger user interface when the request is asking for HTML:

The class itself is nothing more than a POJO swap that swaps out {@link oaj.dto.swagger.Swagger} beans with {@link oaj.dto.html5.Div} elements:

| public class SwaggerUI extends ObjectSwap<Swagger,Div> { | | @Override | public MediaType[] forMediaTypes() { | // Only use this swap when the Accept type is HTML. | return new MediaType[] {MediaType.HTML}; | } | | @Override | public Div swap(BeanSession beanSession, Swagger swagger) throws Exception { | ... | } | }

The {@link oajr.servlet.BasicRestServlet} class (describe later) shows how this swap is used in the REST interface to generate the Swagger UI shown above:

| @Rest( | | // Allow OPTIONS requests to be simulated using ?method=OPTIONS query parameter. | allowedMethodParams="OPTIONS", | | | ... | ) | @BeanConfig( | // POJO swaps to apply to all serializers/parsers. | swaps={ | // Use the SwaggerUI swap when rendering Swagger beans. | SwaggerUI.class | } | ) | public abstract class BasicRestServlet extends RestServlet implements BasicRestConfig { | | /** | * [OPTIONS /*] - Show resource options. | */ | @RestOp( | method=OPTIONS, | path="/*", | summary="Swagger documentation", | description="Swagger documentation for this resource." | ) | @HtmlDocConfig( | // Override the nav links for the swagger page. | navlinks={ | "back: servlet:/", | "json: servlet:/?method=OPTIONS&Accept=text/json&plainText=true" | }, | // Never show aside contents of page inherited from class. | aside="NONE" | ) | public Swagger getOptions(RestRequest req) { | // Localized Swagger for this resource is available through the RestRequest object. | return req.getSwagger(); | } | }