diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapMessage.java b/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapMessage.java index 40526de7..ab3c0433 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapMessage.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapMessage.java @@ -39,8 +39,6 @@ import org.springframework.ws.soap.Attachment; import org.springframework.ws.soap.AttachmentException; import org.springframework.ws.soap.SoapEnvelope; import org.springframework.ws.soap.SoapVersion; -import org.springframework.ws.soap.saaj.saaj12.Saaj12SoapEnvelope; -import org.springframework.ws.soap.saaj.saaj13.Saaj13SoapEnvelope; import org.springframework.ws.soap.saaj.support.SaajUtils; /** @@ -51,18 +49,18 @@ import org.springframework.ws.soap.saaj.support.SaajUtils; * @see javax.xml.soap.SOAPMessage * @see SaajSoapMessageContext */ -public class SaajSoapMessage extends AbstractSoapMessage { +public abstract class SaajSoapMessage extends AbstractSoapMessage { private final SOAPMessage saajMessage; - private SaajSoapEnvelope envelope; + private SoapEnvelope envelope; /** * Create a new SaajSoapMessage based on the given SAAJ SOAPMessage. * * @param soapMessage the SAAJ SOAPMessage */ - public SaajSoapMessage(SOAPMessage soapMessage) { + protected SaajSoapMessage(SOAPMessage soapMessage) { saajMessage = soapMessage; } @@ -73,16 +71,11 @@ public class SaajSoapMessage extends AbstractSoapMessage { return saajMessage; } - public SoapEnvelope getEnvelope() { + public final SoapEnvelope getEnvelope() { if (envelope == null) { try { SOAPEnvelope saajEnvelope = saajMessage.getSOAPPart().getEnvelope(); - if (SaajUtils.getSaajVersion() == SaajUtils.SAAJ_12) { - envelope = new Saaj12SoapEnvelope(saajEnvelope); - } - else { - envelope = new Saaj13SoapEnvelope(saajEnvelope); - } + envelope = createSaajSoapEnvelope(saajEnvelope); } catch (SOAPException ex) { throw new SaajSoapEnvelopeException(ex); @@ -91,7 +84,9 @@ public class SaajSoapMessage extends AbstractSoapMessage { return envelope; } - public void writeTo(OutputStream outputStream) throws IOException { + protected abstract SoapEnvelope createSaajSoapEnvelope(SOAPEnvelope saajEnvelope); + + public final void writeTo(OutputStream outputStream) throws IOException { try { if (saajMessage.saveRequired()) { saajMessage.saveChanges(); diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapMessageContext.java b/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapMessageContext.java index 4f1c4058..f91e8e6b 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapMessageContext.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapMessageContext.java @@ -39,7 +39,7 @@ import org.springframework.ws.transport.TransportResponse; * @author Arjen Poutsma * @see SaajSoapMessageContextFactory */ -public class SaajSoapMessageContext extends AbstractSoapMessageContext { +public abstract class SaajSoapMessageContext extends AbstractSoapMessageContext { private final MessageFactory messageFactory; @@ -50,43 +50,15 @@ public class SaajSoapMessageContext extends AbstractSoapMessageContext { * @param transportRequest the transport request * @param messageFactory the message factory used for creating a response */ - public SaajSoapMessageContext(SOAPMessage request, - TransportRequest transportRequest, - MessageFactory messageFactory) { - super(new SaajSoapMessage(request), transportRequest); + protected SaajSoapMessageContext(SaajSoapMessage request, + TransportRequest transportRequest, + MessageFactory messageFactory) { + super(request, transportRequest); Assert.notNull(messageFactory); this.messageFactory = messageFactory; } - /** - * Returns the request as a SAAJ SOAP message. - */ - public SOAPMessage getSaajRequest() { - return ((SaajSoapMessage) getSoapRequest()).getSaajMessage(); - } - - /** - * Sets the request to the given SAAJ SOAP message. - */ - public void setSaajRequest(SOAPMessage request) { - setRequest(new SaajSoapMessage(request)); - } - - /** - * Returns the response as a SAAJ SOAP message. - */ - public SOAPMessage getSaajResponse() { - return ((SaajSoapMessage) getSoapResponse()).getSaajMessage(); - } - - /** - * Sets the response to the given SAAJ SOAP message. - */ - public void setSaajResponse(SOAPMessage response) { - setResponse(new SaajSoapMessage(response)); - } - - public void sendResponse(TransportResponse transportResponse) throws IOException { + public final void sendResponse(TransportResponse transportResponse) throws IOException { if (hasResponse()) { SOAPMessage response = getSaajResponse(); try { @@ -111,17 +83,45 @@ public class SaajSoapMessageContext extends AbstractSoapMessageContext { throw new SaajSoapMessageException("Could not write message to TransportResponse: " + ex.getMessage(), ex); } - } } protected SoapMessage createResponseSoapMessage() { try { SOAPMessage saajMessage = messageFactory.createMessage(); - return new SaajSoapMessage(saajMessage); + return createSaajSoapMessage(saajMessage); } catch (SOAPException ex) { throw new SoapMessageCreationException("Could not create message: " + ex.toString(), ex); } } + + /** + * Creates a new SaajSoapMessage using the given SAAJ message. + */ + protected abstract SaajSoapMessage createSaajSoapMessage(SOAPMessage saajMessage); + + /** + * Returns the request as a SAAJ SOAP message. + */ + public final SOAPMessage getSaajRequest() { + return ((SaajSoapMessage) getSoapRequest()).getSaajMessage(); + } + + /** + * Returns the response as a SAAJ SOAP message. + */ + public final SOAPMessage getSaajResponse() { + return ((SaajSoapMessage) getSoapResponse()).getSaajMessage(); + } + + /** + * Sets the request to the given SAAJ SOAP message. + */ + public abstract void setSaajRequest(SOAPMessage request); + + /** + * Sets the response to the given SAAJ SOAP message. + */ + public abstract void setSaajResponse(SOAPMessage response); } diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapMessageContextFactory.java b/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapMessageContextFactory.java index 92c06afb..f57f2f3f 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapMessageContextFactory.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapMessageContextFactory.java @@ -32,6 +32,8 @@ import org.springframework.util.StringUtils; import org.springframework.ws.context.MessageContext; import org.springframework.ws.context.MessageContextFactory; import org.springframework.ws.soap.SoapMessageCreationException; +import org.springframework.ws.soap.saaj.saaj12.Saaj12SoapMessageContext; +import org.springframework.ws.soap.saaj.saaj13.Saaj13SoapMessageContext; import org.springframework.ws.soap.saaj.support.SaajUtils; import org.springframework.ws.transport.TransportContext; import org.springframework.ws.transport.TransportRequest; @@ -113,7 +115,16 @@ public class SaajSoapMessageContextFactory implements MessageContextFactory, Ini } try { SOAPMessage requestMessage = messageFactory.createMessage(mimeHeaders, transportRequest.getInputStream()); - return new SaajSoapMessageContext(requestMessage, transportRequest, messageFactory); + if (SaajUtils.getSaajVersion() >= SaajUtils.SAAJ_13) { + return new Saaj13SoapMessageContext(requestMessage, transportRequest, messageFactory); + } + else if (SaajUtils.getSaajVersion() == SaajUtils.SAAJ_12) { + return new Saaj12SoapMessageContext(requestMessage, transportRequest, messageFactory); + } + else { + throw new IllegalStateException( + "SaajSoapMessageContextFactory requires SAAJ 1.2, which was not" + "found on the classpath"); + } } catch (SOAPException ex) { throw new SoapMessageCreationException("Could not create message from TransportRequest: " + ex.getMessage(), diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11Body.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11Body.java index 5cc37124..129085ea 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11Body.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11Body.java @@ -43,23 +43,10 @@ import org.springframework.ws.soap.soap11.Soap11Fault; * * @author Arjen Poutsma */ -class Saaj12Soap11Body implements Soap11Body { - - private final SOAPBody saajBody; +class Saaj12Soap11Body extends Saaj12SoapElement implements Soap11Body { Saaj12Soap11Body(SOAPBody saajBody) { - Assert.notNull(saajBody, "No saajBody given"); - this.saajBody = saajBody; - } - - public Source getPayloadSource() { - SOAPBodyElement payloadElement = getPayloadElement(); - return payloadElement != null ? new DOMSource(payloadElement) : null; - } - - public Result getPayloadResult() { - saajBody.removeContents(); - return new DOMResult(saajBody); + super(saajBody); } public Soap11Fault addFault(QName faultCode, String faultString, Locale faultStringLocale) { @@ -70,14 +57,14 @@ class Saaj12Soap11Body implements Soap11Body { "A fault code with namespace and local part must be specific for a custom fault code"); } try { - Name name = SaajUtils.toName(faultCode, saajBody, getEnvelope()); - saajBody.removeContents(); + Name name = SaajUtils.toName(faultCode, getSaajBody(), getEnvelope()); + getSaajBody().removeContents(); SOAPFault saajFault; if (faultStringLocale == null) { - saajFault = saajBody.addFault(name, faultString); + saajFault = getSaajBody().addFault(name, faultString); } else { - saajFault = saajBody.addFault(name, faultString, faultStringLocale); + saajFault = getSaajBody().addFault(name, faultString, faultStringLocale); } return new Saaj12Soap11Fault(saajFault); } @@ -86,14 +73,14 @@ class Saaj12Soap11Body implements Soap11Body { } } - public SoapFault addMustUnderstandFault(String faultString, Locale locale) { - return addStandardFault("MustUnderstand", faultString, locale); - } - public SoapFault addClientOrSenderFault(String faultString, Locale locale) { return addStandardFault("Client", faultString, locale); } + public SoapFault addMustUnderstandFault(String faultString, Locale locale) { + return addStandardFault("MustUnderstand", faultString, locale); + } + public SoapFault addServerOrReceiverFault(String faultString, Locale locale) { return addStandardFault("Server", faultString, locale); } @@ -102,17 +89,36 @@ class Saaj12Soap11Body implements Soap11Body { return addStandardFault("VersionMismatch", faultString, locale); } + public SoapFault getFault() { + return new Saaj12Soap11Fault(getSaajBody().getFault()); + } + + public final Result getPayloadResult() { + getSaajBody().removeContents(); + return new DOMResult(getSaajBody()); + } + + public final Source getPayloadSource() { + SOAPBodyElement payloadElement = getPayloadElement(); + return payloadElement != null ? new DOMSource(payloadElement) : null; + } + + public final boolean hasFault() { + return getSaajBody().hasFault(); + } + private Soap11Fault addStandardFault(String localName, String faultString, Locale locale) { try { Name faultCode = getEnvelope() - .createName(localName, saajBody.getElementName().getPrefix(), saajBody.getElementName().getURI()); - saajBody.removeContents(); + .createName(localName, getSaajBody().getElementName().getPrefix(), + getSaajBody().getElementName().getURI()); + getSaajBody().removeContents(); SOAPFault saajFault; if (locale == null) { - saajFault = saajBody.addFault(faultCode, faultString); + saajFault = getSaajBody().addFault(faultCode, faultString); } else { - saajFault = saajBody.addFault(faultCode, faultString, locale); + saajFault = getSaajBody().addFault(faultCode, faultString, locale); } return new Saaj12Soap11Fault(saajFault); } @@ -121,24 +127,8 @@ class Saaj12Soap11Body implements Soap11Body { } } - public boolean hasFault() { - return saajBody.hasFault(); - } - - public SoapFault getFault() { - return new Saaj12Soap11Fault(saajBody.getFault()); - } - - public QName getName() { - return SaajUtils.toQName(saajBody.getElementName()); - } - - public Source getSource() { - return new DOMSource(saajBody); - } - private SOAPEnvelope getEnvelope() { - return (SOAPEnvelope) saajBody.getParentElement(); + return (SOAPEnvelope) getSaajBody().getParentElement(); } /** @@ -148,7 +138,7 @@ class Saaj12Soap11Body implements Soap11Body { * @return the message payload, or null if none is set. */ private SOAPBodyElement getPayloadElement() { - for (Iterator iterator = saajBody.getChildElements(); iterator.hasNext();) { + for (Iterator iterator = getSaajBody().getChildElements(); iterator.hasNext();) { Object child = iterator.next(); if (child instanceof SOAPBodyElement) { return (SOAPBodyElement) child; @@ -156,4 +146,8 @@ class Saaj12Soap11Body implements Soap11Body { } return null; } + + protected final SOAPBody getSaajBody() { + return (SOAPBody) getSaajElement(); + } } diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11Fault.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11Fault.java index e7ef2370..8c446cca 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11Fault.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11Fault.java @@ -21,10 +21,7 @@ import javax.xml.namespace.QName; import javax.xml.soap.Detail; import javax.xml.soap.SOAPException; import javax.xml.soap.SOAPFault; -import javax.xml.transform.Source; -import javax.xml.transform.dom.DOMSource; -import org.springframework.util.Assert; import org.springframework.ws.soap.SoapFaultDetail; import org.springframework.ws.soap.saaj.SaajSoapFaultException; import org.springframework.ws.soap.saaj.support.SaajUtils; @@ -35,60 +32,53 @@ import org.springframework.ws.soap.soap11.Soap11Fault; * * @author Arjen Poutsma */ -class Saaj12Soap11Fault implements Soap11Fault { - - private final SOAPFault saajFault; +class Saaj12Soap11Fault extends Saaj12SoapElement implements Soap11Fault { Saaj12Soap11Fault(SOAPFault saajFault) { - Assert.notNull(saajFault, "No saajFault given"); - this.saajFault = saajFault; - } - - public QName getName() { - return SaajUtils.toQName(saajFault.getElementName()); - } - - public Source getSource() { - return new DOMSource(saajFault); - } - - public QName getFaultCode() { - return SaajUtils.toQName(saajFault.getFaultCodeAsName()); + super(saajFault); } public String getFaultString() { - return saajFault.getFaultString(); - } - - public String getFaultActorOrRole() { - return saajFault.getFaultActor(); - } - - public void setFaultActorOrRole(String faultActor) { - try { - saajFault.setFaultActor(faultActor); - } - catch (SOAPException ex) { - throw new SaajSoapFaultException(ex); - } + return getSaajFault().getFaultString(); } public Locale getFaultStringLocale() { - return saajFault.getFaultStringLocale(); - } - - public SoapFaultDetail getFaultDetail() { - Detail saajDetail = saajFault.getDetail(); - return saajDetail != null ? new Saaj12SoapFaultDetail(saajDetail) : null; + return getSaajFault().getFaultStringLocale(); } public SoapFaultDetail addFaultDetail() { try { - Detail saajDetail = saajFault.addDetail(); + Detail saajDetail = getSaajFault().addDetail(); return saajDetail != null ? new Saaj12SoapFaultDetail(saajDetail) : null; } catch (SOAPException ex) { throw new SaajSoapFaultException(ex); } } + + public String getFaultActorOrRole() { + return getSaajFault().getFaultActor(); + } + + public QName getFaultCode() { + return SaajUtils.toQName(getSaajFault().getFaultCodeAsName()); + } + + public SoapFaultDetail getFaultDetail() { + Detail saajDetail = getSaajFault().getDetail(); + return saajDetail != null ? new Saaj12SoapFaultDetail(saajDetail) : null; + } + + public void setFaultActorOrRole(String faultActor) { + try { + getSaajFault().setFaultActor(faultActor); + } + catch (SOAPException ex) { + throw new SaajSoapFaultException(ex); + } + } + + protected SOAPFault getSaajFault() { + return (SOAPFault) getSaajElement(); + } } diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapElement.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapElement.java new file mode 100644 index 00000000..4fd1e792 --- /dev/null +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapElement.java @@ -0,0 +1,48 @@ +/* + * Copyright 2006 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap.saaj.saaj12; + +import javax.xml.namespace.QName; +import javax.xml.soap.SOAPElement; +import javax.xml.transform.Source; +import javax.xml.transform.dom.DOMSource; + +import org.springframework.util.Assert; +import org.springframework.ws.soap.SoapElement; +import org.springframework.ws.soap.saaj.support.SaajUtils; + +abstract class Saaj12SoapElement implements SoapElement { + + private final SOAPElement saajElement; + + protected Saaj12SoapElement(SOAPElement saajElement) { + Assert.notNull(saajElement, "No saajElement given"); + this.saajElement = saajElement; + } + + protected SOAPElement getSaajElement() { + return saajElement; + } + + public final QName getName() { + return SaajUtils.toQName(saajElement.getElementName()); + } + + public final Source getSource() { + return new DOMSource(saajElement); + } +} diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapEnvelope.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapEnvelope.java index 586ed562..b17380cb 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapEnvelope.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapEnvelope.java @@ -16,18 +16,15 @@ package org.springframework.ws.soap.saaj.saaj12; -import javax.xml.namespace.QName; import javax.xml.soap.SOAPEnvelope; import javax.xml.soap.SOAPException; -import javax.xml.transform.Source; -import javax.xml.transform.dom.DOMSource; +import javax.xml.soap.SOAPHeader; import org.springframework.ws.soap.SoapBody; +import org.springframework.ws.soap.SoapEnvelope; import org.springframework.ws.soap.SoapHeader; import org.springframework.ws.soap.saaj.SaajSoapBodyException; -import org.springframework.ws.soap.saaj.SaajSoapEnvelope; import org.springframework.ws.soap.saaj.SaajSoapHeaderException; -import org.springframework.ws.soap.saaj.support.SaajUtils; /** * Internal class that uses SAAJ 1.2 to implement the SoapEnvelope interface. Used by @@ -35,38 +32,17 @@ import org.springframework.ws.soap.saaj.support.SaajUtils; * * @author Arjen Poutsma */ -public class Saaj12SoapEnvelope extends SaajSoapEnvelope { - - private Saaj12SoapHeader header; +class Saaj12SoapEnvelope extends Saaj12SoapElement implements SoapEnvelope { private Saaj12Soap11Body body; + private Saaj12SoapHeader header; + public Saaj12SoapEnvelope(SOAPEnvelope saajEnvelope) { super(saajEnvelope); } - public QName getName() { - return SaajUtils.toQName(getSaajEnvelope().getElementName()); - } - - public Source getSource() { - return new DOMSource(getSaajEnvelope()); - } - - public SoapHeader getHeader() { - if (header != null) { - try { - header = getSaajEnvelope().getHeader() != null ? new Saaj12SoapHeader(getSaajEnvelope().getHeader()) : - null; - } - catch (SOAPException ex) { - throw new SaajSoapHeaderException(ex); - } - } - return header; - } - - public SoapBody getBody() { + public final SoapBody getBody() { if (body == null) { try { body = new Saaj12Soap11Body(getSaajEnvelope().getBody()); @@ -78,5 +54,25 @@ public class Saaj12SoapEnvelope extends SaajSoapEnvelope { return body; } + public final SoapHeader getHeader() { + if (header == null) { + try { + SOAPHeader saajHeader = getSaajEnvelope().getHeader(); + if (saajHeader != null) { + header = new Saaj12SoapHeader(saajHeader); + } + else { + header = null; + } + } + catch (SOAPException ex) { + throw new SaajSoapHeaderException(ex); + } + } + return header; + } + protected SOAPEnvelope getSaajEnvelope() { + return (SOAPEnvelope) getSaajElement(); + } } diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapFaultDetail.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapFaultDetail.java index a3436036..cc0f2210 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapFaultDetail.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapFaultDetail.java @@ -24,9 +24,7 @@ import javax.xml.soap.Name; import javax.xml.soap.SOAPEnvelope; import javax.xml.soap.SOAPException; import javax.xml.transform.Result; -import javax.xml.transform.Source; import javax.xml.transform.dom.DOMResult; -import javax.xml.transform.dom.DOMSource; import org.springframework.util.Assert; import org.springframework.ws.soap.SoapFaultDetail; @@ -39,31 +37,16 @@ import org.springframework.ws.soap.saaj.support.SaajUtils; * * @author Arjen Poutsma */ -class Saaj12SoapFaultDetail implements SoapFaultDetail { - - private Detail saajDetail; +class Saaj12SoapFaultDetail extends Saaj12SoapElement implements SoapFaultDetail { Saaj12SoapFaultDetail(Detail saajDetail) { - Assert.notNull(saajDetail, "No saajDetail given"); - this.saajDetail = saajDetail; - } - - public QName getName() { - return SaajUtils.toQName(saajDetail.getElementName()); - } - - public Source getSource() { - return new DOMSource(saajDetail); - } - - public Result getResult() { - return new DOMResult(saajDetail); + super(saajDetail); } public SoapFaultDetailElement addFaultDetailElement(QName name) { try { - Name detailEntryName = SaajUtils.toName(name, saajDetail, getEnvelope()); - DetailEntry saajDetailEntry = saajDetail.addDetailEntry(detailEntryName); + Name detailEntryName = SaajUtils.toName(name, getSaajDetail(), getEnvelope()); + DetailEntry saajDetailEntry = getSaajDetail().addDetailEntry(detailEntryName); return new Saaj12SoapFaultDetailElement(saajDetailEntry); } catch (SOAPException ex) { @@ -72,11 +55,19 @@ class Saaj12SoapFaultDetail implements SoapFaultDetail { } public Iterator getDetailEntries() { - return new Saaj12SoapFaultDetailIterator(saajDetail.getDetailEntries()); + return new Saaj12SoapFaultDetailIterator(getSaajDetail().getDetailEntries()); + } + + public Result getResult() { + return new DOMResult(getSaajDetail()); } private SOAPEnvelope getEnvelope() { - return (SOAPEnvelope) saajDetail.getParentElement().getParentElement().getParentElement(); + return (SOAPEnvelope) getSaajDetail().getParentElement().getParentElement().getParentElement(); + } + + private Detail getSaajDetail() { + return (Detail) getSaajElement(); } private static class Saaj12SoapFaultDetailIterator implements Iterator { @@ -100,8 +91,5 @@ class Saaj12SoapFaultDetail implements SoapFaultDetail { public void remove() { saajIterator.remove(); } - } - - } diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapFaultDetailElement.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapFaultDetailElement.java index d5259ddd..64b9e1d6 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapFaultDetailElement.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapFaultDetailElement.java @@ -16,51 +16,40 @@ package org.springframework.ws.soap.saaj.saaj12; -import javax.xml.namespace.QName; import javax.xml.soap.DetailEntry; import javax.xml.soap.SOAPException; import javax.xml.transform.Result; -import javax.xml.transform.Source; import javax.xml.transform.dom.DOMResult; -import javax.xml.transform.dom.DOMSource; -import org.springframework.util.Assert; import org.springframework.ws.soap.SoapFaultDetailElement; import org.springframework.ws.soap.saaj.SaajSoapFaultException; -import org.springframework.ws.soap.saaj.support.SaajUtils; /** * Internal class that uses SAAJ 1.2 to implement the SoapFaultDetailElement interface. * * @author Arjen Poutsma */ -class Saaj12SoapFaultDetailElement implements SoapFaultDetailElement { - - private DetailEntry saajDetailEntry; +class Saaj12SoapFaultDetailElement extends Saaj12SoapElement implements SoapFaultDetailElement { Saaj12SoapFaultDetailElement(DetailEntry saajDetailEntry) { - Assert.notNull(saajDetailEntry, "No saajDetailEntry given"); - this.saajDetailEntry = saajDetailEntry; + super(saajDetailEntry); } public Result getResult() { - return new DOMResult(saajDetailEntry); + return new DOMResult(getSaajDetailEntry()); + } + + private DetailEntry getSaajDetailEntry() { + return (DetailEntry) getSaajElement(); } public void addText(String text) { try { - saajDetailEntry.addTextNode(text); + getSaajDetailEntry().addTextNode(text); } catch (SOAPException ex) { throw new SaajSoapFaultException(ex); } } - public QName getName() { - return SaajUtils.toQName(saajDetailEntry.getElementName()); - } - - public Source getSource() { - return new DOMSource(saajDetailEntry); - } } diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapHeader.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapHeader.java index d7312026..2c91326b 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapHeader.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapHeader.java @@ -23,10 +23,7 @@ import javax.xml.soap.SOAPEnvelope; import javax.xml.soap.SOAPException; import javax.xml.soap.SOAPHeader; import javax.xml.soap.SOAPHeaderElement; -import javax.xml.transform.Source; -import javax.xml.transform.dom.DOMSource; -import org.springframework.util.Assert; import org.springframework.ws.soap.SoapHeader; import org.springframework.ws.soap.SoapHeaderElement; import org.springframework.ws.soap.saaj.SaajSoapHeaderException; @@ -37,27 +34,16 @@ import org.springframework.ws.soap.saaj.support.SaajUtils; * * @author Arjen Poutsma */ -class Saaj12SoapHeader implements SoapHeader { - - private final SOAPHeader saajHeader; +class Saaj12SoapHeader extends Saaj12SoapElement implements SoapHeader { Saaj12SoapHeader(SOAPHeader saajHeader) { - Assert.notNull(saajHeader, "No saajHeader given"); - this.saajHeader = saajHeader; - } - - public QName getName() { - return SaajUtils.toQName(saajHeader.getElementName()); - } - - public Source getSource() { - return new DOMSource(saajHeader); + super(saajHeader); } public SoapHeaderElement addHeaderElement(QName name) { try { - Name saajName = SaajUtils.toName(name, saajHeader, getEnvelope()); - SOAPHeaderElement saajHeaderElement = saajHeader.addHeaderElement(saajName); + Name saajName = SaajUtils.toName(name, getSaajHeader(), getEnvelope()); + SOAPHeaderElement saajHeaderElement = getSaajHeader().addHeaderElement(saajName); return new Saaj12SoapHeaderElement(saajHeaderElement); } catch (SOAPException ex) { @@ -65,23 +51,27 @@ class Saaj12SoapHeader implements SoapHeader { } } - public Iterator examineMustUnderstandHeaderElements(String role) { - return new SaajSoapHeaderElementIterator(saajHeader.examineMustUnderstandHeaderElements(role)); + public Iterator examineAllHeaderElements() { + return new Saaj12SoapHeaderElementIterator(getSaajHeader().examineAllHeaderElements()); } - public Iterator examineAllHeaderElements() { - return new SaajSoapHeaderElementIterator(saajHeader.examineAllHeaderElements()); + public Iterator examineMustUnderstandHeaderElements(String role) { + return new Saaj12SoapHeaderElementIterator(getSaajHeader().examineMustUnderstandHeaderElements(role)); } private SOAPEnvelope getEnvelope() { - return (SOAPEnvelope) saajHeader.getParentElement(); + return (SOAPEnvelope) getSaajHeader().getParentElement(); } - private static class SaajSoapHeaderElementIterator implements Iterator { + private SOAPHeader getSaajHeader() { + return (SOAPHeader) getSaajElement(); + } + + private static class Saaj12SoapHeaderElementIterator implements Iterator { private final Iterator saajIterator; - private SaajSoapHeaderElementIterator(Iterator saajIterator) { + private Saaj12SoapHeaderElementIterator(Iterator saajIterator) { this.saajIterator = saajIterator; } diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapHeaderElement.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapHeaderElement.java index 33bcbf75..0bb7d504 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapHeaderElement.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapHeaderElement.java @@ -22,11 +22,8 @@ import javax.xml.soap.SOAPEnvelope; import javax.xml.soap.SOAPException; import javax.xml.soap.SOAPHeaderElement; import javax.xml.transform.Result; -import javax.xml.transform.Source; import javax.xml.transform.dom.DOMResult; -import javax.xml.transform.dom.DOMSource; -import org.springframework.util.Assert; import org.springframework.ws.soap.SoapHeaderElement; import org.springframework.ws.soap.SoapHeaderException; import org.springframework.ws.soap.saaj.SaajSoapHeaderException; @@ -37,47 +34,36 @@ import org.springframework.ws.soap.saaj.support.SaajUtils; * * @author Arjen Poutsma */ -class Saaj12SoapHeaderElement implements SoapHeaderElement { - - private final SOAPHeaderElement saajHeaderElement; +class Saaj12SoapHeaderElement extends Saaj12SoapElement implements SoapHeaderElement { Saaj12SoapHeaderElement(SOAPHeaderElement saajHeaderElement) { - Assert.notNull(saajHeaderElement, "No saajHeaderElement given"); - this.saajHeaderElement = saajHeaderElement; - } - - public QName getName() { - return SaajUtils.toQName(saajHeaderElement.getElementName()); - } - - public Source getSource() { - return new DOMSource(saajHeaderElement); + super(saajHeaderElement); } public String getActorOrRole() { - return saajHeaderElement.getActor(); - } - - public void setActorOrRole(String role) { - saajHeaderElement.setActor(role); + return getSaajHeaderElement().getActor(); } public boolean getMustUnderstand() { - return saajHeaderElement.getMustUnderstand(); - } - - public void setMustUnderstand(boolean mustUnderstand) { - saajHeaderElement.setMustUnderstand(mustUnderstand); + return getSaajHeaderElement().getMustUnderstand(); } public Result getResult() { - return new DOMResult(saajHeaderElement); + return new DOMResult(getSaajHeaderElement()); + } + + public void setActorOrRole(String role) { + getSaajHeaderElement().setActor(role); + } + + public void setMustUnderstand(boolean mustUnderstand) { + getSaajHeaderElement().setMustUnderstand(mustUnderstand); } public void addAttribute(QName name, String value) throws SoapHeaderException { try { - Name saajName = SaajUtils.toName(name, saajHeaderElement, getEnvelope()); - saajHeaderElement.addAttribute(saajName, value); + Name saajName = SaajUtils.toName(name, getSaajHeaderElement(), getEnvelope()); + getSaajHeaderElement().addAttribute(saajName, value); } catch (SOAPException ex) { throw new SaajSoapHeaderException(ex); @@ -85,7 +71,10 @@ class Saaj12SoapHeaderElement implements SoapHeaderElement { } private SOAPEnvelope getEnvelope() { - return (SOAPEnvelope) saajHeaderElement.getParentElement().getParentElement(); + return (SOAPEnvelope) getSaajHeaderElement().getParentElement().getParentElement(); } + private SOAPHeaderElement getSaajHeaderElement() { + return (SOAPHeaderElement) getSaajElement(); + } } diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapMessage.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapMessage.java new file mode 100644 index 00000000..9a416c74 --- /dev/null +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapMessage.java @@ -0,0 +1,43 @@ +/* + * Copyright 2006 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap.saaj.saaj12; + +import javax.xml.soap.SOAPEnvelope; +import javax.xml.soap.SOAPMessage; + +import org.springframework.ws.soap.SoapEnvelope; +import org.springframework.ws.soap.saaj.SaajSoapMessage; + +/** + * SAAJ 1.2 specific implementation of the SoapMessage interface. Accessed via the + * SaajSoapMessageContext. + * + * @author Arjen Poutsma + * @see javax.xml.soap.SOAPMessage + * @see org.springframework.ws.soap.saaj.SaajSoapMessageContext + */ +class Saaj12SoapMessage extends SaajSoapMessage { + + public Saaj12SoapMessage(SOAPMessage soapMessage) { + super(soapMessage); + } + + protected SoapEnvelope createSaajSoapEnvelope(SOAPEnvelope saajEnvelope) { + return new Saaj12SoapEnvelope(saajEnvelope); + } + +} diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapMessageContext.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapMessageContext.java new file mode 100644 index 00000000..8ffcb9f6 --- /dev/null +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj12/Saaj12SoapMessageContext.java @@ -0,0 +1,59 @@ +/* + * Copyright 2006 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap.saaj.saaj12; + +import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPMessage; + +import org.springframework.ws.soap.saaj.SaajSoapMessage; +import org.springframework.ws.soap.saaj.SaajSoapMessageContext; +import org.springframework.ws.transport.TransportRequest; + +/** + * SAAJ 1.2 specific implementation of the SoapMessageContext interface. Created by the + * SaajSoapMessageContextFactory. + * + * @author Arjen Poutsma + * @see org.springframework.ws.soap.saaj.SaajSoapMessageContextFactory + */ +public class Saaj12SoapMessageContext extends SaajSoapMessageContext { + + /** + * Creates a new instance based on the given SAAJ request message, and a message factory. + * + * @param request the request message + * @param transportRequest the transport request + * @param messageFactory the message factory used for creating a response + */ + public Saaj12SoapMessageContext(SOAPMessage request, + TransportRequest transportRequest, + MessageFactory messageFactory) { + super(new Saaj12SoapMessage(request), transportRequest, messageFactory); + } + + protected SaajSoapMessage createSaajSoapMessage(SOAPMessage saajMessage) { + return new Saaj12SoapMessage(saajMessage); + } + + public void setSaajRequest(SOAPMessage request) { + setRequest(new Saaj12SoapMessage(request)); + } + + public void setSaajResponse(SOAPMessage response) { + setResponse(new Saaj12SoapMessage(response)); + } +} diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11Body.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11Body.java index dc25e802..30ef0ca5 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11Body.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11Body.java @@ -49,13 +49,13 @@ class Saaj13Soap11Body extends Saaj13SoapBody implements Soap11Body { throw new IllegalArgumentException("fault code has no namespace"); } try { - saajBody.removeContents(); + getSaajBody().removeContents(); SOAPFault saajFault; if (faultStringLocale == null) { - saajFault = saajBody.addFault(faultCode, faultString); + saajFault = getSaajBody().addFault(faultCode, faultString); } else { - saajFault = saajBody.addFault(faultCode, faultString, faultStringLocale); + saajFault = getSaajBody().addFault(faultCode, faultString, faultStringLocale); } return new Saaj13Soap11Fault(saajFault); } @@ -83,11 +83,11 @@ class Saaj13Soap11Body extends Saaj13SoapBody implements Soap11Body { private Soap11Fault addStandardFault(String localName, String faultString, Locale faultStringLocale) { try { - QName faultCode = QNameUtils.createQName(saajBody.getElementQName().getNamespaceURI(), localName, - QNameUtils.getPrefix(saajBody.getElementQName())); - saajBody.removeContents(); - SOAPFault saajFault = faultStringLocale == null ? saajBody.addFault(faultCode, faultString) : - saajBody.addFault(faultCode, faultString, faultStringLocale); + QName faultCode = QNameUtils.createQName(getSaajBody().getElementQName().getNamespaceURI(), localName, + QNameUtils.getPrefix(getSaajBody().getElementQName())); + getSaajBody().removeContents(); + SOAPFault saajFault = faultStringLocale == null ? getSaajBody().addFault(faultCode, faultString) : + getSaajBody().addFault(faultCode, faultString, faultStringLocale); return new Saaj13Soap11Fault(saajFault); } catch (SOAPException ex) { @@ -96,7 +96,7 @@ class Saaj13Soap11Body extends Saaj13SoapBody implements Soap11Body { } public SoapFault getFault() { - return new Saaj13Soap11Fault(saajBody.getFault()); + return new Saaj13Soap11Fault(getSaajBody().getFault()); } } diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11Fault.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11Fault.java index 80106fd9..5b489f08 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11Fault.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11Fault.java @@ -21,10 +21,7 @@ import javax.xml.namespace.QName; import javax.xml.soap.Detail; import javax.xml.soap.SOAPException; import javax.xml.soap.SOAPFault; -import javax.xml.transform.Source; -import javax.xml.transform.dom.DOMSource; -import org.springframework.util.Assert; import org.springframework.ws.soap.SoapFaultDetail; import org.springframework.ws.soap.saaj.SaajSoapFaultException; import org.springframework.ws.soap.soap11.Soap11Fault; @@ -34,34 +31,23 @@ import org.springframework.ws.soap.soap11.Soap11Fault; * * @author Arjen Poutsma */ -class Saaj13Soap11Fault implements Soap11Fault { - - private final SOAPFault saajFault; +class Saaj13Soap11Fault extends Saaj13SoapElement implements Soap11Fault { Saaj13Soap11Fault(SOAPFault saajFault) { - Assert.notNull(saajFault, "No saajFault given"); - this.saajFault = saajFault; - } - - public Locale getFaultStringLocale() { - return saajFault.getFaultStringLocale(); + super(saajFault); } public String getFaultString() { - return saajFault.getFaultString(); + return getSaajFault().getFaultString(); } - public Source getSource() { - return new DOMSource(saajFault); - } - - public QName getName() { - return saajFault.getElementQName(); + public Locale getFaultStringLocale() { + return getSaajFault().getFaultStringLocale(); } public SoapFaultDetail addFaultDetail() { try { - Detail saajDetail = saajFault.addDetail(); + Detail saajDetail = getSaajFault().addDetail(); return saajDetail != null ? new Saaj13SoapFaultDetail(saajDetail) : null; } catch (SOAPException ex) { @@ -69,25 +55,29 @@ class Saaj13Soap11Fault implements Soap11Fault { } } - public SoapFaultDetail getFaultDetail() { - Detail saajDetail = saajFault.getDetail(); - return saajDetail != null ? new Saaj13SoapFaultDetail(saajDetail) : null; + public String getFaultActorOrRole() { + return getSaajFault().getFaultActor(); } - public String getFaultActorOrRole() { - return saajFault.getFaultActor(); + public QName getFaultCode() { + return getSaajFault().getFaultCodeAsQName(); + } + + public SoapFaultDetail getFaultDetail() { + Detail saajDetail = getSaajFault().getDetail(); + return saajDetail != null ? new Saaj13SoapFaultDetail(saajDetail) : null; } public void setFaultActorOrRole(String faultActor) { try { - saajFault.setFaultActor(faultActor); + getSaajFault().setFaultActor(faultActor); } catch (SOAPException ex) { throw new SaajSoapFaultException(ex); } } - public QName getFaultCode() { - return saajFault.getFaultCodeAsQName(); + private SOAPFault getSaajFault() { + return (SOAPFault) getSaajElement(); } } diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12Body.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12Body.java index f8d9eaff..58d8b4ff 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12Body.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12Body.java @@ -51,8 +51,8 @@ class Saaj13Soap12Body extends Saaj13SoapBody implements Soap12Body { "A code with namespace and local part must be specific for a custom fault code"); } try { - saajBody.removeContents(); - SOAPFault saajFault = saajBody.addFault(code, reason, locale); + getSaajBody().removeContents(); + SOAPFault saajFault = getSaajBody().addFault(code, reason, locale); return new Saaj13Soap12Fault(saajFault); } catch (SOAPException ex) { @@ -81,6 +81,6 @@ class Saaj13Soap12Body extends Saaj13SoapBody implements Soap12Body { } public SoapFault getFault() { - return new Saaj13Soap12Fault(saajBody.getFault()); + return new Saaj13Soap12Fault(getSaajBody().getFault()); } } diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12Header.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12Header.java index 0abe53a2..c601fbf2 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12Header.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12Header.java @@ -38,7 +38,7 @@ class Saaj13Soap12Header extends Saaj13SoapHeader implements Soap12Header { public SoapHeaderElement addNotUnderstoodHeaderElement(QName headerName) { try { - SOAPHeaderElement saajHeaderElement = saajHeader.addNotUnderstoodHeaderElement(headerName); + SOAPHeaderElement saajHeaderElement = getSaajHeader().addNotUnderstoodHeaderElement(headerName); return new Saaj13SoapHeaderElement(saajHeaderElement); } catch (SOAPException ex) { @@ -48,7 +48,7 @@ class Saaj13Soap12Header extends Saaj13SoapHeader implements Soap12Header { public SoapHeaderElement addUpgradeHeaderElement(String[] supportedSoapUris) { try { - SOAPHeaderElement saajHeaderElement = saajHeader.addUpgradeHeaderElement(supportedSoapUris); + SOAPHeaderElement saajHeaderElement = getSaajHeader().addUpgradeHeaderElement(supportedSoapUris); return new Saaj13SoapHeaderElement(saajHeaderElement); } catch (SOAPException ex) { diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapBody.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapBody.java index 0e80145b..7578555a 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapBody.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapBody.java @@ -17,7 +17,6 @@ package org.springframework.ws.soap.saaj.saaj13; import java.util.Iterator; -import javax.xml.namespace.QName; import javax.xml.soap.SOAPBody; import javax.xml.soap.SOAPBodyElement; import javax.xml.transform.Result; @@ -25,7 +24,6 @@ import javax.xml.transform.Source; import javax.xml.transform.dom.DOMResult; import javax.xml.transform.dom.DOMSource; -import org.springframework.util.Assert; import org.springframework.ws.soap.SoapBody; /** @@ -34,13 +32,15 @@ import org.springframework.ws.soap.SoapBody; * * @author Arjen Poutsma */ -abstract class Saaj13SoapBody implements SoapBody { +abstract class Saaj13SoapBody extends Saaj13SoapElement implements SoapBody { - protected final SOAPBody saajBody; + protected Saaj13SoapBody(SOAPBody saajBody) { + super(saajBody); + } - Saaj13SoapBody(SOAPBody saajBody) { - Assert.notNull(saajBody, "No saajBody given"); - this.saajBody = saajBody; + public final Result getPayloadResult() { + getSaajBody().removeContents(); + return new DOMResult(getSaajBody()); } public final Source getPayloadSource() { @@ -48,21 +48,8 @@ abstract class Saaj13SoapBody implements SoapBody { return payloadElement != null ? new DOMSource(payloadElement) : null; } - public final Result getPayloadResult() { - saajBody.removeContents(); - return new DOMResult(saajBody); - } - public final boolean hasFault() { - return saajBody.hasFault(); - } - - public final QName getName() { - return saajBody.getElementQName(); - } - - public final Source getSource() { - return new DOMSource(saajBody); + return getSaajBody().hasFault(); } /** @@ -72,7 +59,7 @@ abstract class Saaj13SoapBody implements SoapBody { * @return the message payload, or null if none is set. */ private SOAPBodyElement getPayloadElement() { - for (Iterator iterator = saajBody.getChildElements(); iterator.hasNext();) { + for (Iterator iterator = getSaajBody().getChildElements(); iterator.hasNext();) { Object child = iterator.next(); if (child instanceof SOAPBodyElement) { return (SOAPBodyElement) child; @@ -81,4 +68,7 @@ abstract class Saaj13SoapBody implements SoapBody { return null; } + protected final SOAPBody getSaajBody() { + return (SOAPBody) getSaajElement(); + } } diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapEnvelope.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapElement.java similarity index 51% rename from core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapEnvelope.java rename to core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapElement.java index ed7b33a7..ee2a9ff4 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapEnvelope.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapElement.java @@ -14,35 +14,33 @@ * limitations under the License. */ -package org.springframework.ws.soap.saaj; +package org.springframework.ws.soap.saaj.saaj13; -import javax.xml.soap.SOAPEnvelope; +import javax.xml.namespace.QName; +import javax.xml.soap.SOAPElement; import javax.xml.transform.Source; import javax.xml.transform.dom.DOMSource; import org.springframework.util.Assert; -import org.springframework.ws.soap.SoapEnvelope; -/** - * Abstract base class for implementations of the SoapEnvelope interface that use SAAJ. Used by - * SaajSoapMessage. - * - * @author Arjen Poutsma - */ -public abstract class SaajSoapEnvelope implements SoapEnvelope { +abstract class Saaj13SoapElement { - private final SOAPEnvelope saajEnvelope; + private final SOAPElement saajElement; - protected SaajSoapEnvelope(SOAPEnvelope saajEnvelope) { - Assert.notNull(saajEnvelope, "No saajEnvelope given"); - this.saajEnvelope = saajEnvelope; + protected Saaj13SoapElement(SOAPElement saajElement) { + Assert.notNull(saajElement, "No saajElement given"); + this.saajElement = saajElement; } - protected SOAPEnvelope getSaajEnvelope() { - return saajEnvelope; + protected SOAPElement getSaajElement() { + return saajElement; } - public Source getSource() { - return new DOMSource(saajEnvelope); + public final QName getName() { + return saajElement.getElementQName(); + } + + public final Source getSource() { + return new DOMSource(saajElement); } } diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapEnvelope.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapEnvelope.java index c38dc39c..2516d020 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapEnvelope.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapEnvelope.java @@ -16,19 +16,16 @@ package org.springframework.ws.soap.saaj.saaj13; -import javax.xml.namespace.QName; import javax.xml.soap.SOAPBody; import javax.xml.soap.SOAPConstants; import javax.xml.soap.SOAPEnvelope; import javax.xml.soap.SOAPException; import javax.xml.soap.SOAPHeader; -import org.springframework.util.Assert; import org.springframework.ws.soap.SoapBody; +import org.springframework.ws.soap.SoapEnvelope; import org.springframework.ws.soap.SoapHeader; import org.springframework.ws.soap.saaj.SaajSoapBodyException; -import org.springframework.ws.soap.saaj.SaajSoapEnvelope; -import org.springframework.ws.soap.saaj.SaajSoapEnvelopeException; import org.springframework.ws.soap.saaj.SaajSoapHeaderException; /** @@ -37,39 +34,50 @@ import org.springframework.ws.soap.saaj.SaajSoapHeaderException; * * @author Arjen Poutsma */ -public class Saaj13SoapEnvelope extends SaajSoapEnvelope { - - private Saaj13SoapHeader header; +class Saaj13SoapEnvelope extends Saaj13SoapElement implements SoapEnvelope { private Saaj13SoapBody body; + private Saaj13SoapHeader header; + public Saaj13SoapEnvelope(SOAPEnvelope saajEnvelope) { super(saajEnvelope); - Assert.notNull(saajEnvelope, "No saajEnvelope given"); } - public QName getName() { - return getSaajEnvelope().getElementQName(); - } - - public SoapHeader getHeader() { - if (header == null) { + public final SoapBody getBody() { + if (body == null) { try { - if (getSaajEnvelope().getHeader() == null) { - return null; + SOAPBody saajBody = getSaajEnvelope().getBody(); + Saaj13SoapBody result; + if (isSoap11()) { + result = new Saaj13Soap11Body(saajBody); } else { - SOAPHeader saajHeader = getSaajEnvelope().getHeader(); - String namespaceURI = getSaajEnvelope().getElementQName().getNamespaceURI(); - if (SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE.equals(namespaceURI)) { + result = new Saaj13Soap12Body(saajBody); + } + body = result; + } + catch (SOAPException ex) { + throw new SaajSoapBodyException(ex); + } + } + return body; + } + + public final SoapHeader getHeader() { + if (header == null) { + try { + SOAPHeader saajHeader = getSaajEnvelope().getHeader(); + if (saajHeader != null) { + if (isSoap11()) { header = new Saaj13SoapHeader(saajHeader); } - else if (SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE.equals(namespaceURI)) { + else { header = new Saaj13Soap12Header(saajHeader); } - else { - throw new SaajSoapEnvelopeException("Unknown SOAP namespace \"" + namespaceURI + "\""); - } + } + else { + header = null; } } catch (SOAPException ex) { @@ -79,27 +87,24 @@ public class Saaj13SoapEnvelope extends SaajSoapEnvelope { return header; } - public SoapBody getBody() { - if (body == null) { - try { - SOAPBody saajBody = getSaajEnvelope().getBody(); - String namespaceURI = getSaajEnvelope().getElementQName().getNamespaceURI(); - if (SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE.equals(namespaceURI)) { - body = new Saaj13Soap11Body(saajBody); - } - else if (SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE.equals(namespaceURI)) { - body = new Saaj13Soap12Body(saajBody); - } - else { - throw new SaajSoapEnvelopeException("Unknown SOAP namespace \"" + namespaceURI + "\""); - } - - } - catch (SOAPException ex) { - throw new SaajSoapBodyException(ex); - } - } - return body; + protected SOAPEnvelope getSaajEnvelope() { + return (SOAPEnvelope) getSaajElement(); } + /** + * Returns true if this is a SOAP 1.1 message, false if SOAP 1.2. Throws an exception + * otherwise. + */ + private boolean isSoap11() { + String namespaceURI = getSaajEnvelope().getElementQName().getNamespaceURI(); + if (SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE.equals(namespaceURI)) { + return true; + } + else if (SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE.equals(namespaceURI)) { + return false; + } + else { + throw new IllegalStateException("Unknown SOAP namespace \"" + namespaceURI + "\""); + } + } } diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapHeader.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapHeader.java index 62bfc54e..bf6985a5 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapHeader.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapHeader.java @@ -21,10 +21,7 @@ import javax.xml.namespace.QName; import javax.xml.soap.SOAPException; import javax.xml.soap.SOAPHeader; import javax.xml.soap.SOAPHeaderElement; -import javax.xml.transform.Source; -import javax.xml.transform.dom.DOMSource; -import org.springframework.util.Assert; import org.springframework.ws.soap.SoapHeader; import org.springframework.ws.soap.SoapHeaderElement; import org.springframework.ws.soap.saaj.SaajSoapHeaderException; @@ -34,26 +31,19 @@ import org.springframework.ws.soap.saaj.SaajSoapHeaderException; * * @author Arjen Poutsma */ -class Saaj13SoapHeader implements SoapHeader { - - protected final SOAPHeader saajHeader; +class Saaj13SoapHeader extends Saaj13SoapElement implements SoapHeader { Saaj13SoapHeader(SOAPHeader saajHeader) { - Assert.notNull(saajHeader, "No saajHeader given"); - this.saajHeader = saajHeader; + super(saajHeader); } - public QName getName() { - return saajHeader.getElementQName(); - } - - public Source getSource() { - return new DOMSource(saajHeader); + protected final SOAPHeader getSaajHeader() { + return (SOAPHeader) getSaajElement(); } public SoapHeaderElement addHeaderElement(QName name) { try { - SOAPHeaderElement saajHeaderElement = saajHeader.addHeaderElement(name); + SOAPHeaderElement saajHeaderElement = getSaajHeader().addHeaderElement(name); return new Saaj13SoapHeaderElement(saajHeaderElement); } catch (SOAPException ex) { @@ -62,11 +52,11 @@ class Saaj13SoapHeader implements SoapHeader { } public Iterator examineMustUnderstandHeaderElements(String role) { - return new SaajSoapHeaderElementIterator(saajHeader.examineMustUnderstandHeaderElements(role)); + return new SaajSoapHeaderElementIterator(getSaajHeader().examineMustUnderstandHeaderElements(role)); } public Iterator examineAllHeaderElements() { - return new SaajSoapHeaderElementIterator(saajHeader.examineAllHeaderElements()); + return new SaajSoapHeaderElementIterator(getSaajHeader().examineAllHeaderElements()); } private static class SaajSoapHeaderElementIterator implements Iterator { diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapMessage.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapMessage.java new file mode 100644 index 00000000..0a96a428 --- /dev/null +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapMessage.java @@ -0,0 +1,39 @@ +/* + * Copyright 2006 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap.saaj.saaj13; + +import javax.xml.soap.SOAPEnvelope; +import javax.xml.soap.SOAPMessage; + +import org.springframework.ws.soap.SoapEnvelope; +import org.springframework.ws.soap.saaj.SaajSoapMessage; + +class Saaj13SoapMessage extends SaajSoapMessage { + + /** + * Create a new SaajSoapMessage based on the given SAAJ SOAPMessage. + * + * @param soapMessage the SAAJ SOAPMessage + */ + protected Saaj13SoapMessage(SOAPMessage soapMessage) { + super(soapMessage); + } + + protected SoapEnvelope createSaajSoapEnvelope(SOAPEnvelope saajEnvelope) { + return new Saaj13SoapEnvelope(saajEnvelope); + } +} diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapMessageContext.java b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapMessageContext.java new file mode 100644 index 00000000..c60dd80d --- /dev/null +++ b/core/src/main/java/org/springframework/ws/soap/saaj/saaj13/Saaj13SoapMessageContext.java @@ -0,0 +1,59 @@ +/* + * Copyright 2006 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap.saaj.saaj13; + +import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPMessage; + +import org.springframework.ws.soap.saaj.SaajSoapMessage; +import org.springframework.ws.soap.saaj.SaajSoapMessageContext; +import org.springframework.ws.transport.TransportRequest; + +/** + * SAAJ 1.3 specific implementation of the SoapMessageContext interface. Created by the + * SaajSoapMessageContextFactory. + * + * @author Arjen Poutsma + * @see org.springframework.ws.soap.saaj.SaajSoapMessageContextFactory + */ +public class Saaj13SoapMessageContext extends SaajSoapMessageContext { + + /** + * Creates a new instance based on the given SAAJ request message, and a message factory. + * + * @param request the request message + * @param transportRequest the transport request + * @param messageFactory the message factory used for creating a response + */ + public Saaj13SoapMessageContext(SOAPMessage request, + TransportRequest transportRequest, + MessageFactory messageFactory) { + super(new Saaj13SoapMessage(request), transportRequest, messageFactory); + } + + protected SaajSoapMessage createSaajSoapMessage(SOAPMessage saajMessage) { + return new Saaj13SoapMessage(saajMessage); + } + + public void setSaajRequest(SOAPMessage request) { + setRequest(new Saaj13SoapMessage(request)); + } + + public void setSaajResponse(SOAPMessage response) { + setResponse(new Saaj13SoapMessage(response)); + } +} diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/support/SaajUtils.java b/core/src/main/java/org/springframework/ws/soap/saaj/support/SaajUtils.java index b1cb8fa6..843ffb69 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/support/SaajUtils.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/support/SaajUtils.java @@ -59,7 +59,7 @@ public abstract class SaajUtils { saajVersion = SAAJ_13; } catch (ClassNotFoundException ex) { - if (Element.class.isAssignableFrom(SOAPElement.class)) { + if (Element.class.isAssignableFrom(SOAPElement.class) && !isWebLogic9Implementation()) { saajVersion = SAAJ_12; } else { @@ -68,6 +68,27 @@ public abstract class SaajUtils { } } + /** + * Checks whether we are dealing with a WebLogic 9 implementation of SAAJ. WebLogic 9 does implement SAAJ 1.2, but + * throws UnsupportedOperationExceptions when a SAAJ 1.2 method is called. + */ + private static boolean isWebLogic9Implementation() { + try { + MessageFactory messageFactory = MessageFactory.newInstance(); + SOAPMessage message = messageFactory.createMessage(); + try { + message.getSOAPBody(); + } + catch (UnsupportedOperationException ex) { + return true; + } + return false; + } + catch (SOAPException e) { + return false; + } + } + /** * Gets the SAAJ version. * diff --git a/core/src/test/java/org/springframework/ws/endpoint/interceptor/PayloadValidatingInterceptorTest.java b/core/src/test/java/org/springframework/ws/endpoint/interceptor/PayloadValidatingInterceptorTest.java index e9cf703f..8e1826a7 100644 --- a/core/src/test/java/org/springframework/ws/endpoint/interceptor/PayloadValidatingInterceptorTest.java +++ b/core/src/test/java/org/springframework/ws/endpoint/interceptor/PayloadValidatingInterceptorTest.java @@ -36,6 +36,7 @@ import org.springframework.ws.mock.MockWebServiceMessage; import org.springframework.ws.soap.SoapMessage; import org.springframework.ws.soap.SoapVersion; import org.springframework.ws.soap.saaj.SaajSoapMessageContext; +import org.springframework.ws.soap.saaj.saaj13.Saaj13SoapMessageContext; import org.springframework.ws.soap.saaj.support.SaajUtils; import org.springframework.ws.soap.soap11.Soap11Fault; import org.springframework.ws.soap.soap12.Soap12Fault; @@ -65,7 +66,7 @@ public class PayloadValidatingInterceptorTest extends TestCase { InputStream inputStream = getClass().getResourceAsStream("invalidMessage.xml"); transformer.transform(new StreamSource(inputStream), new DOMResult(invalidMessage.getSOAPBody())); SaajSoapMessageContext context = - new SaajSoapMessageContext(invalidMessage, new MockTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(invalidMessage, new MockTransportRequest(), messageFactory); boolean result = interceptor.handleRequest(context, null); assertFalse("Invalid response from interceptor", result); @@ -73,11 +74,9 @@ public class PayloadValidatingInterceptorTest extends TestCase { SoapMessage response = context.getSoapResponse(); assertTrue("Resonse has no fault", response.getSoapBody().hasFault()); Soap11Fault fault = (Soap11Fault) response.getSoapBody().getFault(); - assertEquals("Invalid fault code on fault", - SoapVersion.SOAP_11.getClientOrSenderFaultName(), + assertEquals("Invalid fault code on fault", SoapVersion.SOAP_11.getClientOrSenderFaultName(), fault.getFaultCode()); - assertEquals("Invalid fault string on fault", - PayloadValidatingInterceptor.DEFAULT_FAULTSTRING_OR_REASON, + assertEquals("Invalid fault string on fault", PayloadValidatingInterceptor.DEFAULT_FAULTSTRING_OR_REASON, fault.getFaultString()); assertNotNull("No Detail on fault", fault.getFaultDetail()); } @@ -89,7 +88,7 @@ public class PayloadValidatingInterceptorTest extends TestCase { InputStream inputStream = getClass().getResourceAsStream("invalidMessage.xml"); transformer.transform(new StreamSource(inputStream), new DOMResult(invalidMessage.getSOAPBody())); SaajSoapMessageContext context = - new SaajSoapMessageContext(invalidMessage, new MockTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(invalidMessage, new MockTransportRequest(), messageFactory); boolean result = interceptor.handleRequest(context, null); assertFalse("Invalid response from interceptor", result); @@ -97,11 +96,9 @@ public class PayloadValidatingInterceptorTest extends TestCase { SoapMessage response = context.getSoapResponse(); assertTrue("Resonse has no fault", response.getSoapBody().hasFault()); Soap12Fault fault = (Soap12Fault) response.getSoapBody().getFault(); - assertEquals("Invalid fault code on fault", - SoapVersion.SOAP_12.getClientOrSenderFaultName(), + assertEquals("Invalid fault code on fault", SoapVersion.SOAP_12.getClientOrSenderFaultName(), fault.getFaultCode()); - assertEquals("Invalid fault string on fault", - PayloadValidatingInterceptor.DEFAULT_FAULTSTRING_OR_REASON, + assertEquals("Invalid fault string on fault", PayloadValidatingInterceptor.DEFAULT_FAULTSTRING_OR_REASON, fault.getFaultReasonText(Locale.ENGLISH)); assertNotNull("No Detail on fault", fault.getFaultDetail()); } @@ -119,7 +116,7 @@ public class PayloadValidatingInterceptorTest extends TestCase { InputStream inputStream = getClass().getResourceAsStream("invalidMessage.xml"); transformer.transform(new StreamSource(inputStream), new DOMResult(invalidMessage.getSOAPBody())); SaajSoapMessageContext context = - new SaajSoapMessageContext(invalidMessage, new MockTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(invalidMessage, new MockTransportRequest(), messageFactory); boolean result = interceptor.handleRequest(context, null); assertFalse("Invalid response from interceptor", result); @@ -127,8 +124,7 @@ public class PayloadValidatingInterceptorTest extends TestCase { SoapMessage response = context.getSoapResponse(); assertTrue("Resonse has no fault", response.getSoapBody().hasFault()); Soap11Fault fault = (Soap11Fault) response.getSoapBody().getFault(); - assertEquals("Invalid fault code on fault", - SoapVersion.SOAP_11.getClientOrSenderFaultName(), + assertEquals("Invalid fault code on fault", SoapVersion.SOAP_11.getClientOrSenderFaultName(), fault.getFaultCode()); assertEquals("Invalid fault string on fault", faultString, fault.getFaultString()); assertEquals("Invalid fault string locale on fault", locale, fault.getFaultStringLocale()); @@ -174,7 +170,7 @@ public class PayloadValidatingInterceptorTest extends TestCase { SOAPMessage saajMessage = SaajUtils.loadMessage(new ClassPathResource("validSoapMessage.xml", getClass()), messageFactory); SaajSoapMessageContext soapContext = - new SaajSoapMessageContext(saajMessage, new MockTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(saajMessage, new MockTransportRequest(), messageFactory); boolean result = interceptor.handleRequest(soapContext, null); assertTrue("Invalid response from interceptor", result); assertFalse("Response set", soapContext.hasResponse()); diff --git a/core/src/test/java/org/springframework/ws/soap/AbstractAttachmentTestCase.java b/core/src/test/java/org/springframework/ws/soap/AbstractAttachmentTestCase.java new file mode 100644 index 00000000..c9a861c8 --- /dev/null +++ b/core/src/test/java/org/springframework/ws/soap/AbstractAttachmentTestCase.java @@ -0,0 +1,64 @@ +/* + * Copyright 2006 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap; + +import java.io.IOException; +import java.io.InputStream; +import javax.xml.soap.SOAPException; + +import junit.framework.TestCase; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.util.FileCopyUtils; + +public abstract class AbstractAttachmentTestCase extends TestCase { + + private Attachment attachment; + + private static byte[] CONTENTS; + + private static final String CONTENT_TYPE = "text/plain"; + + protected final void setUp() throws Exception { + CONTENTS = "attachment contents".getBytes("UTF-8"); + SoapMessage message = createMessage(); + attachment = message.addAttachment(new ByteArrayResource(CONTENTS), CONTENT_TYPE); + } + + protected abstract SoapMessage createMessage() throws Exception; + + public void testGetSize() throws SOAPException { + assertTrue("Invalid size", attachment.getSize() > 0); + } + + public void testContentId() { + String id = "123"; + attachment.setId(id); + assertEquals("Invalid content id", id, attachment.getId()); + } + + public void testGetContentType() { + assertEquals("Invalid content type", CONTENT_TYPE, attachment.getContentType()); + } + + public void testGetInputStream() throws IOException { + InputStream inputStream = attachment.getInputStream(); + assertNotNull("Invalid input stream returned", inputStream); + byte[] bytes = FileCopyUtils.copyToByteArray(inputStream); + assertEquals("Invalid size", CONTENTS.length, bytes.length); + } + +} diff --git a/core/src/test/java/org/springframework/ws/soap/SoapMessageDispatcherTest.java b/core/src/test/java/org/springframework/ws/soap/SoapMessageDispatcherTest.java index 235bca62..ca3ea04f 100644 --- a/core/src/test/java/org/springframework/ws/soap/SoapMessageDispatcherTest.java +++ b/core/src/test/java/org/springframework/ws/soap/SoapMessageDispatcherTest.java @@ -28,6 +28,7 @@ import junit.framework.TestCase; import org.easymock.MockControl; import org.springframework.ws.mock.MockTransportRequest; import org.springframework.ws.soap.saaj.SaajSoapMessageContext; +import org.springframework.ws.soap.saaj.saaj13.Saaj13SoapMessageContext; import org.springframework.ws.soap.soap11.Soap11Fault; import org.springframework.ws.soap.soap12.Soap12Fault; @@ -53,7 +54,7 @@ public class SoapMessageDispatcherTest extends TestCase { header.setActor(SOAPConstants.URI_SOAP_ACTOR_NEXT); header.setMustUnderstand(true); SaajSoapMessageContext context = - new SaajSoapMessageContext(request, new MockTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(request, new MockTransportRequest(), messageFactory); interceptorMock.understands(null); interceptorControl.setMatcher(MockControl.ALWAYS_MATCHER); interceptorControl.setReturnValue(true); @@ -75,7 +76,7 @@ public class SoapMessageDispatcherTest extends TestCase { header.setMustUnderstand(true); header.setRole(SOAPConstants.URI_SOAP_1_2_ROLE_NEXT); SaajSoapMessageContext context = - new SaajSoapMessageContext(request, new MockTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(request, new MockTransportRequest(), messageFactory); interceptorMock.understands(null); interceptorControl.setMatcher(MockControl.ALWAYS_MATCHER); interceptorControl.setReturnValue(true); @@ -97,7 +98,7 @@ public class SoapMessageDispatcherTest extends TestCase { header.setActor(SOAPConstants.URI_SOAP_ACTOR_NEXT); header.setMustUnderstand(true); SaajSoapMessageContext context = - new SaajSoapMessageContext(request, new MockTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(request, new MockTransportRequest(), messageFactory); interceptorMock.understands(null); interceptorControl.setMatcher(MockControl.ALWAYS_MATCHER); interceptorControl.setReturnValue(false); @@ -112,11 +113,9 @@ public class SoapMessageDispatcherTest extends TestCase { SoapBody responseBody = context.getSoapResponse().getSoapBody(); assertTrue("Response body has no fault", responseBody.hasFault()); Soap11Fault fault = (Soap11Fault) responseBody.getFault(); - assertEquals("Invalid fault code", - new QName(SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE, "MustUnderstand"), + assertEquals("Invalid fault code", new QName(SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE, "MustUnderstand"), fault.getFaultCode()); - assertEquals("Invalid fault string", - SoapMessageDispatcher.DEFAULT_MUST_UNDERSTAND_FAULT, + assertEquals("Invalid fault string", SoapMessageDispatcher.DEFAULT_MUST_UNDERSTAND_FAULT, fault.getFaultString()); assertEquals("Invalid fault string locale", Locale.ENGLISH, fault.getFaultStringLocale()); assertEquals("Invalid fault actor", SOAPConstants.URI_SOAP_ACTOR_NEXT, fault.getFaultActorOrRole()); @@ -131,7 +130,7 @@ public class SoapMessageDispatcherTest extends TestCase { header.setMustUnderstand(true); header.setRole(SOAPConstants.URI_SOAP_1_2_ROLE_NEXT); SaajSoapMessageContext context = - new SaajSoapMessageContext(request, new MockTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(request, new MockTransportRequest(), messageFactory); interceptorMock.understands(null); interceptorControl.setMatcher(MockControl.ALWAYS_MATCHER); interceptorControl.setReturnValue(false); @@ -146,19 +145,16 @@ public class SoapMessageDispatcherTest extends TestCase { SoapBody responseBody = context.getSoapResponse().getSoapBody(); assertTrue("Response body has no fault", responseBody.hasFault()); Soap12Fault fault = (Soap12Fault) responseBody.getFault(); - assertEquals("Invalid fault code", - new QName(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "MustUnderstand"), + assertEquals("Invalid fault code", new QName(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "MustUnderstand"), fault.getFaultCode()); - assertEquals("Invalid fault string", - SoapMessageDispatcher.DEFAULT_MUST_UNDERSTAND_FAULT, + assertEquals("Invalid fault string", SoapMessageDispatcher.DEFAULT_MUST_UNDERSTAND_FAULT, fault.getFaultReasonText(Locale.ENGLISH)); assertEquals("Invalid fault actor", SOAPConstants.URI_SOAP_1_2_ROLE_NEXT, fault.getFaultActorOrRole()); SoapHeader responseHeader = context.getSoapResponse().getSoapHeader(); Iterator iterator = responseHeader.examineAllHeaderElements(); assertTrue("Response header has no elements", iterator.hasNext()); SoapHeaderElement headerElement = (SoapHeaderElement) iterator.next(); - assertEquals("No NotUnderstood header", - new QName(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "NotUnderstood"), + assertEquals("No NotUnderstood header", new QName(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "NotUnderstood"), headerElement.getName()); interceptorControl.verify(); } @@ -172,15 +168,14 @@ public class SoapMessageDispatcherTest extends TestCase { header.setActor(headerActor); header.setMustUnderstand(true); SaajSoapMessageContext context = - new SaajSoapMessageContext(request, new MockTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(request, new MockTransportRequest(), messageFactory); interceptorMock.understands(null); interceptorControl.setMatcher(MockControl.ALWAYS_MATCHER); interceptorControl.setReturnValue(true); interceptorControl.replay(); SoapEndpointInvocationChain chain = new SoapEndpointInvocationChain(new Object(), - new SoapEndpointInterceptor[]{interceptorMock}, - new String[]{headerActor}); + new SoapEndpointInterceptor[]{interceptorMock}, new String[]{headerActor}); boolean result = dispatcher.handleRequest(chain, context); assertTrue("actor-specific header not understood", result); @@ -196,15 +191,14 @@ public class SoapMessageDispatcherTest extends TestCase { header.setRole(headerRole); header.setMustUnderstand(true); SaajSoapMessageContext context = - new SaajSoapMessageContext(request, new MockTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(request, new MockTransportRequest(), messageFactory); interceptorMock.understands(null); interceptorControl.setMatcher(MockControl.ALWAYS_MATCHER); interceptorControl.setReturnValue(true); interceptorControl.replay(); SoapEndpointInvocationChain chain = new SoapEndpointInvocationChain(new Object(), - new SoapEndpointInterceptor[]{interceptorMock}, - new String[]{headerRole}); + new SoapEndpointInterceptor[]{interceptorMock}, new String[]{headerRole}); boolean result = dispatcher.handleRequest(chain, context); assertTrue("role-specific header not understood", result); @@ -216,12 +210,11 @@ public class SoapMessageDispatcherTest extends TestCase { SOAPMessage request = messageFactory.createMessage(); request.getSOAPHeader().detachNode(); SaajSoapMessageContext context = - new SaajSoapMessageContext(request, new MockTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(request, new MockTransportRequest(), messageFactory); interceptorControl.replay(); SoapEndpointInvocationChain chain = new SoapEndpointInvocationChain(new Object(), - new SoapEndpointInterceptor[]{interceptorMock}, - new String[]{"role"}); + new SoapEndpointInterceptor[]{interceptorMock}, new String[]{"role"}); boolean result = dispatcher.handleRequest(chain, context); assertTrue("Invalid result", result); diff --git a/core/src/test/java/org/springframework/ws/soap/context/AbstractSoap11MessageContextTestCase.java b/core/src/test/java/org/springframework/ws/soap/context/AbstractSoap11MessageContextTestCase.java index adef6c55..249bef84 100644 --- a/core/src/test/java/org/springframework/ws/soap/context/AbstractSoap11MessageContextTestCase.java +++ b/core/src/test/java/org/springframework/ws/soap/context/AbstractSoap11MessageContextTestCase.java @@ -35,8 +35,6 @@ public abstract class AbstractSoap11MessageContextTestCase extends AbstractSoapM InputStreamSource inputStreamSource = new ByteArrayResource("contents".getBytes("UTF-8")); messageContext.getSoapResponse().addAttachment(inputStreamSource, "text/plain"); messageContext.sendResponse(transportResponse); - assertTrue("Invalid Content-Type set", - transportResponse.getHeaders().getProperty("Content-Type").indexOf("multipart/related") != -1); assertTrue("Invalid Content-Type set", transportResponse.getHeaders().getProperty("Content-Type") .indexOf(SoapVersion.SOAP_11.getContentType()) != -1); } diff --git a/core/src/test/java/org/springframework/ws/soap/context/AbstractSoap12MessageContextTestCase.java b/core/src/test/java/org/springframework/ws/soap/context/AbstractSoap12MessageContextTestCase.java index 08bc6801..52124094 100644 --- a/core/src/test/java/org/springframework/ws/soap/context/AbstractSoap12MessageContextTestCase.java +++ b/core/src/test/java/org/springframework/ws/soap/context/AbstractSoap12MessageContextTestCase.java @@ -24,7 +24,7 @@ public abstract class AbstractSoap12MessageContextTestCase extends AbstractSoapM public void testWriteToTransportResponse() throws Exception { messageContext.getResponse(); // create response - messageContext.sendResponse(null); + messageContext.sendResponse(transportResponse); assertXMLEqual("
", transportResponse.getContents()); assertTrue("Invalid Content-Type set", transportResponse.getHeaders().getProperty("Content-Type") @@ -34,9 +34,7 @@ public abstract class AbstractSoap12MessageContextTestCase extends AbstractSoapM public void testWriteToTransportResponseAttachment() throws Exception { InputStreamSource inputStreamSource = new ByteArrayResource("contents".getBytes("UTF-8")); messageContext.getSoapResponse().addAttachment(inputStreamSource, "text/plain"); - messageContext.sendResponse(null); - assertTrue("Invalid Content-Type set", - transportResponse.getHeaders().getProperty("Content-Type").indexOf("multipart/related") != -1); + messageContext.sendResponse(transportResponse); assertTrue("Invalid Content-Type set", transportResponse.getHeaders().getProperty("Content-Type") .indexOf(SoapVersion.SOAP_12.getContentType()) != -1); } diff --git a/core/src/test/java/org/springframework/ws/soap/endpoint/SoapFaultMappingExceptionResolverTest.java b/core/src/test/java/org/springframework/ws/soap/endpoint/SoapFaultMappingExceptionResolverTest.java index 11af2477..1c42b61a 100644 --- a/core/src/test/java/org/springframework/ws/soap/endpoint/SoapFaultMappingExceptionResolverTest.java +++ b/core/src/test/java/org/springframework/ws/soap/endpoint/SoapFaultMappingExceptionResolverTest.java @@ -28,6 +28,7 @@ import org.springframework.ws.soap.SoapMessage; import org.springframework.ws.soap.SoapMessageException; import org.springframework.ws.soap.SoapVersion; import org.springframework.ws.soap.saaj.SaajSoapMessageContext; +import org.springframework.ws.soap.saaj.saaj13.Saaj13SoapMessageContext; import org.springframework.ws.soap.soap11.Soap11Fault; import org.springframework.ws.soap.soap12.Soap12Fault; @@ -41,11 +42,9 @@ public class SoapFaultMappingExceptionResolverTest extends XMLTestCase { public void testGetDepth() throws Exception { assertEquals("Invalid depth for Exception", 0, resolver.getDepth("java.lang.Exception", new Exception())); - assertEquals("Invalid depth for IllegalArgumentException", - 2, + assertEquals("Invalid depth for IllegalArgumentException", 2, resolver.getDepth("java.lang.Exception", new IllegalArgumentException())); - assertEquals("Invalid depth for IllegalStateException", - -1, + assertEquals("Invalid depth for IllegalStateException", -1, resolver.getDepth("IllegalArgumentException", new IllegalStateException())); } @@ -58,7 +57,7 @@ public class SoapFaultMappingExceptionResolverTest extends XMLTestCase { MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); SOAPMessage message = messageFactory.createMessage(); SaajSoapMessageContext context = - new SaajSoapMessageContext(message, new MockTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(message, new MockTransportRequest(), messageFactory); boolean result = resolver.resolveException(context, null, new IllegalArgumentException("bla")); assertTrue("resolveException returns false", result); @@ -66,8 +65,7 @@ public class SoapFaultMappingExceptionResolverTest extends XMLTestCase { SoapMessage response = context.getSoapResponse(); assertTrue("Resonse has no fault", response.getSoapBody().hasFault()); Soap11Fault fault = (Soap11Fault) response.getSoapBody().getFault(); - assertEquals("Invalid fault code on fault", - SoapVersion.SOAP_11.getClientOrSenderFaultName(), + assertEquals("Invalid fault code on fault", SoapVersion.SOAP_11.getClientOrSenderFaultName(), fault.getFaultCode()); assertEquals("Invalid fault string on fault", "Client error", fault.getFaultString()); assertNull("Detail on fault", fault.getFaultDetail()); @@ -82,7 +80,7 @@ public class SoapFaultMappingExceptionResolverTest extends XMLTestCase { MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL); SOAPMessage message = messageFactory.createMessage(); SaajSoapMessageContext context = - new SaajSoapMessageContext(message, new MockTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(message, new MockTransportRequest(), messageFactory); boolean result = resolver.resolveException(context, null, new IllegalArgumentException("bla")); assertTrue("resolveException returns false", result); @@ -90,8 +88,7 @@ public class SoapFaultMappingExceptionResolverTest extends XMLTestCase { SoapMessage response = context.getSoapResponse(); assertTrue("Resonse has no fault", response.getSoapBody().hasFault()); Soap12Fault fault = (Soap12Fault) response.getSoapBody().getFault(); - assertEquals("Invalid fault code on fault", - SoapVersion.SOAP_12.getClientOrSenderFaultName(), + assertEquals("Invalid fault code on fault", SoapVersion.SOAP_12.getClientOrSenderFaultName(), fault.getFaultCode()); assertEquals("Invalid fault string on fault", "Sender error", fault.getFaultReasonText(Locale.ENGLISH)); assertNull("Detail on fault", fault.getFaultDetail()); @@ -106,7 +103,7 @@ public class SoapFaultMappingExceptionResolverTest extends XMLTestCase { MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); SOAPMessage message = messageFactory.createMessage(); SaajSoapMessageContext context = - new SaajSoapMessageContext(message, new MockTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(message, new MockTransportRequest(), messageFactory); boolean result = resolver.resolveException(context, null, new IllegalArgumentException("bla")); assertTrue("resolveException returns false", result); @@ -114,8 +111,7 @@ public class SoapFaultMappingExceptionResolverTest extends XMLTestCase { SoapMessage response = context.getSoapResponse(); assertTrue("Resonse has no fault", response.getSoapBody().hasFault()); Soap11Fault fault = (Soap11Fault) response.getSoapBody().getFault(); - assertEquals("Invalid fault code on fault", - SoapVersion.SOAP_11.getServerOrReceiverFaultName(), + assertEquals("Invalid fault code on fault", SoapVersion.SOAP_11.getServerOrReceiverFaultName(), fault.getFaultCode()); assertEquals("Invalid fault string on fault", "Server error", fault.getFaultString()); assertNull("Detail on fault", fault.getFaultDetail()); @@ -130,7 +126,7 @@ public class SoapFaultMappingExceptionResolverTest extends XMLTestCase { MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL); SOAPMessage message = messageFactory.createMessage(); SaajSoapMessageContext context = - new SaajSoapMessageContext(message, new MockTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(message, new MockTransportRequest(), messageFactory); boolean result = resolver.resolveException(context, null, new IllegalArgumentException("bla")); assertTrue("resolveException returns false", result); @@ -138,8 +134,7 @@ public class SoapFaultMappingExceptionResolverTest extends XMLTestCase { SoapMessage response = context.getSoapResponse(); assertTrue("Resonse has no fault", response.getSoapBody().hasFault()); Soap12Fault fault = (Soap12Fault) response.getSoapBody().getFault(); - assertEquals("Invalid fault code on fault", - SoapVersion.SOAP_12.getServerOrReceiverFaultName(), + assertEquals("Invalid fault code on fault", SoapVersion.SOAP_12.getServerOrReceiverFaultName(), fault.getFaultCode()); assertEquals("Invalid fault string on fault", "Receiver error", fault.getFaultReasonText(Locale.ENGLISH)); assertNull("Detail on fault", fault.getFaultDetail()); @@ -156,7 +151,7 @@ public class SoapFaultMappingExceptionResolverTest extends XMLTestCase { MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); SOAPMessage message = messageFactory.createMessage(); SaajSoapMessageContext context = - new SaajSoapMessageContext(message, new MockTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(message, new MockTransportRequest(), messageFactory); boolean result = resolver.resolveException(context, null, new IllegalArgumentException("bla")); assertTrue("resolveException returns false", result); @@ -164,8 +159,7 @@ public class SoapFaultMappingExceptionResolverTest extends XMLTestCase { SoapMessage response = context.getSoapResponse(); assertTrue("Resonse has no fault", response.getSoapBody().hasFault()); Soap11Fault fault = (Soap11Fault) response.getSoapBody().getFault(); - assertEquals("Invalid fault code on fault", - SoapVersion.SOAP_11.getClientOrSenderFaultName(), + assertEquals("Invalid fault code on fault", SoapVersion.SOAP_11.getClientOrSenderFaultName(), fault.getFaultCode()); assertEquals("Invalid fault string on fault", "faultstring", fault.getFaultString()); assertNull("Detail on fault", fault.getFaultDetail()); diff --git a/core/src/test/java/org/springframework/ws/soap/endpoint/interceptor/SoapEnvelopeLoggingInterceptorTest.java b/core/src/test/java/org/springframework/ws/soap/endpoint/interceptor/SoapEnvelopeLoggingInterceptorTest.java index 83539e57..e21908ac 100644 --- a/core/src/test/java/org/springframework/ws/soap/endpoint/interceptor/SoapEnvelopeLoggingInterceptorTest.java +++ b/core/src/test/java/org/springframework/ws/soap/endpoint/interceptor/SoapEnvelopeLoggingInterceptorTest.java @@ -27,6 +27,7 @@ import org.apache.log4j.Logger; import org.apache.log4j.spi.LoggingEvent; import org.springframework.ws.mock.MockTransportRequest; import org.springframework.ws.soap.saaj.SaajSoapMessageContext; +import org.springframework.ws.soap.saaj.saaj13.Saaj13SoapMessageContext; public class SoapEnvelopeLoggingInterceptorTest extends TestCase { @@ -43,7 +44,7 @@ public class SoapEnvelopeLoggingInterceptorTest extends TestCase { Logger.getRootLogger().setLevel(Level.DEBUG); MessageFactory messageFactory = MessageFactory.newInstance(); SOAPMessage saajMessage = messageFactory.createMessage(); - messageContext = new SaajSoapMessageContext(saajMessage, new MockTransportRequest(), messageFactory); + messageContext = new Saaj13SoapMessageContext(saajMessage, new MockTransportRequest(), messageFactory); appender.reset(); } diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/SaajAttachmentTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/SaajAttachmentTest.java deleted file mode 100644 index e88cb174..00000000 --- a/core/src/test/java/org/springframework/ws/soap/saaj/SaajAttachmentTest.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2006 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.saaj; - -import java.io.IOException; -import java.io.InputStream; -import javax.xml.soap.AttachmentPart; -import javax.xml.soap.MessageFactory; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPMessage; - -import junit.framework.TestCase; -import org.springframework.util.FileCopyUtils; -import org.springframework.ws.soap.Attachment; - -/** - * @author Arjen Poutsma - */ -public class SaajAttachmentTest extends TestCase { - - private static final String CONTENTS = "attachment contents"; - - private static final String CONTENT_ID = "contentId"; - - private AttachmentPart saajAttachment; - - private Attachment attachment; - - protected void setUp() throws Exception { - MessageFactory messageFactory = MessageFactory.newInstance(); - SOAPMessage saajMessage = messageFactory.createMessage(); - saajAttachment = saajMessage.createAttachmentPart(CONTENTS, "text/plain"); - saajAttachment.setContentId(CONTENT_ID); - saajMessage.addAttachmentPart(saajAttachment); - SaajSoapMessage saajSoapMessage = new SaajSoapMessage(saajMessage); - attachment = saajSoapMessage.getAttachment(CONTENT_ID); - } - - public void testGetSize() throws SOAPException { - assertEquals("Invalid size", saajAttachment.getSize(), attachment.getSize()); - } - - public void testContentId() { - assertEquals("Invalid content id", CONTENT_ID, attachment.getId()); - String id = "123"; - attachment.setId(id); - assertEquals("Invalid content id", id, attachment.getId()); - } - - public void testGetContentType() { - assertEquals("Invalid content type", "text/plain", attachment.getContentType()); - } - - public void testGetInputStream() throws IOException { - InputStream inputStream = attachment.getInputStream(); - assertNotNull("Invalid input stream returned", inputStream); - byte[] bytes = FileCopyUtils.copyToByteArray(inputStream); - assertEquals("Invalid size", CONTENTS.getBytes().length, bytes.length); - } - - public void testGetEmptyInputStream() throws IOException { - saajAttachment.clearContent(); - InputStream inputStream = attachment.getInputStream(); - assertNotNull("Invalid input stream returned", inputStream); - byte[] bytes = FileCopyUtils.copyToByteArray(inputStream); - assertEquals("Invalid size", 0, bytes.length); - } -} diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11MessageTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11MessageTestCase.java similarity index 84% rename from core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11MessageTest.java rename to core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11MessageTestCase.java index cc70b0bb..e5673544 100644 --- a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11MessageTest.java +++ b/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11MessageTestCase.java @@ -1,5 +1,5 @@ /* - * Copyright 2005 the original author or authors. + * Copyright 2006 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. @@ -17,6 +17,7 @@ package org.springframework.ws.soap.saaj; import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPConstants; import javax.xml.soap.SOAPMessage; import javax.xml.transform.Result; import javax.xml.transform.Source; @@ -26,16 +27,18 @@ import org.springframework.ws.soap.soap11.AbstractSoap11MessageTestCase; import org.springframework.xml.transform.StringResult; import org.springframework.xml.transform.StringSource; -public class SaajSoap11MessageTest extends AbstractSoap11MessageTestCase { +public abstract class SaajSoap11MessageTestCase extends AbstractSoap11MessageTestCase { private SOAPMessage saajMessage; - protected SoapMessage createSoapMessage() throws Exception { - MessageFactory messageFactory = MessageFactory.newInstance(); + protected final SoapMessage createSoapMessage() throws Exception { + MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); saajMessage = messageFactory.createMessage(); - return new SaajSoapMessage(saajMessage); + return createSaajSoapMessage(saajMessage); } + protected abstract SaajSoapMessage createSaajSoapMessage(SOAPMessage saajMessage); + public void testGetPayloadSource() throws Exception { saajMessage.getSOAPBody().addChildElement("child"); Source source = soapMessage.getPayloadSource(); @@ -61,4 +64,4 @@ public class SaajSoap11MessageTest extends AbstractSoap11MessageTestCase { assertEquals("Invalid child node created", "child", saajMessage.getSOAPBody().getFirstChild().getLocalName()); } -} \ No newline at end of file +} diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap12BodyTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap12BodyTest.java deleted file mode 100644 index fad7ee40..00000000 --- a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap12BodyTest.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.springframework.ws.soap.saaj; - -import javax.xml.soap.MessageFactory; -import javax.xml.soap.SOAPConstants; -import javax.xml.soap.SOAPMessage; - -import org.springframework.ws.soap.SoapBody; -import org.springframework.ws.soap.soap12.AbstractSoap12BodyTestCase; - -public class SaajSoap12BodyTest extends AbstractSoap12BodyTestCase { - - protected SoapBody createSoapBody() throws Exception { - MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL); - SOAPMessage saajMessage = messageFactory.createMessage(); - saajMessage.getSOAPPart().getEnvelope().setPrefix("soapenv"); - SaajSoapMessage saajSoapMessage = new SaajSoapMessage(saajMessage); - return saajSoapMessage.getSoapBody(); - } - -} diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap12EnvelopeTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap12EnvelopeTest.java deleted file mode 100644 index ae671dbf..00000000 --- a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap12EnvelopeTest.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.springframework.ws.soap.saaj; - -import javax.xml.soap.MessageFactory; -import javax.xml.soap.SOAPConstants; -import javax.xml.soap.SOAPMessage; - -import org.springframework.ws.soap.SoapEnvelope; -import org.springframework.ws.soap.soap12.AbstractSoap12EnvelopeTestCase; - -public class SaajSoap12EnvelopeTest extends AbstractSoap12EnvelopeTestCase { - - protected SoapEnvelope createSoapEnvelope() throws Exception { - MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL); - SOAPMessage saajMessage = messageFactory.createMessage(); - SaajSoapMessage saajSoapMessage = new SaajSoapMessage(saajMessage); - return saajSoapMessage.getEnvelope(); - } -} diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap12HeaderTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap12HeaderTest.java deleted file mode 100644 index fe5d8aff..00000000 --- a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap12HeaderTest.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.springframework.ws.soap.saaj; - -import javax.xml.soap.MessageFactory; -import javax.xml.soap.SOAPConstants; -import javax.xml.soap.SOAPMessage; - -import org.springframework.ws.soap.SoapHeader; -import org.springframework.ws.soap.soap12.AbstractSoap12HeaderTestCase; - -public class SaajSoap12HeaderTest extends AbstractSoap12HeaderTestCase { - - protected SoapHeader createSoapHeader() throws Exception { - MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL); - SOAPMessage saajMessage = messageFactory.createMessage(); - SaajSoapMessage saajSoapMessage = new SaajSoapMessage(saajMessage); - return saajSoapMessage.getSoapHeader(); - } -} diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12AttachmentTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12AttachmentTest.java new file mode 100644 index 00000000..568dc638 --- /dev/null +++ b/core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12AttachmentTest.java @@ -0,0 +1,33 @@ +/* + * Copyright 2006 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap.saaj.saaj12; + +import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPConstants; +import javax.xml.soap.SOAPMessage; + +import org.springframework.ws.soap.AbstractAttachmentTestCase; +import org.springframework.ws.soap.SoapMessage; + +public class Saaj12AttachmentTest extends AbstractAttachmentTestCase { + + protected SoapMessage createMessage() throws Exception { + MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); + SOAPMessage saajMessage = messageFactory.createMessage(); + return new Saaj12SoapMessage(saajMessage); + } +} diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11BodyTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11BodyTest.java similarity index 79% rename from core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11BodyTest.java rename to core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11BodyTest.java index 12bbaab5..e370baa2 100644 --- a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11BodyTest.java +++ b/core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11BodyTest.java @@ -14,21 +14,21 @@ * limitations under the License. */ -package org.springframework.ws.soap.saaj; +package org.springframework.ws.soap.saaj.saaj12; import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPConstants; import javax.xml.soap.SOAPMessage; import org.springframework.ws.soap.SoapBody; import org.springframework.ws.soap.soap11.AbstractSoap11BodyTestCase; -public class SaajSoap11BodyTest extends AbstractSoap11BodyTestCase { +public class Saaj12Soap11BodyTest extends AbstractSoap11BodyTestCase { protected SoapBody createSoapBody() throws Exception { - MessageFactory messageFactory = MessageFactory.newInstance(); + MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); SOAPMessage saajMessage = messageFactory.createMessage(); - SaajSoapMessage saajSoapMessage = new SaajSoapMessage(saajMessage); - return saajSoapMessage.getSoapBody(); + return new Saaj12Soap11Body(saajMessage.getSOAPBody()); } } diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11EnvelopeTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11EnvelopeTest.java similarity index 78% rename from core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11EnvelopeTest.java rename to core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11EnvelopeTest.java index 8a5e47dc..32783922 100644 --- a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11EnvelopeTest.java +++ b/core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11EnvelopeTest.java @@ -14,20 +14,20 @@ * limitations under the License. */ -package org.springframework.ws.soap.saaj; +package org.springframework.ws.soap.saaj.saaj12; import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPConstants; import javax.xml.soap.SOAPMessage; import org.springframework.ws.soap.SoapEnvelope; import org.springframework.ws.soap.soap11.AbstractSoap11EnvelopeTestCase; -public class SaajSoap11EnvelopeTest extends AbstractSoap11EnvelopeTestCase { +public class Saaj12Soap11EnvelopeTest extends AbstractSoap11EnvelopeTestCase { protected SoapEnvelope createSoapEnvelope() throws Exception { - MessageFactory messageFactory = MessageFactory.newInstance(); + MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); SOAPMessage saajMessage = messageFactory.createMessage(); - SaajSoapMessage saajSoapMessage = new SaajSoapMessage(saajMessage); - return saajSoapMessage.getEnvelope(); + return new Saaj12SoapEnvelope(saajMessage.getSOAPPart().getEnvelope()); } } diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11HeaderTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11HeaderTest.java similarity index 79% rename from core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11HeaderTest.java rename to core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11HeaderTest.java index 0cb04fac..4e7a946d 100644 --- a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11HeaderTest.java +++ b/core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11HeaderTest.java @@ -14,20 +14,20 @@ * limitations under the License. */ -package org.springframework.ws.soap.saaj; +package org.springframework.ws.soap.saaj.saaj12; import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPConstants; import javax.xml.soap.SOAPMessage; import org.springframework.ws.soap.SoapHeader; import org.springframework.ws.soap.soap11.AbstractSoap11HeaderTestCase; -public class SaajSoap11HeaderTest extends AbstractSoap11HeaderTestCase { +public class Saaj12Soap11HeaderTest extends AbstractSoap11HeaderTestCase { protected SoapHeader createSoapHeader() throws Exception { - MessageFactory messageFactory = MessageFactory.newInstance(); + MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); SOAPMessage saajMessage = messageFactory.createMessage(); - SaajSoapMessage saajSoapMessage = new SaajSoapMessage(saajMessage); - return saajSoapMessage.getSoapHeader(); + return new Saaj12SoapHeader(saajMessage.getSOAPHeader()); } } diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11MessageContextTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11MessageContextTest.java similarity index 82% rename from core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11MessageContextTest.java rename to core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11MessageContextTest.java index 8301b402..15b2e0f5 100644 --- a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap11MessageContextTest.java +++ b/core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11MessageContextTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ws.soap.saaj; +package org.springframework.ws.soap.saaj.saaj12; import javax.xml.soap.MessageFactory; import javax.xml.soap.SOAPConstants; @@ -24,10 +24,10 @@ import org.springframework.ws.soap.context.AbstractSoap11MessageContextTestCase; import org.springframework.ws.soap.context.SoapMessageContext; import org.springframework.ws.transport.TransportRequest; -public class SaajSoap11MessageContextTest extends AbstractSoap11MessageContextTestCase { +public class Saaj12Soap11MessageContextTest extends AbstractSoap11MessageContextTestCase { protected SoapMessageContext createMessageContext(TransportRequest transportRequest) throws SOAPException { MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); - return new SaajSoapMessageContext(messageFactory.createMessage(), transportRequest, messageFactory); + return new Saaj12SoapMessageContext(messageFactory.createMessage(), transportRequest, messageFactory); } } diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11MessageTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11MessageTest.java new file mode 100644 index 00000000..f61400cc --- /dev/null +++ b/core/src/test/java/org/springframework/ws/soap/saaj/saaj12/Saaj12Soap11MessageTest.java @@ -0,0 +1,30 @@ +/* + * Copyright 2005 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap.saaj.saaj12; + +import javax.xml.soap.SOAPMessage; + +import org.springframework.ws.soap.saaj.SaajSoap11MessageTestCase; +import org.springframework.ws.soap.saaj.SaajSoapMessage; + +public class Saaj12Soap11MessageTest extends SaajSoap11MessageTestCase { + + protected SaajSoapMessage createSaajSoapMessage(SOAPMessage saajMessage) { + return new Saaj12SoapMessage(saajMessage); + } + +} \ No newline at end of file diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13AttachmentTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13AttachmentTest.java new file mode 100644 index 00000000..aa10ae36 --- /dev/null +++ b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13AttachmentTest.java @@ -0,0 +1,33 @@ +/* + * Copyright 2006 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap.saaj.saaj13; + +import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPConstants; +import javax.xml.soap.SOAPMessage; + +import org.springframework.ws.soap.AbstractAttachmentTestCase; +import org.springframework.ws.soap.SoapMessage; + +public class Saaj13AttachmentTest extends AbstractAttachmentTestCase { + + protected SoapMessage createMessage() throws Exception { + MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); + SOAPMessage saajMessage = messageFactory.createMessage(); + return new Saaj13SoapMessage(saajMessage); + } +} diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11BodyTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11BodyTest.java new file mode 100644 index 00000000..e992d790 --- /dev/null +++ b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11BodyTest.java @@ -0,0 +1,34 @@ +/* + * Copyright 2006 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap.saaj.saaj13; + +import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPConstants; +import javax.xml.soap.SOAPMessage; + +import org.springframework.ws.soap.SoapBody; +import org.springframework.ws.soap.soap11.AbstractSoap11BodyTestCase; + +public class Saaj13Soap11BodyTest extends AbstractSoap11BodyTestCase { + + protected SoapBody createSoapBody() throws Exception { + MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); + SOAPMessage saajMessage = messageFactory.createMessage(); + return new Saaj13Soap11Body(saajMessage.getSOAPBody()); + } + +} diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11EnvelopeTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11EnvelopeTest.java new file mode 100644 index 00000000..be11a522 --- /dev/null +++ b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11EnvelopeTest.java @@ -0,0 +1,33 @@ +/* + * Copyright 2006 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap.saaj.saaj13; + +import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPConstants; +import javax.xml.soap.SOAPMessage; + +import org.springframework.ws.soap.SoapEnvelope; +import org.springframework.ws.soap.soap11.AbstractSoap11EnvelopeTestCase; + +public class Saaj13Soap11EnvelopeTest extends AbstractSoap11EnvelopeTestCase { + + protected SoapEnvelope createSoapEnvelope() throws Exception { + MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); + SOAPMessage saajMessage = messageFactory.createMessage(); + return new Saaj13SoapEnvelope(saajMessage.getSOAPPart().getEnvelope()); + } +} diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11HeaderTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11HeaderTest.java new file mode 100644 index 00000000..a9ea39ff --- /dev/null +++ b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11HeaderTest.java @@ -0,0 +1,33 @@ +/* + * Copyright 2006 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap.saaj.saaj13; + +import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPConstants; +import javax.xml.soap.SOAPMessage; + +import org.springframework.ws.soap.SoapHeader; +import org.springframework.ws.soap.soap11.AbstractSoap11HeaderTestCase; + +public class Saaj13Soap11HeaderTest extends AbstractSoap11HeaderTestCase { + + protected SoapHeader createSoapHeader() throws Exception { + MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); + SOAPMessage saajMessage = messageFactory.createMessage(); + return new Saaj13SoapHeader(saajMessage.getSOAPHeader()); + } +} diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11MessageContextTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11MessageContextTest.java new file mode 100644 index 00000000..0b55d54a --- /dev/null +++ b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11MessageContextTest.java @@ -0,0 +1,33 @@ +/* + * Copyright 2006 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap.saaj.saaj13; + +import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPConstants; +import javax.xml.soap.SOAPException; + +import org.springframework.ws.soap.context.AbstractSoap11MessageContextTestCase; +import org.springframework.ws.soap.context.SoapMessageContext; +import org.springframework.ws.transport.TransportRequest; + +public class Saaj13Soap11MessageContextTest extends AbstractSoap11MessageContextTestCase { + + protected SoapMessageContext createMessageContext(TransportRequest transportRequest) throws SOAPException { + MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); + return new Saaj13SoapMessageContext(messageFactory.createMessage(), transportRequest, messageFactory); + } +} diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11MessageTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11MessageTest.java new file mode 100644 index 00000000..25bd629e --- /dev/null +++ b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap11MessageTest.java @@ -0,0 +1,30 @@ +/* + * Copyright 2006 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap.saaj.saaj13; + +import javax.xml.soap.SOAPMessage; + +import org.springframework.ws.soap.saaj.SaajSoap11MessageTestCase; +import org.springframework.ws.soap.saaj.SaajSoapMessage; + +public class Saaj13Soap11MessageTest extends SaajSoap11MessageTestCase { + + protected SaajSoapMessage createSaajSoapMessage(SOAPMessage saajMessage) { + return new Saaj13SoapMessage(saajMessage); + } + +} diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12BodyTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12BodyTest.java new file mode 100644 index 00000000..0ad1e42b --- /dev/null +++ b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12BodyTest.java @@ -0,0 +1,34 @@ +/* + * Copyright 2006 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap.saaj.saaj13; + +import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPConstants; +import javax.xml.soap.SOAPMessage; + +import org.springframework.ws.soap.SoapBody; +import org.springframework.ws.soap.soap12.AbstractSoap12BodyTestCase; + +public class Saaj13Soap12BodyTest extends AbstractSoap12BodyTestCase { + + protected SoapBody createSoapBody() throws Exception { + MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL); + SOAPMessage saajMessage = messageFactory.createMessage(); + return new Saaj13Soap12Body(saajMessage.getSOAPBody()); + } + +} diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12EnvelopeTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12EnvelopeTest.java new file mode 100644 index 00000000..fc17f573 --- /dev/null +++ b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12EnvelopeTest.java @@ -0,0 +1,33 @@ +/* + * Copyright 2006 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap.saaj.saaj13; + +import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPConstants; +import javax.xml.soap.SOAPMessage; + +import org.springframework.ws.soap.SoapEnvelope; +import org.springframework.ws.soap.soap12.AbstractSoap12EnvelopeTestCase; + +public class Saaj13Soap12EnvelopeTest extends AbstractSoap12EnvelopeTestCase { + + protected SoapEnvelope createSoapEnvelope() throws Exception { + MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL); + SOAPMessage saajMessage = messageFactory.createMessage(); + return new Saaj13SoapEnvelope(saajMessage.getSOAPPart().getEnvelope()); + } +} diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12HeaderTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12HeaderTest.java new file mode 100644 index 00000000..1e4f8473 --- /dev/null +++ b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12HeaderTest.java @@ -0,0 +1,33 @@ +/* + * Copyright 2006 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap.saaj.saaj13; + +import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPConstants; +import javax.xml.soap.SOAPMessage; + +import org.springframework.ws.soap.SoapHeader; +import org.springframework.ws.soap.soap12.AbstractSoap12HeaderTestCase; + +public class Saaj13Soap12HeaderTest extends AbstractSoap12HeaderTestCase { + + protected SoapHeader createSoapHeader() throws Exception { + MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL); + SOAPMessage saajMessage = messageFactory.createMessage(); + return new Saaj13Soap12Header(saajMessage.getSOAPHeader()); + } +} diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12MessageContextTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12MessageContextTest.java new file mode 100644 index 00000000..8f2761ef --- /dev/null +++ b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12MessageContextTest.java @@ -0,0 +1,33 @@ +/* + * Copyright 2006 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.soap.saaj.saaj13; + +import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPConstants; +import javax.xml.soap.SOAPException; + +import org.springframework.ws.soap.context.AbstractSoap12MessageContextTestCase; +import org.springframework.ws.soap.context.SoapMessageContext; +import org.springframework.ws.transport.TransportRequest; + +public class Saaj13Soap12MessageContextTest extends AbstractSoap12MessageContextTestCase { + + protected SoapMessageContext createMessageContext(TransportRequest transportRequest) throws SOAPException { + MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL); + return new Saaj13SoapMessageContext(messageFactory.createMessage(), transportRequest, messageFactory); + } +} diff --git a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap12MessageTest.java b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12MessageTest.java similarity index 91% rename from core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap12MessageTest.java rename to core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12MessageTest.java index 7edf10bc..23aee4bf 100644 --- a/core/src/test/java/org/springframework/ws/soap/saaj/SaajSoap12MessageTest.java +++ b/core/src/test/java/org/springframework/ws/soap/saaj/saaj13/Saaj13Soap12MessageTest.java @@ -1,4 +1,4 @@ -package org.springframework.ws.soap.saaj; +package org.springframework.ws.soap.saaj.saaj13; import javax.xml.soap.MessageFactory; import javax.xml.soap.SOAPConstants; @@ -11,14 +11,14 @@ import org.springframework.ws.soap.soap12.AbstractSoap12MessageTestCase; import org.springframework.xml.transform.StringResult; import org.springframework.xml.transform.StringSource; -public class SaajSoap12MessageTest extends AbstractSoap12MessageTestCase { +public class Saaj13Soap12MessageTest extends AbstractSoap12MessageTestCase { private SOAPMessage saajMessage; protected SoapMessage createSoapMessage() throws Exception { MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL); saajMessage = messageFactory.createMessage(); - return new SaajSoapMessage(saajMessage); + return new Saaj13SoapMessage(saajMessage); } public void testGetPayloadSource() throws Exception { diff --git a/security/src/test/java/org/springframework/ws/soap/security/xwss/XwsSecurityInterceptorTest.java b/security/src/test/java/org/springframework/ws/soap/security/xwss/XwsSecurityInterceptorTest.java index 40faba67..92b73b63 100644 --- a/security/src/test/java/org/springframework/ws/soap/security/xwss/XwsSecurityInterceptorTest.java +++ b/security/src/test/java/org/springframework/ws/soap/security/xwss/XwsSecurityInterceptorTest.java @@ -25,8 +25,9 @@ import javax.xml.soap.SOAPMessage; import junit.framework.TestCase; import org.springframework.ws.soap.saaj.SaajSoapMessageContext; -import org.springframework.ws.transport.TransportRequest; +import org.springframework.ws.soap.saaj.saaj13.Saaj13SoapMessageContext; import org.springframework.ws.transport.TransportException; +import org.springframework.ws.transport.TransportRequest; public class XwsSecurityInterceptorTest extends TestCase { @@ -52,7 +53,7 @@ public class XwsSecurityInterceptorTest extends TestCase { }; SaajSoapMessageContext context = - new SaajSoapMessageContext(request, new DummyTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(request, new DummyTransportRequest(), messageFactory); interceptor.handleRequest(context, null); assertEquals("Invalid request", validatedRequest, context.getSaajRequest()); } @@ -74,7 +75,7 @@ public class XwsSecurityInterceptorTest extends TestCase { }; SOAPMessage request = messageFactory.createMessage(); SaajSoapMessageContext context = - new SaajSoapMessageContext(request, new DummyTransportRequest(), messageFactory); + new Saaj13SoapMessageContext(request, new DummyTransportRequest(), messageFactory); context.setSaajResponse(response); interceptor.handleResponse(context, null); assertEquals("Invalid response", securedResponse, context.getSaajResponse());