Stroap tweaks
This commit is contained in:
@@ -18,6 +18,7 @@ package org.springframework.ws.soap.stroap;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.stream.XMLEventReader;
|
||||
import javax.xml.stream.XMLEventWriter;
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
@@ -42,6 +43,17 @@ class CachingStroapPayload extends StroapPayload {
|
||||
eventWriter.add(eventReader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public QName getName() {
|
||||
if (!events.isEmpty()) {
|
||||
XMLEvent event = events.get(0);
|
||||
if (event.isStartElement()) {
|
||||
return event.asStartElement().getName();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public XMLEventReader getEventReader() {
|
||||
return new ListBasedXMLEventReader(events);
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.springframework.ws.soap.stroap;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.stream.XMLEventReader;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
@@ -37,6 +38,11 @@ class FaultStroapPayload extends StroapPayload {
|
||||
return fault;
|
||||
}
|
||||
|
||||
@Override
|
||||
public QName getName() {
|
||||
return fault.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public XMLEventReader getEventReader() {
|
||||
return fault.getEventReader(false);
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package org.springframework.ws.soap.stroap;
|
||||
|
||||
import java.util.NoSuchElementException;
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.stream.XMLEventReader;
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
import javax.xml.stream.events.XMLEvent;
|
||||
@@ -38,6 +39,21 @@ class NonCachingStroapPayload extends StroapPayload {
|
||||
this.eventReader = eventReader;
|
||||
}
|
||||
|
||||
@Override
|
||||
public QName getName() {
|
||||
try {
|
||||
XMLEvent event = eventReader.peek();
|
||||
if (event != null && event.isStartElement()) {
|
||||
return event.asStartElement().getName();
|
||||
}
|
||||
|
||||
}
|
||||
catch (XMLStreamException ex) {
|
||||
// ignore
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public XMLEventReader getEventReader() {
|
||||
return new NonCachingXMLEventReader();
|
||||
|
||||
@@ -18,6 +18,7 @@ package org.springframework.ws.soap.stroap;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.stream.XMLEventReader;
|
||||
import javax.xml.stream.XMLEventWriter;
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
@@ -44,6 +45,11 @@ class StreamingStroapPayload extends StroapPayload {
|
||||
this.messageFactory = messageFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public QName getName() {
|
||||
return payload.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public XMLEventReader getEventReader() {
|
||||
try {
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.springframework.ws.soap.stroap;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.stream.XMLEventReader;
|
||||
import javax.xml.stream.XMLEventWriter;
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
@@ -119,4 +120,8 @@ abstract class StroapBody extends StroapElement implements SoapBody {
|
||||
public void setStreamingPayload(StreamingPayload payload) {
|
||||
this.payload = new StreamingStroapPayload(payload, getMessageFactory());
|
||||
}
|
||||
|
||||
public QName getPayloadName() {
|
||||
return payload.getName();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ public class StroapMessage extends AbstractSoapMessage implements StreamingWebSe
|
||||
|
||||
private final MultiValueMap<String, String> mimeHeaders = new LinkedMultiValueMap<String, String>();
|
||||
|
||||
private StroapEnvelope envelope;
|
||||
private final StroapEnvelope envelope;
|
||||
|
||||
private final StroapMessageFactory messageFactory;
|
||||
|
||||
@@ -174,6 +174,17 @@ public class StroapMessage extends AbstractSoapMessage implements StreamingWebSe
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder("StroapMessage");
|
||||
StroapBody body = (StroapBody) envelope.getBody();
|
||||
if (body != null) {
|
||||
builder.append(' ');
|
||||
builder.append(body.getPayloadName());
|
||||
}
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
private static class NoStartEndDocumentWriter extends AbstractXMLEventWriter {
|
||||
|
||||
private final XMLEventWriter delegate;
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.springframework.ws.soap.stroap;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.stream.XMLEventReader;
|
||||
import javax.xml.stream.XMLEventWriter;
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
@@ -25,6 +26,8 @@ import javax.xml.stream.XMLStreamException;
|
||||
*/
|
||||
abstract class StroapPayload {
|
||||
|
||||
public abstract QName getName();
|
||||
|
||||
public abstract XMLEventReader getEventReader();
|
||||
|
||||
public void writeTo(XMLEventWriter eventWriter) throws XMLStreamException {
|
||||
|
||||
Reference in New Issue
Block a user