1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.opensaml.ws.soap.soap11.decoder ;
18
19 import java.util.List;
20
21 import org.opensaml.ws.message.MessageContext;
22 import org.opensaml.ws.message.decoder.MessageDecodingException;
23 import org.opensaml.ws.message.handler.BaseHandlerChainAwareMessageDecoder;
24 import org.opensaml.ws.soap.soap11.Envelope;
25 import org.opensaml.ws.soap.soap11.Header;
26 import org.opensaml.ws.transport.InTransport;
27 import org.opensaml.xml.XMLObject;
28 import org.opensaml.xml.parse.ParserPool;
29 import org.opensaml.xml.security.SecurityException;
30 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory;
32
33
34
35
36 public class SOAP11Decoder extends BaseHandlerChainAwareMessageDecoder {
37
38
39 private final Logger log = LoggerFactory.getLogger(SOAP11Decoder.class);
40
41
42 public SOAP11Decoder() {
43 super();
44 }
45
46
47
48
49
50
51 public SOAP11Decoder(ParserPool pool) {
52 super(pool);
53 }
54
55
56 protected void doDecode(MessageContext messageContext) throws MessageDecodingException {
57
58 InTransport inTransport = messageContext.getInboundMessageTransport();
59
60 log.debug("Unmarshalling SOAP message");
61 Envelope soapMessage = (Envelope) unmarshallMessage(inTransport.getIncomingStream());
62 messageContext.setInboundMessage(soapMessage);
63 }
64
65
66
67 public void decode(MessageContext messageContext) throws MessageDecodingException, SecurityException {
68 super.decode(messageContext);
69
70
71
72 }
73
74
75
76
77
78
79
80
81
82
83
84 private void checkUnderstoodSOAPHeaders(MessageContext messageContext)
85 throws MessageDecodingException {
86
87 Envelope envelope = (Envelope) messageContext.getInboundMessage();
88 Header soapHeader = envelope.getHeader();
89 if (soapHeader == null) {
90 log.debug("SOAP Envelope contained no Header");
91 return;
92 }
93 List<XMLObject> headers = soapHeader.getUnknownXMLObjects();
94 if (headers == null || headers.isEmpty()) {
95 log.debug("SOAP Envelope header list was either null or empty");
96 return;
97 }
98
99 for (XMLObject header : headers) {
100
101 }
102 }
103
104 }