use of io.crnk.core.engine.dispatcher.RequestDispatcher in project crnk-framework by crnk-project.
the class SpringCrnkFilter method doFilter.
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
if (req instanceof HttpServletRequest && res instanceof HttpServletResponse && matchesPrefix((HttpServletRequest) req)) {
ServletContext servletContext = filterConfig.getServletContext();
RequestDispatcher requestDispatcher = boot.getRequestDispatcher();
ServletRequestContext context = new ServletRequestContext(servletContext, (HttpServletRequest) req, (HttpServletResponse) res, boot.getWebPathPrefix(), defaultCharacterEncoding);
requestDispatcher.process(context);
if (!context.checkAbort()) {
chain.doFilter(req, res);
}
} else {
chain.doFilter(req, res);
}
}
use of io.crnk.core.engine.dispatcher.RequestDispatcher in project crnk-framework by crnk-project.
the class CrnkFilter method filter.
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
try {
JaxrsRequestContext context = new JaxrsRequestContext(requestContext, feature);
RequestDispatcher requestDispatcher = feature.getBoot().getRequestDispatcher();
requestDispatcher.process(context);
context.checkAbort();
} catch (WebApplicationException e) {
LOGGER.error("failed to dispatch request", e);
throw e;
} catch (Exception e) {
LOGGER.error("failed to dispatch request", e);
throw new WebApplicationException(e);
}
}
use of io.crnk.core.engine.dispatcher.RequestDispatcher in project crnk-framework by crnk-project.
the class CrnkServlet method service.
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext servletContext = getServletContext();
ServletRequestContext context = new ServletRequestContext(servletContext, request, response, boot.getWebPathPrefix(), defaultCharacterEncoding);
RequestDispatcher requestDispatcher = boot.getRequestDispatcher();
requestDispatcher.process(context);
if (!context.checkAbort()) {
HttpRequestContextBaseAdapter requestContext = new HttpRequestContextBaseAdapter(context);
boolean jsonApiRequest = JsonApiRequestProcessor.isJsonApiRequest(requestContext, acceptPlainJson);
response.setStatus(jsonApiRequest ? HttpStatus.NOT_FOUND_404 : HttpStatus.UNSUPPORTED_MEDIA_TYPE_415);
}
}
use of io.crnk.core.engine.dispatcher.RequestDispatcher in project crnk-framework by crnk-project.
the class HttpRequestProcessorImplTest method onGivenPathAndRequestTypeControllerShouldHandleRequest.
@Test
public void onGivenPathAndRequestTypeControllerShouldHandleRequest() throws Exception {
// GIVEN
String path = "/tasks/";
String requestType = "GET";
ControllerRegistry controllerRegistry = new ControllerRegistry(null);
CollectionGet controller = mock(CollectionGet.class);
controllerRegistry.addController(controller);
QuerySpecAdapterBuilder queryAdapterBuilder = new QuerySpecAdapterBuilder(new DefaultQuerySpecDeserializer(), moduleRegistry);
RequestDispatcher sut = new HttpRequestProcessorImpl(moduleRegistry, controllerRegistry, null, queryAdapterBuilder);
// WHEN
when(controller.isAcceptable(any(JsonPath.class), eq(requestType))).thenCallRealMethod();
Map<String, Set<String>> parameters = new HashMap<>();
sut.dispatchRequest(path, requestType, parameters, null, null);
// THEN
verify(controller, times(1)).handle(any(JsonPath.class), any(QueryAdapter.class), any(RepositoryMethodParameterProvider.class), any(Document.class));
}
use of io.crnk.core.engine.dispatcher.RequestDispatcher in project crnk-framework by crnk-project.
the class HttpRequestProcessorImplTest method checkProcess.
@Test
public void checkProcess() throws IOException {
HttpRequestContextBase requestContextBase = Mockito.mock(HttpRequestContextBase.class);
HttpRequestContextBaseAdapter requestContext = new HttpRequestContextBaseAdapter(requestContextBase);
Mockito.when(requestContextBase.getMethod()).thenReturn("GET");
Mockito.when(requestContextBase.getPath()).thenReturn("/tasks/");
Mockito.when(requestContextBase.getRequestHeader("Accept")).thenReturn("*");
ControllerRegistry controllerRegistry = new ControllerRegistry(null);
CollectionGet controller = mock(CollectionGet.class);
when(controller.isAcceptable(any(JsonPath.class), eq("GET"))).thenCallRealMethod();
controllerRegistry.addController(controller);
QuerySpecAdapterBuilder queryAdapterBuilder = new QuerySpecAdapterBuilder(new DefaultQuerySpecDeserializer(), moduleRegistry);
RequestDispatcher sut = new HttpRequestProcessorImpl(moduleRegistry, controllerRegistry, null, queryAdapterBuilder);
sut.process(requestContext);
verify(controller, times(1)).handle(any(JsonPath.class), any(QueryAdapter.class), any(RepositoryMethodParameterProvider.class), any(Document.class));
}
Aggregations