diff --git a/core/src/test/java/org/springframework/ws/soap/axiom/AxiomSoap11MessageFactoryTest.java b/core/src/test/java/org/springframework/ws/soap/axiom/AxiomSoap11MessageFactoryTest.java index f5e76458..f1226287 100644 --- a/core/src/test/java/org/springframework/ws/soap/axiom/AxiomSoap11MessageFactoryTest.java +++ b/core/src/test/java/org/springframework/ws/soap/axiom/AxiomSoap11MessageFactoryTest.java @@ -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 = "" + + "" + + ""; + 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 = "" + + "" + + ""; + 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 + } + } + + } \ No newline at end of file