|
|
@ -1,11 +1,15 @@ |
|
|
|
package api; |
|
|
|
package api; |
|
|
|
|
|
|
|
|
|
|
|
import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource; |
|
|
|
import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource; |
|
|
|
|
|
|
|
import java.io.File; |
|
|
|
import java.util.HashSet; |
|
|
|
import java.util.HashSet; |
|
|
|
import java.util.Set; |
|
|
|
import java.util.Set; |
|
|
|
|
|
|
|
import org.eclipse.jetty.rewrite.handler.RedirectPatternRule; |
|
|
|
|
|
|
|
import org.eclipse.jetty.rewrite.handler.RewriteHandler; |
|
|
|
|
|
|
|
|
|
|
|
import org.eclipse.jetty.server.Server; |
|
|
|
import org.eclipse.jetty.server.Server; |
|
|
|
import org.eclipse.jetty.server.handler.InetAccessHandler; |
|
|
|
import org.eclipse.jetty.server.handler.InetAccessHandler; |
|
|
|
|
|
|
|
import org.eclipse.jetty.servlet.DefaultServlet; |
|
|
|
import org.eclipse.jetty.servlet.ServletContextHandler; |
|
|
|
import org.eclipse.jetty.servlet.ServletContextHandler; |
|
|
|
import org.eclipse.jetty.servlet.ServletHolder; |
|
|
|
import org.eclipse.jetty.servlet.ServletHolder; |
|
|
|
import org.glassfish.jersey.server.ResourceConfig; |
|
|
|
import org.glassfish.jersey.server.ResourceConfig; |
|
|
@ -36,16 +40,30 @@ public class ApiService { |
|
|
|
} |
|
|
|
} |
|
|
|
this.server.setHandler(accessHandler); |
|
|
|
this.server.setHandler(accessHandler); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// url rewriting
|
|
|
|
|
|
|
|
RewriteHandler rewriteHandler = new RewriteHandler(); |
|
|
|
|
|
|
|
accessHandler.setHandler(rewriteHandler); |
|
|
|
|
|
|
|
|
|
|
|
// context
|
|
|
|
// context
|
|
|
|
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.NO_SESSIONS); |
|
|
|
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.NO_SESSIONS); |
|
|
|
context.setContextPath("/"); |
|
|
|
context.setContextPath("/"); |
|
|
|
accessHandler.setHandler(context); |
|
|
|
rewriteHandler.setHandler(context); |
|
|
|
|
|
|
|
|
|
|
|
// API servlet
|
|
|
|
// API servlet
|
|
|
|
ServletContainer container = new ServletContainer(config); |
|
|
|
ServletContainer container = new ServletContainer(config); |
|
|
|
ServletHolder apiServlet = new ServletHolder(container); |
|
|
|
ServletHolder apiServlet = new ServletHolder(container); |
|
|
|
apiServlet.setInitOrder(1); |
|
|
|
apiServlet.setInitOrder(1); |
|
|
|
context.addServlet(apiServlet, "/*"); |
|
|
|
context.addServlet(apiServlet, "/*"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Swagger-UI static content
|
|
|
|
|
|
|
|
ClassLoader loader = this.getClass().getClassLoader(); |
|
|
|
|
|
|
|
File swaggerUIResourceLocation = new File(loader.getResource("resources/swagger-ui/").getFile()); |
|
|
|
|
|
|
|
ServletHolder swaggerUIServlet = new ServletHolder("static-swagger-ui", DefaultServlet.class); |
|
|
|
|
|
|
|
swaggerUIServlet.setInitParameter("resourceBase", swaggerUIResourceLocation.getAbsolutePath()); |
|
|
|
|
|
|
|
swaggerUIServlet.setInitParameter("dirAllowed","true"); |
|
|
|
|
|
|
|
swaggerUIServlet.setInitParameter("pathInfoOnly","true"); |
|
|
|
|
|
|
|
context.addServlet(swaggerUIServlet,"/api-documentation/*"); |
|
|
|
|
|
|
|
rewriteHandler.addRule(new RedirectPatternRule("/api-documentation", "/api-documentation/index.html")); // redirect to swagger ui start page
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//XXX: replace singleton pattern by dependency injection?
|
|
|
|
//XXX: replace singleton pattern by dependency injection?
|
|
|
|