1
2
3
4
5
6
7
8
9
10 package org.mule.module.ibeans.spi.support;
11
12 import org.mule.DefaultMuleEvent;
13 import org.mule.DefaultMuleMessage;
14 import org.mule.api.MessagingException;
15 import org.mule.api.MuleEvent;
16 import org.mule.api.MuleMessage;
17 import org.mule.config.i18n.CoreMessages;
18 import org.mule.transport.NullPayload;
19
20 import org.ibeans.api.channel.CHANNEL;
21
22
23
24
25
26
27 public class DynamicRequestInterfaceBinding extends DefaultRequestInterfaceBinding
28 {
29 @Override
30 public MuleEvent process(MuleEvent event) throws MessagingException
31 {
32 try
33 {
34 int timeout = event.getMessage().getInboundProperty(CHANNEL.TIMEOUT, event.getMuleContext().getConfiguration().getDefaultResponseTimeout());
35 if (inboundEndpoint instanceof DynamicRequestEndpoint)
36 {
37 MuleMessage message =((DynamicRequestEndpoint) inboundEndpoint).request(timeout, event);
38 if(message == null)
39 {
40 message = new DefaultMuleMessage(NullPayload.getInstance(), event.getMuleContext());
41 }
42 return new DefaultMuleEvent(message, event);
43 }
44 else
45 {
46 return new DefaultMuleEvent(inboundEndpoint.request(event.getMuleContext()
47 .getConfiguration()
48 .getDefaultResponseTimeout()), event);
49 }
50 }
51 catch (Exception e)
52 {
53 throw new MessagingException(CoreMessages.failedToInvoke("inboundEndpoint.request()"), event, e);
54 }
55 }
56 }