package at.gv.egiz.moazs.pipeline; import at.gv.egiz.moazs.TnvzClient; import at.gv.egiz.moazs.repository.DeliveryRepository; import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @Component @Profile("!cluster") public class SameThreadDeliveryPipeline implements DeliveryPipeline { private final DeliveryRepository repository; private final TnvzClient tnvzClient; public SameThreadDeliveryPipeline(@Autowired DeliveryRepository repository, TnvzClient tnvzClient) { this.repository = repository; this.tnvzClient = tnvzClient; } @Override public void processRequest(String appDeliveryId) { var request = repository.getDeliveryRequest(appDeliveryId).orElseThrow(); checkAddressability(request); //store response to repository } private void checkAddressability(DeliveryRequestType request) { if (request.getConfig().isPerformQueryPersonRequest()) { if (!tnvzClient.queryPerson(request.getReceiver())) { throw new RuntimeException("Receiver is not addressable."); } } } }