From 78f0715d86a055aed11138df5f66b0794e72326a Mon Sep 17 00:00:00 2001 From: Christof Rabensteiner Date: Wed, 3 Jul 2019 15:27:14 +0200 Subject: Refactor: Restructure Project - Move components that depend on the service contracts into scheme package. - Move cxf related components into util package. - Rename SameThread to SingleThreaded. --- src/main/java/at/gv/egiz/moazs/mzs/MzsService.java | 105 --------------------- 1 file changed, 105 deletions(-) delete mode 100644 src/main/java/at/gv/egiz/moazs/mzs/MzsService.java (limited to 'src/main/java/at/gv/egiz/moazs/mzs/MzsService.java') diff --git a/src/main/java/at/gv/egiz/moazs/mzs/MzsService.java b/src/main/java/at/gv/egiz/moazs/mzs/MzsService.java deleted file mode 100644 index f4ecfdb..0000000 --- a/src/main/java/at/gv/egiz/moazs/mzs/MzsService.java +++ /dev/null @@ -1,105 +0,0 @@ -package at.gv.egiz.moazs.mzs; - -import at.gv.egiz.moazs.pipeline.DeliveryPipeline; -import at.gv.egiz.moazs.preprocess.DeliveryRequestAugmenter; -import at.gv.egiz.moazs.repository.DeliveryRepository; -import at.gv.egiz.moazs.scheme.Msg2MzsConverter; -import at.gv.zustellung.app2mzs.xsd.App2MzsPortType; -import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType; -import at.gv.zustellung.app2mzs.xsd.DeliveryResponseType; -import at.gv.zustellung.msg.xsd.DeliveryRequestStatusType; -import org.apache.cxf.annotations.SchemaValidation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import javax.jws.WebParam; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -import static at.gv.egiz.moazs.MoaZSException.moaZSException; -import static at.gv.egiz.moazs.MoaZSException.moaZSExceptionBuilder; -import static at.gv.zustellung.app2mzs.xsd.PartialSuccessType.partialSuccessTypeBuilder; -import static java.util.concurrent.CompletableFuture.supplyAsync; - -//todo : validate Schema in both directions. -@Service -@SchemaValidation(type = SchemaValidation.SchemaValidationType.IN) -public class MzsService implements App2MzsPortType { - - private static final Logger logger = LoggerFactory.getLogger(MzsService.class); - - //TODO move timeout and namespaces to config - private static final int TIMEOUT_FOR_ANWSER = 10; - - private final DeliveryRepository repository; - private final DeliveryPipeline pipeline; - private final MzsClient appClient; - private final DeliveryRequestAugmenter augmenter; - private final Msg2MzsConverter converter; - - @Autowired - public MzsService(DeliveryRepository repository, DeliveryPipeline pipeline, MzsClient appClient, - DeliveryRequestAugmenter augmenter, Msg2MzsConverter converter) { - this.repository = repository; - this.pipeline = pipeline; - this.appClient = appClient; - this.augmenter = augmenter; - this.converter = converter; - } - - @Override - public DeliveryResponseType app2Mzs( - @WebParam(partName = "DeliveryRequest", - name = "DeliveryRequest") - DeliveryRequestType deliveryRequest) { - - var appDeliveryID = deliveryRequest.getMetaData().getAppDeliveryID(); - - var future = supplyAsync(() -> augmenter.augment(deliveryRequest)) - .thenApply(this::process) - .thenApply(status -> converter.convert(status, repository.getSignedDeliveryRequestStatus(appDeliveryID))); - - try { - return future.get(TIMEOUT_FOR_ANWSER, TimeUnit.SECONDS); - } catch (TimeoutException e) { - logger.info("Answer Timed Out", e); - - future.thenAccept(appClient::sendNotification); - return generatePartialSuccessResponse(appDeliveryID); - - } catch (Exception e) { - throw moaZSExceptionBuilder("An error occurred while processing DeliveryRequest " + - "with AppDeliveryID=%s.", appDeliveryID) - .withCause(e) - .build(); - } - - } - - private DeliveryRequestStatusType process(DeliveryRequestType deliveryRequest) { - - var appDeliveryID = deliveryRequest.getMetaData().getAppDeliveryID(); - logger.info("Receive request with appDeliveryID = {}.", appDeliveryID); - - repository.add(deliveryRequest); - pipeline.processRequest(appDeliveryID); - - return repository.getDeliveryRequestStatus(appDeliveryID) - .orElseThrow(() -> moaZSException("Could not get a response for AppDeliveryID=%s.", appDeliveryID)); - - } - - private DeliveryResponseType generatePartialSuccessResponse(String appDeliveryId) { - - var partial = partialSuccessTypeBuilder() - .withAppDeliveryID(appDeliveryId) - .build(); - - return DeliveryResponseType.deliveryResponseTypeBuilder() - .withPartialSuccess(partial) - .build(); - } - -} -- cgit v1.2.3