SwaggerJaxrsConfig.java 2.15 KB
package fi.codecrew.moya.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.wordnik.swagger.config.ConfigFactory;
import com.wordnik.swagger.config.ScannerFactory;
import com.wordnik.swagger.config.SwaggerConfig;
import com.wordnik.swagger.jaxrs.config.ReflectiveJaxrsScanner;
import com.wordnik.swagger.jaxrs.reader.DefaultJaxrsApiReader;
import com.wordnik.swagger.reader.ClassReaders;

import fi.codecrew.moya.rest.RestApplicationEntrypoint;

@WebServlet(name = "SwaggerJaxrsConfig", loadOnStartup = 1, description = "Configure Swaggered API documentation")
public class SwaggerJaxrsConfig extends HttpServlet {
	private static final long serialVersionUID = 35868122371671912L;
	private static final Logger log = LoggerFactory.getLogger(SwaggerJaxrsConfig.class);

	private static final String BASE_URL = "/MoyaWeb";
	private static final String API_RESOURCE_PACKAGE = "fi.codecrew.moya.rest";

	@Override
	public void init() throws ServletException {
		log.info("Initializing Swagger configuration servlet");
		try {

			// Configure basic API settings shown in API doc JSON.
			SwaggerConfig swaggerConfig = new SwaggerConfig();
			swaggerConfig.setBasePath(BASE_URL + RestApplicationEntrypoint.REST_PATH);
			swaggerConfig.setApiVersion("1.0.0");
			ConfigFactory.setConfig(swaggerConfig);

			// Configure scanning for API annotations in desired packaget
			// ServletScanner scanner = new ServletScanner();
			// scanner.setResourcePackage(API_RESOURCE_PACKAGE);
			// DefaultJaxrsScanner scanner = new DefaultJaxrsScanner();
			ReflectiveJaxrsScanner scanner = new ReflectiveJaxrsScanner();
			scanner.setResourcePackage(API_RESOURCE_PACKAGE);
			ScannerFactory.setScanner(scanner);

			// Reads annotations from the scanned classes.
			ClassReaders.setReader(new DefaultJaxrsApiReader());

			log.info("Initializing Swagger configuration succeeded.");
		} catch (Exception e) {
			log.error("Initializing Swagger configuration failed", e);
		}
	}

	@Override
	public void destroy() {
		log.info("Destroying Swagger configuration servlet");
	}
}