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