1
2
3
4
5
6
7 package org.mule.endpoint.inbound;
8
9 import org.mule.api.MuleEvent;
10 import org.mule.api.MuleException;
11 import org.mule.api.MuleMessage;
12 import org.mule.api.processor.MessageProcessor;
13 import org.mule.api.transport.Connector;
14 import org.mule.config.ExceptionHelper;
15 import org.mule.util.ObjectUtils;
16
17 import org.apache.commons.logging.Log;
18 import org.apache.commons.logging.LogFactory;
19
20
21
22
23
24
25
26
27
28
29 public class InboundExceptionDetailsMessageProcessor implements MessageProcessor
30 {
31
32 private static final Log logger = LogFactory.getLog(InboundExceptionDetailsMessageProcessor.class);
33
34 protected Connector connector;
35
36 public InboundExceptionDetailsMessageProcessor(Connector connector)
37 {
38 this.connector = connector;
39 }
40
41 public MuleEvent process(MuleEvent event) throws MuleException
42 {
43 if (event != null)
44 {
45 MuleMessage resultMessage = event.getMessage();
46 if (resultMessage != null)
47 {
48 if (resultMessage.getExceptionPayload() != null)
49 {
50 setExceptionDetails(resultMessage, connector, resultMessage.getExceptionPayload()
51 .getException());
52 }
53 }
54 }
55 return event;
56 }
57
58
59
60
61
62
63
64
65 protected void setExceptionDetails(MuleMessage message, Connector connector, Throwable exception)
66 {
67 String propName = ExceptionHelper.getErrorCodePropertyName(connector.getProtocol());
68
69
70 if (propName != null)
71 {
72 String code = ExceptionHelper.getErrorMapping(connector.getProtocol(), exception.getClass());
73 if (logger.isDebugEnabled())
74 {
75 logger.debug("Setting error code for: " + connector.getProtocol() + ", " + propName + "="
76 + code);
77 }
78 message.setOutboundProperty(propName, code);
79 }
80 }
81
82 @Override
83 public String toString()
84 {
85 return ObjectUtils.toString(this);
86 }
87 }