Added test for repetitive reads on a Axiom caching and non-caching payload.

This commit is contained in:
Arjen Poutsma
2009-05-18 14:27:25 +00:00
parent d2b9b02c3f
commit b682571958

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2006 the original author or authors.
* Copyright 2002-2009 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,8 +16,17 @@
package org.springframework.ws.soap.axiom;
import java.io.ByteArrayInputStream;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import org.springframework.ws.WebServiceMessage;
import org.springframework.ws.WebServiceMessageFactory;
import org.springframework.ws.soap.soap11.AbstractSoap11MessageFactoryTestCase;
import org.springframework.ws.transport.MockTransportInputStream;
import org.springframework.ws.transport.TransportInputStream;
import org.springframework.xml.transform.StringResult;
public class AxiomSoap11MessageFactoryTest extends AbstractSoap11MessageFactoryTestCase {
@@ -27,4 +36,45 @@ public class AxiomSoap11MessageFactoryTest extends AbstractSoap11MessageFactoryT
return factory;
}
public void testRepetitiveReadCaching() throws Exception {
AxiomSoapMessageFactory messageFactory = new AxiomSoapMessageFactory();
messageFactory.setPayloadCaching(true);
messageFactory.afterPropertiesSet();
String xml = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'><soapenv:Body>" +
"<root xmlns='http://springframework.org/spring-ws'><child /></root>" +
"</soapenv:Body></soapenv:Envelope>";
TransportInputStream tis = new MockTransportInputStream(new ByteArrayInputStream(xml.getBytes()));
WebServiceMessage message = messageFactory.createWebServiceMessage(tis);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
StringResult result = new StringResult();
transformer.transform(message.getPayloadSource(), result);
transformer.transform(message.getPayloadSource(), result);
}
public void testRepetitiveReadNoCaching() throws Exception {
AxiomSoapMessageFactory messageFactory = new AxiomSoapMessageFactory();
messageFactory.setPayloadCaching(false);
messageFactory.afterPropertiesSet();
String xml = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'><soapenv:Body>" +
"<root xmlns='http://springframework.org/spring-ws'><child /></root>" +
"</soapenv:Body></soapenv:Envelope>";
TransportInputStream tis = new MockTransportInputStream(new ByteArrayInputStream(xml.getBytes()));
WebServiceMessage message = messageFactory.createWebServiceMessage(tis);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
StringResult result = new StringResult();
transformer.transform(message.getPayloadSource(), result);
try {
transformer.transform(message.getPayloadSource(), result);
fail("TransformerException expected");
}
catch (TransformerException expected) {
// ignore
}
}
}