diff --git a/src/main/java/ru/nbch/credit_tracker/facade/SignalFacade.java b/src/main/java/ru/nbch/credit_tracker/facade/SignalFacade.java index f060aea..547880b 100644 --- a/src/main/java/ru/nbch/credit_tracker/facade/SignalFacade.java +++ b/src/main/java/ru/nbch/credit_tracker/facade/SignalFacade.java @@ -2,7 +2,6 @@ package ru.nbch.credit_tracker.facade; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.core.io.PathResource; import org.springframework.core.io.Resource; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; @@ -10,6 +9,7 @@ import org.springframework.web.multipart.MultipartFile; import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; import ru.nbch.credit_tracker.entities.monitoring_request.MonitoringRequest; import ru.nbch.credit_tracker.entities.monitoring_request.Subject; +import ru.nbch.credit_tracker.entities.response.success.MonitoringResponse; import ru.nbch.credit_tracker.entities.signal_package.Signals; import ru.nbch.credit_tracker.enums.SignalError; import ru.nbch.credit_tracker.enums.Status; @@ -18,6 +18,7 @@ import ru.nbch.credit_tracker.service.indic.PhoneService; import ru.nbch.credit_tracker.service.scoring.AuthorizationService; import ru.nbch.credit_tracker.service.signal.SignalRestService; import ru.nbch.credit_tracker.service.xml.FailureAnswerGenerator; +import ru.nbch.credit_tracker.service.xml.SuccessAnswerGenerator; import ru.nbch.credit_tracker.service.xml.jaxb.IXmlProcessor; import ru.nbch.credit_tracker.service.xml.jaxb.XmlUtilService; import ru.nbch.credit_tracker.utils.ValidationUtil; @@ -39,6 +40,7 @@ public class SignalFacade { private final SignalService signalService; private final SignalRestService signalRestService; private final FailureAnswerGenerator failureAnswerGenerator; + private final SuccessAnswerGenerator successAnswerGenerator; private final XmlUtilService xmlUtilService; private final ExecutorService executor; @@ -49,6 +51,7 @@ public class SignalFacade { SignalService signalService, SignalRestService signalRestService, FailureAnswerGenerator failureAnswerGenerator, + SuccessAnswerGenerator successAnswerGenerator, XmlUtilService xmlUtilService, @Qualifier("executorService") ExecutorService executor) { this.config = config; @@ -56,6 +59,7 @@ public class SignalFacade { this.signalService = signalService; this.signalRestService = signalRestService; this.failureAnswerGenerator = failureAnswerGenerator; + this.successAnswerGenerator = successAnswerGenerator; this.xmlUtilService = xmlUtilService; this.executor = executor; } @@ -156,7 +160,7 @@ public class SignalFacade { // в отдельном потоке запускаем поиск фидов и расчет флагов просрочек registerFidsAndDebts(packageId); - return ResponseEntity.ok().body(new PathResource("D:\\folder_name\\legal.xml")); // TODO generate success response + return ResponseEntity.ok().body(successAnswerGenerator.generateSuccessAnswer(MonitoringResponse.class)); } private ResponseEntity validateMonitoringRequest(MonitoringRequest request) { diff --git a/src/main/java/ru/nbch/credit_tracker/service/xml/FailureAnswerGenerator.java b/src/main/java/ru/nbch/credit_tracker/service/xml/FailureAnswerGenerator.java index e123a8d..68c6f98 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/xml/FailureAnswerGenerator.java +++ b/src/main/java/ru/nbch/credit_tracker/service/xml/FailureAnswerGenerator.java @@ -25,6 +25,7 @@ public class FailureAnswerGenerator { return generateFailureAnswer(error, null); } + // TODO extend with common errorResponse class public Resource generateFailureAnswer(SignalError error, String tag) { try { IXmlProcessor xmlProcessor = xmlUtilService.createJaxbProcessor(); diff --git a/src/main/java/ru/nbch/credit_tracker/service/xml/SuccessAnswerGenerator.java b/src/main/java/ru/nbch/credit_tracker/service/xml/SuccessAnswerGenerator.java new file mode 100644 index 0000000..9c2d6ad --- /dev/null +++ b/src/main/java/ru/nbch/credit_tracker/service/xml/SuccessAnswerGenerator.java @@ -0,0 +1,41 @@ +package ru.nbch.credit_tracker.service.xml; + +import jakarta.xml.bind.JAXBException; +import lombok.extern.slf4j.Slf4j; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.core.io.Resource; +import org.springframework.stereotype.Service; +import ru.nbch.credit_tracker.entities.response.success.MonitoringResponse; +import ru.nbch.credit_tracker.service.xml.jaxb.IXmlProcessor; +import ru.nbch.credit_tracker.service.xml.jaxb.XmlUtilService; + +import java.nio.charset.StandardCharsets; + +@Slf4j +@Service +public class SuccessAnswerGenerator { + + private final XmlUtilService xmlUtilService; + + public SuccessAnswerGenerator(XmlUtilService xmlUtilService) { + this.xmlUtilService = xmlUtilService; + } + + // TODO extend with common successResponse class + public Resource generateSuccessAnswer(Class clazz) { + try { + IXmlProcessor xmlProcessor = xmlUtilService.createJaxbProcessor(); + String errorMessage = xmlProcessor.asString(createSuccessMessage(), false, StandardCharsets.UTF_8.name()); + byte[] xmlBytes = errorMessage.getBytes(StandardCharsets.UTF_8); + return new ByteArrayResource(xmlBytes); + } catch (JAXBException e) { + log.error(e.getMessage(), e); + } + return null; + } + + private MonitoringResponse createSuccessMessage() { + return new MonitoringResponse(); + } + +} diff --git a/src/main/java/ru/nbch/credit_tracker/service/xml/jaxb/XmlUtilService.java b/src/main/java/ru/nbch/credit_tracker/service/xml/jaxb/XmlUtilService.java index 6ad5582..ce16238 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/xml/jaxb/XmlUtilService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/xml/jaxb/XmlUtilService.java @@ -5,6 +5,7 @@ import org.springframework.stereotype.Service; import org.xml.sax.SAXException; import ru.nbch.credit_tracker.entities.monitoring_request.MonitoringRequest; import ru.nbch.credit_tracker.entities.response.errors.MonitoringError; +import ru.nbch.credit_tracker.entities.response.success.MonitoringResponse; import ru.nbch.credit_tracker.entities.signal_package.Signals; import javax.xml.XMLConstants; @@ -31,7 +32,8 @@ public class XmlUtilService { MonitoringRequest.class, // marshalling classes Signals.class, - MonitoringError.class); + MonitoringError.class, + MonitoringResponse.class); } public void validateXMLByXSD(InputStream xmlStream, String xsdPath) throws IOException, XMLStreamException, SAXException {