1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.opensaml.ws.message.encoder;
18
19 import org.opensaml.ws.message.MessageContext;
20 import org.opensaml.xml.Configuration;
21 import org.opensaml.xml.XMLObject;
22 import org.opensaml.xml.io.Marshaller;
23 import org.opensaml.xml.io.MarshallingException;
24 import org.opensaml.xml.util.XMLHelper;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
27 import org.w3c.dom.Element;
28
29
30
31
32 public abstract class BaseMessageEncoder implements MessageEncoder {
33
34
35 private Logger protocolMessageLog = LoggerFactory.getLogger("PROTOCOL_MESSAGE");
36
37
38 private final Logger log = LoggerFactory.getLogger(BaseMessageEncoder.class);
39
40
41 public BaseMessageEncoder() {
42
43 }
44
45
46 public void encode(MessageContext messageContext) throws MessageEncodingException {
47 log.debug("Beginning encode message to outbound transport of type: {}", messageContext
48 .getOutboundMessageTransport().getClass().getName());
49
50 doEncode(messageContext);
51
52 log.debug("Successfully encoded message.");
53 if(protocolMessageLog.isDebugEnabled() && messageContext.getOutboundMessage() != null){
54 protocolMessageLog.debug("\n" + XMLHelper.prettyPrintXML(messageContext.getOutboundMessage().getDOM()));
55 }
56 }
57
58
59
60
61
62
63
64
65 protected abstract void doEncode(MessageContext messageContext) throws MessageEncodingException;
66
67
68
69
70
71
72
73
74
75
76 protected Element marshallMessage(XMLObject message) throws MessageEncodingException {
77 log.debug("Marshalling message");
78
79 try {
80 Marshaller marshaller = Configuration.getMarshallerFactory().getMarshaller(message);
81 if (marshaller == null) {
82 log.error("Unable to marshall message, no marshaller registered for message object: "
83 + message.getElementQName());
84 }
85 Element messageElem = marshaller.marshall(message);
86 if (log.isTraceEnabled()) {
87 log.trace("Marshalled message into DOM:\n{}", XMLHelper.nodeToString(messageElem));
88 }
89 return messageElem;
90 } catch (MarshallingException e) {
91 log.error("Encountered error marshalling message to its DOM representation", e);
92 throw new MessageEncodingException("Encountered error marshalling message into its DOM representation", e);
93 }
94 }
95 }