use of org.webpieces.router.api.streams.StreamService in project webpieces by deanhiller.
the class SharedMatchUtil method buildRoutes.
protected List<AbstractRouter> buildRoutes(List<FilterInfo<?>> routeFilters) {
List<AbstractRouter> routers = new ArrayList<>();
for (RouterAndInfo routerAndInfo : newDynamicRoutes) {
AbstractDynamicRouter router = routerAndInfo.getRouter();
MatchInfo matchInfo = router.getMatchInfo();
String path = matchInfo.getFullPath();
Port port = matchInfo.getExposedPorts();
ResolvedMethod methodMeta = routerAndInfo.getMetaAndController().getMethodMeta();
StreamService streamSvc;
if (routerAndInfo.getRouteType() == RouteType.STREAMING) {
streamSvc = new StreamProxy(holder.getFutureUtil(), holder.getServiceInvoker());
} else {
// Wire in request/response filters at this point
List<FilterInfo<?>> filters = findMatchingFilters(methodMeta, path, port, routeFilters);
FilterCreationMeta chainInfo = new FilterCreationMeta(resettingLogic.getInjector(), filters, routerAndInfo.getSvcProxy());
Service<MethodMeta, Action> service = holder.getFinder().loadFilters(chainInfo);
Processor processor;
if (routerAndInfo.getRouteType() == RouteType.CONTENT) {
processor = holder.getResponseProcessorContent();
} else if (routerAndInfo.getRouteType() == RouteType.HTML) {
processor = holder.getResponseProcessorHtml();
} else {
throw new IllegalStateException("RouteType not supported here=" + routerAndInfo.getRouteType());
}
String i18nBundleName = routerAndInfo.getRouteInfo().getRouteModuleInfo().getI18nBundleName();
Endpoint svc = new Endpoint(service);
streamSvc = new RequestResponseStream(svc, i18nBundleName, processor, holder.getBodyParsers(), holder.getServiceInvoker());
}
// Add streaming filters at this point here...
router.setDynamicInfo(streamSvc);
routers.add(router);
}
return routers;
}
Aggregations