diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/CachingStroapPayload.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/CachingStroapPayload.java index 6f57959c..04a85a1a 100644 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/CachingStroapPayload.java +++ b/sandbox/src/main/java/org/springframework/ws/soap/stroap/CachingStroapPayload.java @@ -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); diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/FaultStroapPayload.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/FaultStroapPayload.java index a1ade806..03b61975 100644 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/FaultStroapPayload.java +++ b/sandbox/src/main/java/org/springframework/ws/soap/stroap/FaultStroapPayload.java @@ -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); diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/NonCachingStroapPayload.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/NonCachingStroapPayload.java index a141f477..a95704e8 100644 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/NonCachingStroapPayload.java +++ b/sandbox/src/main/java/org/springframework/ws/soap/stroap/NonCachingStroapPayload.java @@ -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(); diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StreamingStroapPayload.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StreamingStroapPayload.java index 5efddeb3..fb3036cf 100644 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StreamingStroapPayload.java +++ b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StreamingStroapPayload.java @@ -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 { diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapBody.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapBody.java index f7293fa6..c83072f0 100644 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapBody.java +++ b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapBody.java @@ -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(); + } } diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapMessage.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapMessage.java index d8193994..eaedc378 100644 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapMessage.java +++ b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapMessage.java @@ -55,7 +55,7 @@ public class StroapMessage extends AbstractSoapMessage implements StreamingWebSe private final MultiValueMap mimeHeaders = new LinkedMultiValueMap(); - 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; diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapPayload.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapPayload.java index 11299300..765ddaf4 100644 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapPayload.java +++ b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapPayload.java @@ -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 {