
com.progressoft.brix.domino.api.server.request.DefaultRequestExecutor Maven / Gradle / Ivy
The newest version!
package com.progressoft.brix.domino.api.server.request;
import com.progressoft.brix.domino.api.server.context.ExecutionContext;
import com.progressoft.brix.domino.api.server.entrypoint.ServerEntryPointContext;
import com.progressoft.brix.domino.api.server.handler.HandlersRepository;
import com.progressoft.brix.domino.api.server.handler.RequestHandler;
import com.progressoft.brix.domino.api.server.interceptor.GlobalRequestInterceptor;
import com.progressoft.brix.domino.api.server.interceptor.InterceptorsRepository;
import com.progressoft.brix.domino.api.server.interceptor.RequestInterceptor;
import java.util.Collection;
public class DefaultRequestExecutor implements RequestExecutor {
private final HandlersRepository handlersRepository;
private final InterceptorsRepository interceptorsRepository;
public DefaultRequestExecutor(HandlersRepository handlersRepository,
InterceptorsRepository interceptorsRepository) {
this.handlersRepository = handlersRepository;
this.interceptorsRepository = interceptorsRepository;
}
@Override
public void executeRequest(ExecutionContext executionContext, ServerEntryPointContext context) {
RequestHandler handler = handlersRepository.findHandler(executionContext.getRequestPath());
callInterceptors(handler, executionContext, context);
handler.handleRequest(executionContext);
}
private void callInterceptors(RequestHandler handler, RequestContext requestContext, ServerEntryPointContext context) {
getInterceptors(handler, context).forEach(i -> i.intercept(requestContext, context));
getGlobalInterceptors(context).forEach(i -> i.intercept(requestContext, context));
}
private Collection getInterceptors(RequestHandler handler, ServerEntryPointContext context) {
return interceptorsRepository.findInterceptors(handler.getClass().getCanonicalName(), context.getClass().getCanonicalName());
}
private Collection getGlobalInterceptors(ServerEntryPointContext context) {
return interceptorsRepository.findGlobalInterceptors(context.getClass().getCanonicalName());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy