Get rid of XmlUtilService; Created beans of IXmlProcessor and StaxXmlProcessor
This commit is contained in:
parent
b4c4475398
commit
3358a8ee21
4 changed files with 31 additions and 65 deletions
|
|
@ -1,8 +1,8 @@
|
|||
package ru.nbch.credit_tracker.service.xml.jaxb;
|
||||
package ru.nbch.credit_tracker.config.xml;
|
||||
|
||||
import jakarta.xml.bind.JAXBException;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import ru.nbch.credit_tracker.entities.request.monitoring_request.MonitoringRequest;
|
||||
import ru.nbch.credit_tracker.entities.response.errors.MonitoringError;
|
||||
import ru.nbch.credit_tracker.entities.response.monitoring_signal_response.MonitoringSignalResponse;
|
||||
|
|
@ -10,33 +10,22 @@ import ru.nbch.credit_tracker.entities.response.online_download.OnlineDownloadRe
|
|||
import ru.nbch.credit_tracker.entities.response.online_report.SgnlOnlineReport;
|
||||
import ru.nbch.credit_tracker.entities.response.success.MonitoringResponse;
|
||||
import ru.nbch.credit_tracker.entities.signal_package.Signals;
|
||||
import ru.nbch.credit_tracker.service.xml.jaxb.IXmlProcessor;
|
||||
import ru.nbch.credit_tracker.service.xml.jaxb.XmlProcessorImplAnyClasses;
|
||||
import ru.nbch.credit_tracker.service.xml.stax.SgnlReportStatusStaxReader;
|
||||
import ru.nbch.credit_tracker.service.xml.stax.StaxReader;
|
||||
import ru.nbch.credit_tracker.service.xml.stax.StaxXmlProcessor;
|
||||
import ru.nbch.credit_tracker.service.xml.stax.XmlProcessorStaxImpl;
|
||||
|
||||
import javax.xml.XMLConstants;
|
||||
import javax.xml.stream.XMLInputFactory;
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
import javax.xml.stream.XMLStreamReader;
|
||||
import javax.xml.transform.stax.StAXSource;
|
||||
import javax.xml.validation.Schema;
|
||||
import javax.xml.validation.SchemaFactory;
|
||||
import javax.xml.validation.Validator;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI;
|
||||
@Configuration
|
||||
public class XmlConfig {
|
||||
|
||||
@Service
|
||||
public class XmlUtilService {
|
||||
|
||||
//сделать бином
|
||||
public IXmlProcessor createJaxbProcessor() throws JAXBException {
|
||||
@Bean
|
||||
public IXmlProcessor xmlProcessor() throws JAXBException {
|
||||
return new XmlProcessorImplAnyClasses(Charset.forName("windows-1251"),
|
||||
// unmarshalling classes
|
||||
MonitoringRequest.class,
|
||||
|
|
@ -49,24 +38,10 @@ public class XmlUtilService {
|
|||
MonitoringSignalResponse.class);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public StaxXmlProcessor staxXmlProcessor() {
|
||||
List<StaxReader<?>> staxReader = new ArrayList<>();
|
||||
staxReader.add(new SgnlReportStatusStaxReader());
|
||||
return new XmlProcessorStaxImpl(staxReader);
|
||||
}
|
||||
|
||||
public void validateXMLByXSD(InputStream xmlStream, String xsdPath) throws IOException, XMLStreamException, SAXException {
|
||||
SchemaFactory sf = SchemaFactory.newInstance(W3C_XML_SCHEMA_NS_URI);
|
||||
Schema schema = sf.newSchema(new File(xsdPath));
|
||||
|
||||
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
|
||||
xmlInputFactory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);
|
||||
xmlInputFactory.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, "");
|
||||
xmlInputFactory.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
|
||||
|
||||
Validator validator = schema.newValidator();
|
||||
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(xmlStream);
|
||||
validator.validate(new StAXSource(xmlStreamReader));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -24,7 +24,6 @@ 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.jaxb.IXmlProcessor;
|
||||
import ru.nbch.credit_tracker.service.xml.jaxb.XmlUtilService;
|
||||
import ru.nbch.credit_tracker.utils.CTUtil;
|
||||
import ru.nbch.credit_tracker.utils.ValidationUtil;
|
||||
import ru.nbch.credit_tracker.utils.ZipUtils;
|
||||
|
|
@ -49,7 +48,7 @@ public class SignalFacade {
|
|||
private final AuthorizationService authorizationService;
|
||||
private final SignalService signalService;
|
||||
private final SignalRestService signalRestService;
|
||||
private final XmlUtilService xmlUtilService;
|
||||
private final IXmlProcessor xmlProcessor;
|
||||
|
||||
private final ExecutorService executor;
|
||||
|
||||
|
|
@ -58,13 +57,13 @@ public class SignalFacade {
|
|||
AuthorizationService authorizationService,
|
||||
SignalService signalService,
|
||||
SignalRestService signalRestService,
|
||||
XmlUtilService xmlUtilService,
|
||||
IXmlProcessor xmlProcessor,
|
||||
@Qualifier("executorService") ExecutorService executor) {
|
||||
this.config = config;
|
||||
this.authorizationService = authorizationService;
|
||||
this.signalService = signalService;
|
||||
this.signalRestService = signalRestService;
|
||||
this.xmlUtilService = xmlUtilService;
|
||||
this.xmlProcessor = xmlProcessor;
|
||||
this.executor = executor;
|
||||
}
|
||||
|
||||
|
|
@ -92,8 +91,7 @@ public class SignalFacade {
|
|||
zipInputStream = new ZipInputStream(file.getInputStream());
|
||||
zipInputStream.getNextEntry();
|
||||
|
||||
IXmlProcessor processor = xmlUtilService.createJaxbProcessor();
|
||||
monitoringRequest = processor.read(zipInputStream, MonitoringRequest.class);
|
||||
monitoringRequest = xmlProcessor.read(zipInputStream, MonitoringRequest.class);
|
||||
} catch (Exception e) {
|
||||
if (e instanceof SignalClientException) {
|
||||
throw (SignalClientException) e;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ import ru.nbch.credit_tracker.entities.response.online_report.Report;
|
|||
import ru.nbch.credit_tracker.entities.response.online_report.SgnlOnlineReport;
|
||||
import ru.nbch.credit_tracker.service.signal.SignalRestService;
|
||||
import ru.nbch.credit_tracker.service.xml.jaxb.IXmlProcessor;
|
||||
import ru.nbch.credit_tracker.service.xml.jaxb.XmlUtilService;
|
||||
import ru.nbch.credit_tracker.utils.CTUtil;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
|
|
@ -36,16 +35,16 @@ public class MonitoringService {
|
|||
|
||||
private final SignalRestService signalRestService;
|
||||
private final SignalService signalService;
|
||||
private final XmlUtilService xmlUtilService;
|
||||
private final IXmlProcessor xmlProcessor;
|
||||
private final CreditTrackerSettings config;
|
||||
|
||||
public MonitoringService(SignalRestService signalRestService,
|
||||
SignalService signalService,
|
||||
XmlUtilService xmlUtilService,
|
||||
IXmlProcessor xmlProcessor,
|
||||
CreditTrackerSettings config) {
|
||||
this.signalRestService = signalRestService;
|
||||
this.signalService = signalService;
|
||||
this.xmlUtilService = xmlUtilService;
|
||||
this.xmlProcessor = xmlProcessor;
|
||||
this.config = config;
|
||||
}
|
||||
|
||||
|
|
@ -160,8 +159,7 @@ public class MonitoringService {
|
|||
folder.mkdir();
|
||||
}
|
||||
|
||||
IXmlProcessor processor = xmlUtilService.createJaxbProcessor();
|
||||
String xmlStr = processor.asString(response, true);
|
||||
String xmlStr = xmlProcessor.asString(response, true);
|
||||
|
||||
byte[] xmlBytes = xmlStr.getBytes(Charset.forName("windows-1251"));
|
||||
try (FileOutputStream fos = new FileOutputStream(filePath + fileName + ".zip");
|
||||
|
|
@ -206,8 +204,7 @@ public class MonitoringService {
|
|||
OnlineDownloadReport report;
|
||||
try (GZIPInputStream zipInputStream = new GZIPInputStream(new ByteArrayInputStream(archive))) {
|
||||
|
||||
IXmlProcessor processor = xmlUtilService.createJaxbProcessor();
|
||||
report = processor.read(zipInputStream, OnlineDownloadReport.class);
|
||||
report = xmlProcessor.read(zipInputStream, OnlineDownloadReport.class);
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ import ru.nbch.credit_tracker.entities.response.external_errors.SgnlReport;
|
|||
import ru.nbch.credit_tracker.entities.response.online_report.SgnlOnlineReport;
|
||||
import ru.nbch.credit_tracker.entities.signal_package.Signals;
|
||||
import ru.nbch.credit_tracker.service.xml.jaxb.IXmlProcessor;
|
||||
import ru.nbch.credit_tracker.service.xml.jaxb.XmlUtilService;
|
||||
import ru.nbch.credit_tracker.service.xml.stax.StaxXmlProcessor;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
|
|
@ -35,14 +34,17 @@ public class SignalRestService {
|
|||
private static String DOWNLOAD_REPORT_URI = "onlinedownload";
|
||||
|
||||
private final RestTemplate restTemplate;
|
||||
private final XmlUtilService xmlUtilService;
|
||||
private final IXmlProcessor xmlProcessor;
|
||||
private final StaxXmlProcessor staxProcessor;
|
||||
private final String authToken;
|
||||
|
||||
public SignalRestService(@Qualifier(value = "restTemplate") RestTemplate restTemplate,
|
||||
XmlUtilService xmlUtilService,
|
||||
IXmlProcessor xmlProcessor,
|
||||
StaxXmlProcessor staxProcessor,
|
||||
CreditTrackerSettings config) throws Exception {
|
||||
this.restTemplate = restTemplate;
|
||||
this.xmlUtilService = xmlUtilService;
|
||||
this.xmlProcessor = xmlProcessor;
|
||||
this.staxProcessor = staxProcessor;
|
||||
this.authToken = buildToken(config.getSignalsToken(), config.getSignalsuser());
|
||||
}
|
||||
|
||||
|
|
@ -64,8 +66,7 @@ public class SignalRestService {
|
|||
// good response
|
||||
return true;
|
||||
} else if (response.getStatusCode().value() == 200 && response.getBody() != null) {
|
||||
StaxXmlProcessor staxXmlProcessor = xmlUtilService.staxXmlProcessor();
|
||||
SgnlReport error = staxXmlProcessor.read(response.getBody(), SgnlReport.class);
|
||||
SgnlReport error = staxProcessor.read(response.getBody(), SgnlReport.class);
|
||||
if (error.getError().getDescription() != null) {
|
||||
log.error("Ошибка при постановке пакета на мониторинг в официальный сервис сигналов: {}", error.getError().getDescription());
|
||||
} else {
|
||||
|
|
@ -92,8 +93,7 @@ public class SignalRestService {
|
|||
);
|
||||
String answer = response.getBody();
|
||||
|
||||
StaxXmlProcessor staxXmlProcessor = xmlUtilService.staxXmlProcessor();
|
||||
SgnlReport error = staxXmlProcessor.read(answer, SgnlReport.class);
|
||||
SgnlReport error = staxProcessor.read(answer, SgnlReport.class);
|
||||
if (error.getError().getDescription() != null) {
|
||||
log.error("Ошибка при удалении пакета из сервиса НБКИ. packCode={}. Описание: {}", packCode, error.getError().getDescription());
|
||||
}
|
||||
|
|
@ -116,15 +116,13 @@ public class SignalRestService {
|
|||
|
||||
String answer = response.getBody();
|
||||
|
||||
StaxXmlProcessor staxXmlProcessor = xmlUtilService.staxXmlProcessor();
|
||||
SgnlReport error = staxXmlProcessor.read(answer, SgnlReport.class);
|
||||
SgnlReport error = staxProcessor.read(answer, SgnlReport.class);
|
||||
if (error.getError().getDescription() != null) {
|
||||
log.error("Ошибка при получении пакета из сервиса НБКИ. packCode={}. Описание: {}", packCode, error.getError().getDescription());
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
IXmlProcessor processor = xmlUtilService.createJaxbProcessor();
|
||||
return processor.read(answer, SgnlOnlineReport.class);
|
||||
return xmlProcessor.read(answer, SgnlOnlineReport.class);
|
||||
} catch (Exception e) {
|
||||
log.error("Ошибка при получении пакета из сервиса НБКИ. Код ошибки: {} packCode={}", response.getStatusCode().value(), packCode);
|
||||
return null;
|
||||
|
|
@ -148,8 +146,7 @@ public class SignalRestService {
|
|||
|
||||
byte[] answer = response.getBody();
|
||||
if (isXmlError(response.getBody())) {
|
||||
StaxXmlProcessor staxXmlProcessor = xmlUtilService.staxXmlProcessor();
|
||||
SgnlReport error = staxXmlProcessor.read(answer, SgnlReport.class);
|
||||
SgnlReport error = staxProcessor.read(answer, SgnlReport.class);
|
||||
if (error.getError().getDescription() != null) {
|
||||
log.error("Ошибка при скачивание отчета. fNameReport={}. Описание: {}", reportName, error.getError().getDescription());
|
||||
return null;
|
||||
|
|
@ -175,8 +172,7 @@ public class SignalRestService {
|
|||
}
|
||||
|
||||
private Resource compressFile(Signals signals) throws Exception {
|
||||
IXmlProcessor processor = xmlUtilService.createJaxbProcessor();
|
||||
String requestData = processor.asString(signals, false);
|
||||
String requestData = xmlProcessor.asString(signals, false);
|
||||
|
||||
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
|
||||
try (GZIPOutputStream gzipStream = new GZIPOutputStream(byteStream)) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue