Added SuccessAnswerGenerator

This commit is contained in:
Mikhail Trofimov 2025-06-16 15:54:36 +03:00
parent 933e91365d
commit c0ae69df4f
4 changed files with 51 additions and 3 deletions

View file

@ -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<Resource> validateMonitoringRequest(MonitoringRequest request) {

View file

@ -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();

View file

@ -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();
}
}

View file

@ -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 {