Stroap tweaks

This commit is contained in:
Arjen Poutsma
2010-09-10 12:27:46 +00:00
parent 3a132cc6c9
commit 9e2a646aed
7 changed files with 60 additions and 1 deletions

View File

@@ -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);

View File

@@ -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);

View File

@@ -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();

View File

@@ -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 {

View File

@@ -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();
}
}

View File

@@ -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;

View File

@@ -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 {