View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.transport.xmpp;
8   
9   import org.mule.api.MuleEvent;
10  import org.mule.api.MuleMessage;
11  import org.mule.api.endpoint.InboundEndpoint;
12  import org.mule.transport.AbstractMessageRequester;
13  
14  import org.jivesoftware.smack.packet.Message;
15  
16  /**
17   * Allows Mule messages to be received over XMPP
18   */
19  public class XmppMessageRequester extends AbstractMessageRequester
20  {
21      private XmppConnector connector;
22      private XmppConversation conversation;    
23  
24      public XmppMessageRequester(InboundEndpoint endpoint)
25      {
26          super(endpoint);
27          connector = (XmppConnector) endpoint.getConnector();
28          conversation = connector.getConversationFactory().create(endpoint);
29      }
30  
31      @Override
32      protected void doConnect() throws Exception
33      {
34          conversation.connect();
35      }
36  
37      @Override
38      protected void doDisconnect() throws Exception
39      {
40          conversation.disconnect();
41      }
42  
43      @Override
44      protected void doDispose()
45      {
46          conversation = null;
47      }
48  
49      @Override
50      protected MuleMessage doRequest(long timeout) throws Exception
51      {
52          Message message = null;
53          if (timeout == MuleEvent.TIMEOUT_WAIT_FOREVER)
54          {
55              message = conversation.receive();
56          }
57          else
58          {
59              message = conversation.receive(timeout);
60          }
61          
62          if (message != null)
63          {
64              return createMuleMessage(message, endpoint.getEncoding());
65          }
66          else
67          {
68              return null;
69          }
70      }
71  }