class AuthorisationProcessor {

    AuthorisationProcessorService getProcessorService(AuthorisationProcessorRequest request) {
        if (request.getServiceType() == ServiceType.AIS) {
            return applicationContext.getBean(AisAuthorisationProcessorServiceImpl.class);
        } else if (request.getServiceType() == ServiceType.PIS &&
                       request.getAuthorisation().getAuthorisationType() == AuthorisationType.PIS_CREATION) {
            return applicationContext.getBean(PisAuthorisationProcessorServiceImpl.class);
        } else if (request.getServiceType() == ServiceType.PIS &&
                       request.getAuthorisation().getAuthorisationType() == AuthorisationType.PIS_CANCELLATION) {
            return applicationContext.getBean(PisCancellationAuthorisationProcessorServiceImpl.class);
        } else if (request.getServiceType() == ServiceType.PIIS) {
            return applicationContext.getBean(PiisAuthorisationProcessorServiceImpl.class);
        }
        throw new IllegalArgumentException("Authorisation processor service is unknown: " + request);
    }

    public  AuthorisationProcessor(ApplicationContext applicationContext);

}