package cn.dreampie.route;
import cn.dreampie.route.config.Config;
import cn.dreampie.route.core.RouteBuilder;
import cn.dreampie.route.core.RouteHandler;
import cn.dreampie.route.handler.Handler;
import cn.dreampie.route.handler.HandlerFactory;
import javax.servlet.ServletContext;
/**
* Resty
*/
public final class RestyIniter {
private ConfigIniter configIniter;
private Handler handler;
private ServletContext servletContext;
private Config config;
public RestyIniter(Config config, ServletContext servletContext) {
this.servletContext = servletContext;
this.config = config;
configIniter = new ConfigIniter(config);
//build route
RouteBuilder routeBuilder = new RouteBuilder(configIniter.getResourceLoader(), configIniter.getInterceptorLoader());
routeBuilder.build();
//after router build
config.afterRouterBuild(routeBuilder.getRoutesMap());
//add handler
//must after route build
Handler routeHandler = new RouteHandler(routeBuilder);
handler = HandlerFactory.getHandler(configIniter.getHandlerLoader().getHandlers(), routeHandler);
//start job when config over
config.afterStart();
}
public void stop() {
config.beforeStop();
configIniter.stopPlugins();
configIniter.clear();
}
public ServletContext getServletContext() {
return servletContext;
}
public Handler getHandler() {
return handler;
}
}