code: public Response dispatchRequest(JsonPath jsonPath, String method, Map<String, Set<String>> parameters,
  			RepositoryMethodParameterProvider parameterProvider,
  			Document requestBody) {
  
  		try {
  			BaseController controller = controllerRegistry.getController(jsonPath, method);
  
  			ResourceInformation resourceInformation = getRequestedResource(jsonPath);
  			QueryAdapter queryAdapter = queryAdapterBuilder.build(resourceInformation, parameters);
  
  			DefaultFilterRequestContext context = new DefaultFilterRequestContext(jsonPath, queryAdapter, parameterProvider,
  					requestBody, method);
  			DefaultFilterChain chain = new DefaultFilterChain(controller);
  			return chain.doFilter(context);
  		} catch (Exception e) {
  			Optional<JsonApiExceptionMapper> exceptionMapper = exceptionMapperRegistry.findMapperFor(e.getClass());
  			if (exceptionMapper.isPresent()) {
  				//noinspection unchecked
  				return exceptionMapper.get().toErrorResponse(e).toResponse();
  			}else {
  				logger.error("failed to process request", e);
  				throw e;
  			}
  		}
  	}
docs: Dispatch the request from a client
  
  @param jsonPath          built {@link JsonPath} instance which represents the URI sent in the request
  @param method       type of the request e.g. POST, GET, PATCH
  @param parameterProvider repository method parameter provider
  @param requestBody       deserialized body of the client request
  @return the response form the Katharsis