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