1 package org.springframework.ws.soap.axiom;
2
3 import org.apache.axiom.om.OMException;
4 import org.apache.axiom.soap.SOAP11Constants;
5 import org.apache.axiom.soap.SOAP12Constants;
6 import org.apache.axiom.soap.SOAPBody;
7 import org.apache.axiom.soap.SOAPEnvelope;
8 import org.apache.axiom.soap.SOAPFactory;
9 import org.apache.axiom.soap.SOAPHeader;
10
11 import org.springframework.ws.soap.SoapBody;
12 import org.springframework.ws.soap.SoapEnvelope;
13 import org.springframework.ws.soap.SoapHeader;
14
15
16
17
18
19
20
21 class AxiomSoapEnvelope extends AxiomSoapElement implements SoapEnvelope {
22
23 boolean payloadCaching;
24
25 private AxiomSoapBody body;
26
27 AxiomSoapEnvelope(SOAPEnvelope axiomEnvelope, SOAPFactory axiomFactory, boolean payloadCaching) {
28 super(axiomEnvelope, axiomFactory);
29 this.payloadCaching = payloadCaching;
30 }
31
32 public SoapHeader getHeader() {
33 try {
34 if (getAxiomEnvelope().getHeader() == null) {
35 return null;
36 }
37 else {
38 SOAPHeader axiomHeader = getAxiomEnvelope().getHeader();
39 String namespaceURI = getAxiomEnvelope().getNamespace().getNamespaceURI();
40 if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(namespaceURI)) {
41 return new AxiomSoap11Header(axiomHeader, getAxiomFactory());
42 }
43 else if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(namespaceURI)) {
44 return new AxiomSoap12Header(axiomHeader, getAxiomFactory());
45 }
46 else {
47 throw new AxiomSoapEnvelopeException("Unknown SOAP namespace \"" + namespaceURI + "\"");
48 }
49 }
50 }
51 catch (OMException ex) {
52 throw new AxiomSoapHeaderException(ex);
53 }
54 }
55
56 public SoapBody getBody() {
57 if (body == null) {
58 try {
59 SOAPBody axiomBody = getAxiomEnvelope().getBody();
60 String namespaceURI = getAxiomEnvelope().getNamespace().getNamespaceURI();
61 if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(namespaceURI)) {
62 body = new AxiomSoap11Body(axiomBody, getAxiomFactory(), payloadCaching);
63 }
64 else if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(namespaceURI)) {
65 body = new AxiomSoap12Body(axiomBody, getAxiomFactory(), payloadCaching);
66 }
67 else {
68 throw new AxiomSoapEnvelopeException("Unknown SOAP namespace \"" + namespaceURI + "\"");
69 }
70 }
71 catch (OMException ex) {
72 throw new AxiomSoapBodyException(ex);
73 }
74 }
75 return body;
76 }
77
78 protected SOAPEnvelope getAxiomEnvelope() {
79 return (SOAPEnvelope) getAxiomElement();
80 }
81
82 }