SWS-706 - Jaxp13XPathTemplate should support StreamSources with only a systemId if it's a valid URL
This commit is contained in:
@@ -187,6 +187,17 @@ public abstract class AbstractXomPayloadEndpoint extends TransformerObjectSuppor
|
||||
throw new XomParsingException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
public void source(String systemId) throws Exception {
|
||||
try {
|
||||
Builder builder = new Builder();
|
||||
Document document = builder.build(systemId);
|
||||
element = document.getRootElement();
|
||||
}
|
||||
catch (ParsingException ex) {
|
||||
throw new XomParsingException(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class XomParsingException extends NestedRuntimeException {
|
||||
|
||||
@@ -21,6 +21,7 @@ import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.Reader;
|
||||
import java.io.Writer;
|
||||
import java.net.URL;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
import javax.xml.bind.JAXBContext;
|
||||
@@ -38,6 +39,7 @@ import javax.xml.stream.XMLStreamWriter;
|
||||
import javax.xml.transform.Result;
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.sax.SAXSource;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
@@ -227,6 +229,10 @@ public abstract class AbstractJaxb2PayloadMethodProcessor extends AbstractPayloa
|
||||
public void streamSource(Reader reader) throws IOException, JAXBException {
|
||||
result = unmarshaller.unmarshal(reader);
|
||||
}
|
||||
|
||||
public void source(String systemId) throws Exception {
|
||||
result = unmarshaller.unmarshal(new URL(systemId));
|
||||
}
|
||||
}
|
||||
|
||||
private class JaxbElementSourceCallback<T> implements TraxUtils.SourceCallback {
|
||||
@@ -265,6 +271,10 @@ public abstract class AbstractJaxb2PayloadMethodProcessor extends AbstractPayloa
|
||||
public void streamSource(Reader reader) throws IOException, JAXBException {
|
||||
result = unmarshaller.unmarshal(new StreamSource(reader), declaredType);
|
||||
}
|
||||
|
||||
public void source(String systemId) throws Exception {
|
||||
result = unmarshaller.unmarshal(new StreamSource(systemId), declaredType);
|
||||
}
|
||||
}
|
||||
|
||||
private class Jaxb2ResultCallback implements TraxUtils.ResultCallback {
|
||||
@@ -301,6 +311,10 @@ public abstract class AbstractJaxb2PayloadMethodProcessor extends AbstractPayloa
|
||||
public void streamResult(Writer writer) throws JAXBException {
|
||||
marshaller.marshal(jaxbElement, writer);
|
||||
}
|
||||
|
||||
public void result(String systemId) throws Exception {
|
||||
marshaller.marshal(jaxbElement, new StreamResult(systemId));
|
||||
}
|
||||
}
|
||||
|
||||
private class JaxbStreamingPayload implements StreamingPayload {
|
||||
|
||||
@@ -143,6 +143,10 @@ public abstract class PayloadRootUtils {
|
||||
public void streamSource(Reader reader) throws Exception {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
public void source(String systemId) throws Exception {
|
||||
// Do nothing
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user