View Javadoc

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