Starting on SAAJ 1.1 support.
This commit is contained in:
@@ -27,7 +27,6 @@ import javax.activation.DataSource;
|
||||
import javax.activation.FileDataSource;
|
||||
import javax.xml.soap.AttachmentPart;
|
||||
import javax.xml.soap.MimeHeaders;
|
||||
import javax.xml.soap.SOAPEnvelope;
|
||||
import javax.xml.soap.SOAPException;
|
||||
import javax.xml.soap.SOAPMessage;
|
||||
|
||||
@@ -73,18 +72,12 @@ public abstract class SaajSoapMessage extends AbstractSoapMessage {
|
||||
|
||||
public final SoapEnvelope getEnvelope() {
|
||||
if (envelope == null) {
|
||||
try {
|
||||
SOAPEnvelope saajEnvelope = saajMessage.getSOAPPart().getEnvelope();
|
||||
envelope = createSaajSoapEnvelope(saajEnvelope);
|
||||
}
|
||||
catch (SOAPException ex) {
|
||||
throw new SaajSoapEnvelopeException(ex);
|
||||
}
|
||||
envelope = createSaajSoapEnvelope(saajMessage);
|
||||
}
|
||||
return envelope;
|
||||
}
|
||||
|
||||
protected abstract SoapEnvelope createSaajSoapEnvelope(SOAPEnvelope saajEnvelope);
|
||||
protected abstract SoapEnvelope createSaajSoapEnvelope(SOAPMessage saajMessage);
|
||||
|
||||
public final void writeTo(OutputStream outputStream) throws IOException {
|
||||
try {
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
/*
|
||||
* 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.saaj11;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Locale;
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.soap.Name;
|
||||
import javax.xml.soap.SOAPBody;
|
||||
import javax.xml.soap.SOAPBodyElement;
|
||||
import javax.xml.soap.SOAPElement;
|
||||
import javax.xml.soap.SOAPEnvelope;
|
||||
import javax.xml.soap.SOAPException;
|
||||
import javax.xml.soap.SOAPFault;
|
||||
import javax.xml.transform.Result;
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.dom.DOMResult;
|
||||
import javax.xml.transform.sax.SAXSource;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.ws.soap.SoapFault;
|
||||
import org.springframework.ws.soap.saaj.SaajSoapFaultException;
|
||||
import org.springframework.ws.soap.saaj.support.SaajUtils;
|
||||
import org.springframework.ws.soap.soap11.Soap11Body;
|
||||
import org.springframework.ws.soap.soap11.Soap11Fault;
|
||||
import org.xml.sax.InputSource;
|
||||
|
||||
class Saaj11Soap11Body extends Saaj11SoapElement implements Soap11Body {
|
||||
|
||||
public Saaj11Soap11Body(SOAPElement saajElement) {
|
||||
super(saajElement);
|
||||
}
|
||||
|
||||
public Soap11Fault addFault(QName faultCode, String faultString, Locale faultStringLocale) {
|
||||
Assert.notNull(faultCode, "No faultCode given");
|
||||
Assert.hasLength(faultString, "faultString cannot be empty");
|
||||
if (!StringUtils.hasLength(faultCode.getNamespaceURI())) {
|
||||
throw new IllegalArgumentException(
|
||||
"A fault code with namespace and local part must be specific for a custom fault code");
|
||||
}
|
||||
try {
|
||||
Name name = SaajUtils.toName(faultCode, getSaajBody(), getEnvelope());
|
||||
getSaajBody().removeContents();
|
||||
SOAPFault saajFault;
|
||||
if (faultStringLocale == null) {
|
||||
saajFault = getSaajBody().addFault(name, faultString);
|
||||
}
|
||||
else {
|
||||
saajFault = getSaajBody().addFault(name, faultString, faultStringLocale);
|
||||
}
|
||||
return new Saaj11Soap11Fault(saajFault);
|
||||
}
|
||||
catch (SOAPException ex) {
|
||||
throw new SaajSoapFaultException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
public SoapFault addVersionMismatchFault(String faultString, Locale locale) {
|
||||
return addStandardFault("VersionMismatch", faultString, locale);
|
||||
}
|
||||
|
||||
public SoapFault getFault() {
|
||||
return new Saaj11Soap11Fault(getSaajBody().getFault());
|
||||
}
|
||||
|
||||
public final Result getPayloadResult() {
|
||||
getSaajBody().removeContents();
|
||||
return new DOMResult(getSaajBody());
|
||||
}
|
||||
|
||||
public final Source getPayloadSource() {
|
||||
SOAPBodyElement payloadElement = getPayloadElement();
|
||||
return payloadElement != null ? new SAXSource(new Saaj12XmlReader(payloadElement), new InputSource()) : null;
|
||||
}
|
||||
|
||||
public final boolean hasFault() {
|
||||
return getSaajBody().hasFault();
|
||||
}
|
||||
|
||||
private Soap11Fault addStandardFault(String localName, String faultString, Locale locale) {
|
||||
try {
|
||||
Name faultCode = getEnvelope()
|
||||
.createName(localName, getSaajBody().getElementName().getPrefix(),
|
||||
getSaajBody().getElementName().getURI());
|
||||
getSaajBody().removeContents();
|
||||
SOAPFault saajFault;
|
||||
if (locale == null) {
|
||||
saajFault = getSaajBody().addFault(faultCode, faultString);
|
||||
}
|
||||
else {
|
||||
saajFault = getSaajBody().addFault(faultCode, faultString, locale);
|
||||
}
|
||||
return new Saaj11Soap11Fault(saajFault);
|
||||
}
|
||||
catch (SOAPException ex) {
|
||||
throw new SaajSoapFaultException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
private SOAPEnvelope getEnvelope() {
|
||||
return (SOAPEnvelope) getSaajBody().getParentElement();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the payload of the wrapped SAAJ message as a single DOM element. The payload of a message is the
|
||||
* contents of the SOAP body.
|
||||
*
|
||||
* @return the message payload, or <code>null</code> if none is set.
|
||||
*/
|
||||
private SOAPBodyElement getPayloadElement() {
|
||||
for (Iterator iterator = getSaajBody().getChildElements(); iterator.hasNext();) {
|
||||
Object child = iterator.next();
|
||||
if (child instanceof SOAPBodyElement) {
|
||||
return (SOAPBodyElement) child;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected final SOAPBody getSaajBody() {
|
||||
return (SOAPBody) getSaajElement();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
/*
|
||||
* 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.saaj11;
|
||||
|
||||
import java.util.Locale;
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.soap.SOAPFault;
|
||||
import javax.xml.transform.Source;
|
||||
|
||||
import org.springframework.ws.soap.SoapFaultDetail;
|
||||
import org.springframework.ws.soap.soap11.Soap11Fault;
|
||||
|
||||
/**
|
||||
* @author Arjen Poutsma
|
||||
*/
|
||||
public class Saaj11Soap11Fault implements Soap11Fault {
|
||||
|
||||
public Saaj11Soap11Fault(SOAPFault saajFault) {
|
||||
}
|
||||
|
||||
public String getFaultString() {
|
||||
//TODO implement
|
||||
throw new UnsupportedOperationException("Not implemented");
|
||||
}
|
||||
|
||||
public Locale getFaultStringLocale() {
|
||||
//TODO implement
|
||||
throw new UnsupportedOperationException("Not implemented");
|
||||
}
|
||||
|
||||
public QName getFaultCode() {
|
||||
//TODO implement
|
||||
throw new UnsupportedOperationException("Not implemented");
|
||||
}
|
||||
|
||||
public String getFaultActorOrRole() {
|
||||
//TODO implement
|
||||
throw new UnsupportedOperationException("Not implemented");
|
||||
}
|
||||
|
||||
public void setFaultActorOrRole(String faultActor) {
|
||||
//TODO implement
|
||||
throw new UnsupportedOperationException("Not implemented");
|
||||
}
|
||||
|
||||
public SoapFaultDetail getFaultDetail() {
|
||||
//TODO implement
|
||||
throw new UnsupportedOperationException("Not implemented");
|
||||
}
|
||||
|
||||
public SoapFaultDetail addFaultDetail() {
|
||||
//TODO implement
|
||||
throw new UnsupportedOperationException("Not implemented");
|
||||
}
|
||||
|
||||
public QName getName() {
|
||||
//TODO implement
|
||||
throw new UnsupportedOperationException("Not implemented");
|
||||
}
|
||||
|
||||
public Source getSource() {
|
||||
//TODO implement
|
||||
throw new UnsupportedOperationException("Not implemented");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* 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.saaj11;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.soap.SOAPElement;
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.sax.SAXSource;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.ws.soap.SoapElement;
|
||||
import org.springframework.ws.soap.saaj.support.SaajUtils;
|
||||
import org.xml.sax.InputSource;
|
||||
|
||||
abstract class Saaj11SoapElement implements SoapElement {
|
||||
|
||||
private final SOAPElement saajElement;
|
||||
|
||||
protected Saaj11SoapElement(SOAPElement saajElement) {
|
||||
Assert.notNull(saajElement, "No saajElement given");
|
||||
this.saajElement = saajElement;
|
||||
}
|
||||
|
||||
protected SOAPElement getSaajElement() {
|
||||
return saajElement;
|
||||
}
|
||||
|
||||
public final Source getSource() {
|
||||
return new SAXSource(new Saaj12XmlReader(saajElement), new InputSource());
|
||||
}
|
||||
|
||||
public final QName getName() {
|
||||
return SaajUtils.toQName(saajElement.getElementName());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
* 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.saaj11;
|
||||
|
||||
import javax.xml.soap.SOAPBody;
|
||||
import javax.xml.soap.SOAPEnvelope;
|
||||
import javax.xml.soap.SOAPException;
|
||||
import javax.xml.soap.SOAPPart;
|
||||
|
||||
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;
|
||||
|
||||
/**
|
||||
* @author Arjen Poutsma
|
||||
*/
|
||||
public class Saaj11SoapEnvelope extends Saaj11SoapElement implements SoapEnvelope {
|
||||
|
||||
private Saaj11Soap11Body body;
|
||||
|
||||
// private Saaj11SoapHeader header;
|
||||
|
||||
private final SOAPPart saajPart;
|
||||
|
||||
public Saaj11SoapEnvelope(SOAPEnvelope saajEnvelope, SOAPPart saajPart) throws SOAPException {
|
||||
super(saajEnvelope);
|
||||
Assert.notNull(saajPart, "saajPart must not be null");
|
||||
this.saajPart = saajPart;
|
||||
}
|
||||
|
||||
public final SoapBody getBody() {
|
||||
if (body == null) {
|
||||
try {
|
||||
SOAPBody saajBody = getSaajEnvelope().getBody();
|
||||
body = new Saaj11Soap11Body(saajBody);
|
||||
}
|
||||
catch (SOAPException ex) {
|
||||
throw new SaajSoapBodyException(ex);
|
||||
}
|
||||
}
|
||||
return body;
|
||||
}
|
||||
|
||||
public final SoapHeader getHeader() {
|
||||
return null;
|
||||
/*
|
||||
if (header == null) {
|
||||
try {
|
||||
SOAPHeader saajHeader = getSaajEnvelope().getHeader();
|
||||
if (saajHeader != null) {
|
||||
header = new Saaj11SoapHeader(saajHeader);
|
||||
}
|
||||
else {
|
||||
header = null;
|
||||
}
|
||||
}
|
||||
catch (SOAPException ex) {
|
||||
throw new SaajSoapHeaderException(ex);
|
||||
}
|
||||
}
|
||||
return header;
|
||||
*/
|
||||
}
|
||||
|
||||
protected SOAPEnvelope getSaajEnvelope() {
|
||||
return (SOAPEnvelope) getSaajElement();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* 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.saaj11;
|
||||
|
||||
import javax.xml.soap.SOAPException;
|
||||
import javax.xml.soap.SOAPMessage;
|
||||
import javax.xml.soap.SOAPPart;
|
||||
|
||||
import org.springframework.ws.soap.SoapEnvelope;
|
||||
import org.springframework.ws.soap.saaj.SaajSoapEnvelopeException;
|
||||
import org.springframework.ws.soap.saaj.SaajSoapMessage;
|
||||
|
||||
/**
|
||||
* SAAJ 1.1 specific implementation of the <code>SoapMessage</code> interface. Accessed via the
|
||||
* <code>SaajSoapMessageContext</code>.
|
||||
*
|
||||
* @author Arjen Poutsma
|
||||
* @see javax.xml.soap.SOAPMessage
|
||||
* @see org.springframework.ws.soap.saaj.SaajSoapMessageContext
|
||||
*/
|
||||
class Saaj11SoapMessage extends SaajSoapMessage {
|
||||
|
||||
public Saaj11SoapMessage(SOAPMessage soapMessage) {
|
||||
super(soapMessage);
|
||||
}
|
||||
|
||||
protected SoapEnvelope createSaajSoapEnvelope(SOAPMessage saajMessage) {
|
||||
try {
|
||||
SOAPPart saajPart = saajMessage.getSOAPPart();
|
||||
return new Saaj11SoapEnvelope(saajPart.getEnvelope(), saajPart);
|
||||
}
|
||||
catch (SOAPException ex) {
|
||||
throw new SaajSoapEnvelopeException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
/*
|
||||
* 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.saaj11;
|
||||
|
||||
import java.util.Iterator;
|
||||
import javax.xml.soap.Name;
|
||||
import javax.xml.soap.Node;
|
||||
import javax.xml.soap.SOAPElement;
|
||||
import javax.xml.soap.Text;
|
||||
|
||||
import org.springframework.xml.sax.AbstractXmlReader;
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.helpers.AttributesImpl;
|
||||
|
||||
/**
|
||||
* @author Arjen Poutsma
|
||||
*/
|
||||
public class Saaj12XmlReader extends AbstractXmlReader {
|
||||
|
||||
private SOAPElement element;
|
||||
|
||||
public Saaj12XmlReader(SOAPElement element) {
|
||||
this.element = element;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses the StAX XML reader passed at construction-time.
|
||||
* <p/>
|
||||
* <strong>Note</strong> that the given <code>InputSource</code> is not read, but ignored.
|
||||
*
|
||||
* @param ignored is ignored
|
||||
* @throws SAXException A SAX exception, possibly wrapping a <code>XMLStreamException</code>
|
||||
*/
|
||||
public final void parse(InputSource ignored) throws SAXException {
|
||||
handleNode(element);
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses the StAX XML reader passed at construction-time.
|
||||
* <p/>
|
||||
* <strong>Note</strong> that the given system identifier is not read, but ignored.
|
||||
*
|
||||
* @param ignored is ignored
|
||||
* @throws SAXException A SAX exception, possibly wrapping a <code>XMLStreamException</code>
|
||||
*/
|
||||
public final void parse(String ignored) throws SAXException {
|
||||
handleNode(element);
|
||||
}
|
||||
|
||||
private void handleNode(Node node) throws SAXException {
|
||||
if (node instanceof SOAPElement) {
|
||||
SOAPElement soapElement = (SOAPElement) node;
|
||||
handleSoapElement(soapElement);
|
||||
}
|
||||
else if (node instanceof Text) {
|
||||
Text text = (Text) node;
|
||||
handleText(text);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleText(Text text) throws SAXException {
|
||||
if (!text.isComment() && getContentHandler() != null) {
|
||||
char[] ch = text.getValue().toCharArray();
|
||||
getContentHandler().characters(ch, 0, ch.length);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleSoapElement(SOAPElement soapElement) throws SAXException {
|
||||
if (getContentHandler() != null) {
|
||||
for (Iterator i = soapElement.getNamespacePrefixes(); i.hasNext();) {
|
||||
String prefix = (String) i.next();
|
||||
getContentHandler().startPrefixMapping(prefix, soapElement.getNamespaceURI(prefix));
|
||||
}
|
||||
Name name = soapElement.getElementName();
|
||||
getContentHandler().startElement(name.getURI(), name.getLocalName(), name.getQualifiedName(),
|
||||
getAttributes(soapElement));
|
||||
for (Iterator i = soapElement.getChildElements(); i.hasNext();) {
|
||||
Node child = (Node) i.next();
|
||||
handleNode(child);
|
||||
}
|
||||
getContentHandler().endElement(name.getURI(), name.getLocalName(), name.getQualifiedName());
|
||||
}
|
||||
}
|
||||
|
||||
private Attributes getAttributes(SOAPElement soapElement) {
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
|
||||
for (Iterator i = soapElement.getAllAttributes(); i.hasNext();) {
|
||||
Name name = (Name) i.next();
|
||||
attributes.addAttribute(name.getURI(), name.getLocalName(), name.getQualifiedName(), null,
|
||||
soapElement.getAttributeValue(name));
|
||||
}
|
||||
return attributes;
|
||||
}
|
||||
}
|
||||
@@ -16,10 +16,11 @@
|
||||
|
||||
package org.springframework.ws.soap.saaj.saaj12;
|
||||
|
||||
import javax.xml.soap.SOAPEnvelope;
|
||||
import javax.xml.soap.SOAPException;
|
||||
import javax.xml.soap.SOAPMessage;
|
||||
|
||||
import org.springframework.ws.soap.SoapEnvelope;
|
||||
import org.springframework.ws.soap.saaj.SaajSoapEnvelopeException;
|
||||
import org.springframework.ws.soap.saaj.SaajSoapMessage;
|
||||
|
||||
/**
|
||||
@@ -36,8 +37,13 @@ class Saaj12SoapMessage extends SaajSoapMessage {
|
||||
super(soapMessage);
|
||||
}
|
||||
|
||||
protected SoapEnvelope createSaajSoapEnvelope(SOAPEnvelope saajEnvelope) {
|
||||
return new Saaj12SoapEnvelope(saajEnvelope);
|
||||
protected SoapEnvelope createSaajSoapEnvelope(SOAPMessage saajMessage) {
|
||||
try {
|
||||
return new Saaj12SoapEnvelope(saajMessage.getSOAPPart().getEnvelope());
|
||||
}
|
||||
catch (SOAPException ex) {
|
||||
throw new SaajSoapEnvelopeException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -16,10 +16,11 @@
|
||||
|
||||
package org.springframework.ws.soap.saaj.saaj13;
|
||||
|
||||
import javax.xml.soap.SOAPEnvelope;
|
||||
import javax.xml.soap.SOAPException;
|
||||
import javax.xml.soap.SOAPMessage;
|
||||
|
||||
import org.springframework.ws.soap.SoapEnvelope;
|
||||
import org.springframework.ws.soap.saaj.SaajSoapEnvelopeException;
|
||||
import org.springframework.ws.soap.saaj.SaajSoapMessage;
|
||||
|
||||
class Saaj13SoapMessage extends SaajSoapMessage {
|
||||
@@ -33,7 +34,12 @@ class Saaj13SoapMessage extends SaajSoapMessage {
|
||||
super(soapMessage);
|
||||
}
|
||||
|
||||
protected SoapEnvelope createSaajSoapEnvelope(SOAPEnvelope saajEnvelope) {
|
||||
return new Saaj13SoapEnvelope(saajEnvelope);
|
||||
protected SoapEnvelope createSaajSoapEnvelope(SOAPMessage saajMessage) {
|
||||
try {
|
||||
return new Saaj13SoapEnvelope(saajMessage.getSOAPPart().getEnvelope());
|
||||
}
|
||||
catch (SOAPException ex) {
|
||||
throw new SaajSoapEnvelopeException(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* 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.saaj11;
|
||||
|
||||
import javax.xml.soap.MessageFactory;
|
||||
import javax.xml.soap.SOAPConstants;
|
||||
import javax.xml.soap.SOAPMessage;
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.Transformer;
|
||||
import javax.xml.transform.TransformerFactory;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class Saaj11Soap11BodyTest extends TestCase {
|
||||
|
||||
public void testIt() throws Exception {
|
||||
MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
|
||||
SOAPMessage saajMessage = messageFactory.createMessage();
|
||||
Source source = saajMessage.getSOAPPart().getContent();
|
||||
Transformer transformer = TransformerFactory.newInstance().newTransformer();
|
||||
transformer.transform(source, new StreamResult(System.out));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* 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.saaj11;
|
||||
|
||||
import javax.xml.soap.MessageFactory;
|
||||
import javax.xml.soap.SOAPConstants;
|
||||
import javax.xml.soap.SOAPMessage;
|
||||
import javax.xml.soap.SOAPPart;
|
||||
|
||||
import org.springframework.ws.soap.SoapEnvelope;
|
||||
import org.springframework.ws.soap.soap11.AbstractSoap11EnvelopeTestCase;
|
||||
|
||||
public class Saaj11Soap11EnvelopeTest extends AbstractSoap11EnvelopeTestCase {
|
||||
|
||||
protected SoapEnvelope createSoapEnvelope() throws Exception {
|
||||
MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
|
||||
SOAPMessage saajMessage = messageFactory.createMessage();
|
||||
SOAPPart saajPart = saajMessage.getSOAPPart();
|
||||
return new Saaj11SoapEnvelope(saajPart.getEnvelope(), saajPart);
|
||||
}
|
||||
}
|
||||
@@ -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.saaj11;
|
||||
|
||||
import javax.xml.soap.SOAPMessage;
|
||||
|
||||
import org.springframework.ws.soap.saaj.SaajSoap11MessageTestCase;
|
||||
import org.springframework.ws.soap.saaj.SaajSoapMessage;
|
||||
|
||||
public class Saaj11Soap11MessageTest extends SaajSoap11MessageTestCase {
|
||||
|
||||
protected SaajSoapMessage createSaajSoapMessage(SOAPMessage saajMessage) {
|
||||
return new Saaj11SoapMessage(saajMessage);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* 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.saaj11;
|
||||
|
||||
import javax.xml.soap.MessageFactory;
|
||||
import javax.xml.soap.SOAPConstants;
|
||||
import javax.xml.soap.SOAPEnvelope;
|
||||
import javax.xml.soap.SOAPMessage;
|
||||
import javax.xml.transform.Transformer;
|
||||
import javax.xml.transform.TransformerFactory;
|
||||
import javax.xml.transform.dom.DOMSource;
|
||||
import javax.xml.transform.sax.SAXSource;
|
||||
|
||||
import org.custommonkey.xmlunit.XMLTestCase;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.ws.soap.saaj.support.SaajUtils;
|
||||
import org.springframework.xml.transform.StringResult;
|
||||
import org.xml.sax.InputSource;
|
||||
|
||||
public class Saaj12XmlReaderTest extends XMLTestCase {
|
||||
|
||||
private Transformer transformer;
|
||||
|
||||
private MessageFactory messageFactory;
|
||||
|
||||
protected void setUp() throws Exception {
|
||||
messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
|
||||
transformer = TransformerFactory.newInstance().newTransformer();
|
||||
}
|
||||
|
||||
public void testReader() throws Exception {
|
||||
SOAPMessage message = messageFactory.createMessage();
|
||||
SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
|
||||
Saaj12XmlReader reader = new Saaj12XmlReader(envelope);
|
||||
DOMSource domSource = new DOMSource(envelope);
|
||||
StringResult expected = new StringResult();
|
||||
transformer.transform(domSource, expected);
|
||||
|
||||
StringResult result = new StringResult();
|
||||
transformer.transform(new SAXSource(reader, new InputSource()), result);
|
||||
assertXMLEqual(expected.toString(), result.toString());
|
||||
}
|
||||
|
||||
public void testReader2() throws Exception {
|
||||
SOAPMessage message =
|
||||
SaajUtils.loadMessage(new ClassPathResource("org/springframework/ws/soap/context/soap11.xml"));
|
||||
SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
|
||||
Saaj12XmlReader reader = new Saaj12XmlReader(envelope);
|
||||
DOMSource domSource = new DOMSource(envelope);
|
||||
StringResult expected = new StringResult();
|
||||
transformer.transform(domSource, expected);
|
||||
|
||||
StringResult result = new StringResult();
|
||||
transformer.transform(new SAXSource(reader, new InputSource()), result);
|
||||
assertXMLEqual(expected.toString(), result.toString());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
/*
|
||||
* 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.xml.sax;
|
||||
|
||||
import org.xml.sax.ContentHandler;
|
||||
import org.xml.sax.DTDHandler;
|
||||
import org.xml.sax.EntityResolver;
|
||||
import org.xml.sax.ErrorHandler;
|
||||
import org.xml.sax.SAXNotRecognizedException;
|
||||
import org.xml.sax.XMLReader;
|
||||
|
||||
/**
|
||||
* Abstract base class for SAX <code>XMLReader</code> implementations.
|
||||
*
|
||||
* @author Arjen Poutsma
|
||||
* @see #setContentHandler(org.xml.sax.ContentHandler)
|
||||
* @see #setDTDHandler(org.xml.sax.DTDHandler)
|
||||
* @see #setEntityResolver(org.xml.sax.EntityResolver)
|
||||
* @see #setErrorHandler(org.xml.sax.ErrorHandler)
|
||||
*/
|
||||
public abstract class AbstractXmlReader implements XMLReader {
|
||||
|
||||
private DTDHandler dtdHandler;
|
||||
|
||||
protected ContentHandler contentHandler;
|
||||
|
||||
private EntityResolver entityResolver;
|
||||
|
||||
protected ErrorHandler errorHandler;
|
||||
|
||||
public ContentHandler getContentHandler() {
|
||||
return contentHandler;
|
||||
}
|
||||
|
||||
public void setContentHandler(ContentHandler contentHandler) {
|
||||
this.contentHandler = contentHandler;
|
||||
}
|
||||
|
||||
public void setDTDHandler(DTDHandler dtdHandler) {
|
||||
this.dtdHandler = dtdHandler;
|
||||
}
|
||||
|
||||
public DTDHandler getDTDHandler() {
|
||||
return dtdHandler;
|
||||
}
|
||||
|
||||
public EntityResolver getEntityResolver() {
|
||||
return entityResolver;
|
||||
}
|
||||
|
||||
public void setEntityResolver(EntityResolver entityResolver) {
|
||||
this.entityResolver = entityResolver;
|
||||
}
|
||||
|
||||
public ErrorHandler getErrorHandler() {
|
||||
return errorHandler;
|
||||
}
|
||||
|
||||
public void setErrorHandler(ErrorHandler errorHandler) {
|
||||
this.errorHandler = errorHandler;
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws a <code>SAXNotRecognizedException</code> exception.
|
||||
*
|
||||
* @throws org.xml.sax.SAXNotRecognizedException
|
||||
* always
|
||||
*/
|
||||
public boolean getFeature(String name) throws SAXNotRecognizedException {
|
||||
throw new SAXNotRecognizedException(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws a <code>SAXNotRecognizedException</code> exception.
|
||||
*
|
||||
* @throws org.xml.sax.SAXNotRecognizedException
|
||||
* always
|
||||
*/
|
||||
public void setFeature(String name, boolean value) throws SAXNotRecognizedException {
|
||||
throw new SAXNotRecognizedException(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws a <code>SAXNotRecognizedException</code> exception.
|
||||
*
|
||||
* @throws org.xml.sax.SAXNotRecognizedException
|
||||
* always
|
||||
*/
|
||||
public Object getProperty(String name) throws SAXNotRecognizedException {
|
||||
throw new SAXNotRecognizedException(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws a <code>SAXNotRecognizedException</code> exception.
|
||||
*
|
||||
* @throws org.xml.sax.SAXNotRecognizedException
|
||||
* always
|
||||
*/
|
||||
public void setProperty(String name, Object value) throws SAXNotRecognizedException {
|
||||
throw new SAXNotRecognizedException(name);
|
||||
}
|
||||
}
|
||||
@@ -19,16 +19,12 @@ package org.springframework.xml.stream;
|
||||
import javax.xml.stream.Location;
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
|
||||
import org.springframework.xml.sax.AbstractXmlReader;
|
||||
import org.xml.sax.ContentHandler;
|
||||
import org.xml.sax.DTDHandler;
|
||||
import org.xml.sax.EntityResolver;
|
||||
import org.xml.sax.ErrorHandler;
|
||||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.Locator;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.SAXNotRecognizedException;
|
||||
import org.xml.sax.SAXParseException;
|
||||
import org.xml.sax.XMLReader;
|
||||
|
||||
/**
|
||||
* Abstract base class for SAX <code>XMLReader</code> implementations that use StAX as a basis.
|
||||
@@ -39,83 +35,7 @@ import org.xml.sax.XMLReader;
|
||||
* @see #setEntityResolver(org.xml.sax.EntityResolver)
|
||||
* @see #setErrorHandler(org.xml.sax.ErrorHandler)
|
||||
*/
|
||||
public abstract class StaxXmlReader implements XMLReader {
|
||||
|
||||
private DTDHandler dtdHandler;
|
||||
|
||||
private ContentHandler contentHandler;
|
||||
|
||||
private EntityResolver entityResolver;
|
||||
|
||||
private ErrorHandler errorHandler;
|
||||
|
||||
public ContentHandler getContentHandler() {
|
||||
return contentHandler;
|
||||
}
|
||||
|
||||
public void setContentHandler(ContentHandler contentHandler) {
|
||||
this.contentHandler = contentHandler;
|
||||
}
|
||||
|
||||
public void setDTDHandler(DTDHandler dtdHandler) {
|
||||
this.dtdHandler = dtdHandler;
|
||||
}
|
||||
|
||||
public DTDHandler getDTDHandler() {
|
||||
return dtdHandler;
|
||||
}
|
||||
|
||||
public EntityResolver getEntityResolver() {
|
||||
return entityResolver;
|
||||
}
|
||||
|
||||
public void setEntityResolver(EntityResolver entityResolver) {
|
||||
this.entityResolver = entityResolver;
|
||||
}
|
||||
|
||||
public ErrorHandler getErrorHandler() {
|
||||
return errorHandler;
|
||||
}
|
||||
|
||||
public void setErrorHandler(ErrorHandler errorHandler) {
|
||||
this.errorHandler = errorHandler;
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws a <code>SAXNotRecognizedException</code> exception.
|
||||
*
|
||||
* @throws SAXNotRecognizedException always
|
||||
*/
|
||||
public boolean getFeature(String name) throws SAXNotRecognizedException {
|
||||
throw new SAXNotRecognizedException(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws a <code>SAXNotRecognizedException</code> exception.
|
||||
*
|
||||
* @throws SAXNotRecognizedException always
|
||||
*/
|
||||
public void setFeature(String name, boolean value) throws SAXNotRecognizedException {
|
||||
throw new SAXNotRecognizedException(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws a <code>SAXNotRecognizedException</code> exception.
|
||||
*
|
||||
* @throws SAXNotRecognizedException always
|
||||
*/
|
||||
public Object getProperty(String name) throws SAXNotRecognizedException {
|
||||
throw new SAXNotRecognizedException(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws a <code>SAXNotRecognizedException</code> exception.
|
||||
*
|
||||
* @throws SAXNotRecognizedException always
|
||||
*/
|
||||
public void setProperty(String name, Object value) throws SAXNotRecognizedException {
|
||||
throw new SAXNotRecognizedException(name);
|
||||
}
|
||||
public abstract class StaxXmlReader extends AbstractXmlReader {
|
||||
|
||||
/**
|
||||
* Parses the StAX XML reader passed at construction-time.
|
||||
|
||||
Reference in New Issue
Block a user