1
2
3
4
5
6
7
8 package org.mule.endpoint.inbound;
9
10 import org.mule.api.MessagingException;
11 import org.mule.api.MuleEvent;
12 import org.mule.api.MuleMessage;
13 import org.mule.api.config.MuleProperties;
14 import org.mule.api.endpoint.InboundEndpoint;
15 import org.mule.api.processor.MessageProcessor;
16 import org.mule.api.transport.PropertyScope;
17 import org.mule.config.i18n.CoreMessages;
18 import org.mule.util.ObjectUtils;
19
20 import javax.activation.MimeType;
21 import javax.activation.MimeTypeParseException;
22
23
24
25
26 public class InboundEndpointMimeTypeCheckingMessageProcessor implements MessageProcessor
27 {
28 private InboundEndpoint endpoint;
29
30 public InboundEndpointMimeTypeCheckingMessageProcessor(InboundEndpoint endpoint)
31 {
32 this.endpoint = endpoint;
33 }
34
35 public MuleEvent process(MuleEvent event) throws MessagingException
36 {
37 String endpointMimeType = endpoint.getMimeType();
38 if (endpointMimeType != null)
39 {
40 MuleMessage message = event.getMessage();
41 String contentType = message.getProperty(MuleProperties.CONTENT_TYPE_PROPERTY, PropertyScope.INBOUND);
42 if (contentType == null)
43 {
44 contentType = message.getProperty(MuleProperties.CONTENT_TYPE_PROPERTY, PropertyScope.OUTBOUND);
45 }
46 if (contentType == null)
47 {
48 message.setProperty(MuleProperties.CONTENT_TYPE_PROPERTY, endpointMimeType, PropertyScope.INBOUND);
49 }
50 else
51 {
52 try
53 {
54 MimeType mt = new MimeType(contentType);
55 String messageMimeType = mt.getPrimaryType() + "/" + mt.getSubType();
56 if (!messageMimeType.equals(endpointMimeType))
57 {
58 throw new MessagingException(
59 CoreMessages.unexpectedMIMEType(messageMimeType, endpointMimeType), event);
60 }
61 }
62 catch (MimeTypeParseException ex)
63 {
64 throw new MessagingException(CoreMessages.illegalMIMEType(contentType), event, ex);
65 }
66 }
67 }
68
69 return event;
70 }
71
72 @Override
73 public String toString()
74 {
75 return ObjectUtils.toString(this);
76 }
77 }