package com.aol.micro.server.rest.swagger;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.function.Function;
import javax.servlet.ServletContextListener;
import com.aol.micro.server.Plugin;
import com.aol.micro.server.servers.model.ServerData;
import com.wordnik.swagger.jaxrs.listing.ApiListingResourceJSON;
import com.wordnik.swagger.jersey.listing.JerseyApiDeclarationProvider;
import com.wordnik.swagger.jersey.listing.JerseyResourceListingProvider;
import cyclops.collections.immutable.PSetX;
import cyclops.function.Lambda;
/**
*
* Collections of Spring configuration classes (Classes annotated with @Configuration)
* that configure various useful pieces of functionality - such as property file loading,
* datasources, scheduling etc
*
* @author johnmcclean
*
*/
public class SwaggerPlugin implements Plugin{
@Override
public PSetX<Class> springClasses() {
return PSetX.empty();
}
@Override
public PSetX<Function<ServerData,ServletContextListener>> servletContextListeners(){
return PSetX.of(Lambda.l1(serverData -> new SwaggerInitializer(serverData)));
}
@Override
public PSetX<Class<?>> jaxRsResources() {
return PSetX.of(ApiListingResourceJSON.class,JerseyApiDeclarationProvider.class,
JerseyResourceListingProvider.class);
}
@Override
public PSetX<String> jaxRsPackages() {
return PSetX.of("com.wordnik.swagger.sample.resource",
"com.wordnik.swagger.sample.util" );
}
}