Added new method for stax reader to read from inputstream
This commit is contained in:
parent
41582e676d
commit
1815596a7b
5 changed files with 25 additions and 5 deletions
|
|
@ -97,7 +97,7 @@ public class SignalFacade {
|
||||||
zipInputStream = new ZipInputStream(file.getInputStream());
|
zipInputStream = new ZipInputStream(file.getInputStream());
|
||||||
zipInputStream.getNextEntry();
|
zipInputStream.getNextEntry();
|
||||||
|
|
||||||
monitoringRequest = staxXmlProcessor.read(zipInputStream.readAllBytes(), MonitoringRequest.class);
|
monitoringRequest = staxXmlProcessor.read(zipInputStream, MonitoringRequest.class);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
if (e.getCause() instanceof XMLStreamException) {
|
if (e.getCause() instanceof XMLStreamException) {
|
||||||
throw clientExcp(SignalError.ERROR_011, XmlErrorFormat.MonitoringError);
|
throw clientExcp(SignalError.ERROR_011, XmlErrorFormat.MonitoringError);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,9 @@
|
||||||
package ru.nbch.credit_tracker.service.xml.stax;
|
package ru.nbch.credit_tracker.service.xml.stax;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
public interface StaxXmlProcessor {
|
public interface StaxXmlProcessor {
|
||||||
<Z> Z read(String xml, Class<Z> clazz);
|
<Z> Z read(String xml, Class<Z> clazz);
|
||||||
<Z> Z read(byte[] xml, Class<Z> clazz);
|
<Z> Z read(byte[] xml, Class<Z> clazz);
|
||||||
|
<Z> Z read(InputStream inputStream, Class<Z> clazz);
|
||||||
}
|
}
|
||||||
|
|
@ -8,6 +8,7 @@ import javax.xml.stream.XMLInputFactory;
|
||||||
import javax.xml.stream.XMLStreamException;
|
import javax.xml.stream.XMLStreamException;
|
||||||
import javax.xml.stream.XMLStreamReader;
|
import javax.xml.stream.XMLStreamReader;
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
@ -66,4 +67,20 @@ public class XmlProcessorStaxImpl implements StaxXmlProcessor {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <Z> Z read(InputStream inputStream, Class<Z> clazz) {
|
||||||
|
try {
|
||||||
|
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(inputStream);
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
StaxReader<Z> staxProcessor = (StaxReader<Z>) staxReaders.get(clazz);
|
||||||
|
if (staxProcessor != null) {
|
||||||
|
return staxProcessor.read(xmlStreamReader);
|
||||||
|
}
|
||||||
|
throw new IllegalStateException("no stax reader registered for " + clazz);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error(ExceptionUtils.getStackTrace(e));
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ public class StaxTest {
|
||||||
void testInvalidXmlRequest() {
|
void testInvalidXmlRequest() {
|
||||||
Exception ex = null;
|
Exception ex = null;
|
||||||
try {
|
try {
|
||||||
staxXmlProcessor.read(getClass().getResourceAsStream("/monitoring_request/xml/invalid_xml_request.xml").readAllBytes(), MonitoringRequest.class);
|
staxXmlProcessor.read(getClass().getResourceAsStream("/monitoring_request/xml/invalid_xml_request.xml"), MonitoringRequest.class);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
ex = e;
|
ex = e;
|
||||||
}
|
}
|
||||||
|
|
@ -70,7 +70,7 @@ public class StaxTest {
|
||||||
void testEmptyXmlRequest() {
|
void testEmptyXmlRequest() {
|
||||||
Exception ex = null;
|
Exception ex = null;
|
||||||
try {
|
try {
|
||||||
staxXmlProcessor.read(getClass().getResourceAsStream("/monitoring_request/xml/empty_request.xml").readAllBytes(), MonitoringRequest.class);
|
staxXmlProcessor.read(getClass().getResourceAsStream("/monitoring_request/xml/empty_request.xml"), MonitoringRequest.class);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
ex = e;
|
ex = e;
|
||||||
}
|
}
|
||||||
|
|
@ -80,7 +80,7 @@ public class StaxTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testNonEpectedTag() throws IOException {
|
void testNonEpectedTag() throws IOException {
|
||||||
MonitoringRequest monitoringRequest = staxXmlProcessor.read(getClass().getResourceAsStream("/monitoring_request/xml/non_expected_tag_request.xml").readAllBytes(), MonitoringRequest.class);
|
MonitoringRequest monitoringRequest = staxXmlProcessor.read(getClass().getResourceAsStream("/monitoring_request/xml/non_expected_tag_request.xml"), MonitoringRequest.class);
|
||||||
Assertions.assertNull(monitoringRequest.getSubjects().getSubject().get(0).getId());
|
Assertions.assertNull(monitoringRequest.getSubjects().getSubject().get(0).getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -137,7 +137,7 @@ public class UtilTest {
|
||||||
try {
|
try {
|
||||||
zipInputStream = new ZipInputStream(getClass().getResourceAsStream(path));
|
zipInputStream = new ZipInputStream(getClass().getResourceAsStream(path));
|
||||||
zipInputStream.getNextEntry();
|
zipInputStream.getNextEntry();
|
||||||
monitoringRequest = staxXmlProcessor.read(zipInputStream.readAllBytes(), MonitoringRequest.class);
|
monitoringRequest = staxXmlProcessor.read(zipInputStream, MonitoringRequest.class);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
if (e.getCause() instanceof XMLStreamException) {
|
if (e.getCause() instanceof XMLStreamException) {
|
||||||
ex = clientExcp(SignalError.ERROR_011, XmlErrorFormat.MonitoringError);
|
ex = clientExcp(SignalError.ERROR_011, XmlErrorFormat.MonitoringError);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue