Jitsi: the OpenSource Java VoIP and Instant Messaging client.

net.java.sip.communicator.impl.protocol.sip
Class OperationSetBasicInstantMessagingSipImpl

java.lang.Object
  extended by net.java.sip.communicator.service.protocol.AbstractOperationSetBasicInstantMessaging
      extended by net.java.sip.communicator.impl.protocol.sip.OperationSetBasicInstantMessagingSipImpl
All Implemented Interfaces:
OperationSet, OperationSetBasicInstantMessaging

public class OperationSetBasicInstantMessagingSipImpl
extends AbstractOperationSetBasicInstantMessaging

A straightforward implementation of the basic instant messaging operation set.

Author:
Benoit Pradelle

Field Summary
 
Fields inherited from interface net.java.sip.communicator.service.protocol.OperationSetBasicInstantMessaging
DEFAULT_MIME_ENCODING, DEFAULT_MIME_TYPE, HTML_MIME_TYPE
 
Constructor Summary
OperationSetBasicInstantMessagingSipImpl(ProtocolProviderServiceSipImpl provider)
          Creates an instance of this operation set.
 
Method Summary
(package private)  void addMessageProcessor(SipMessageProcessor processor)
          Registers a SipMessageProcessor with this operation set so that it gets notifications of successful message delivery, failure or reception of incoming messages..
 Message createMessage(String content, String contentType, String encoding, String subject)
          Create a Message instance for sending arbitrary MIME-encoding content.
(package private)  javax.sip.message.Request createMessageRequest(Contact to, Message message)
          Construct a Request represent a new message.
 boolean isContentTypeSupported(String contentType)
          Determines whether the protocol supports the supplied content type
 boolean isOfflineMessagingSupported()
          Determines whether the protocol provider (or the protocol itself) support sending and receiving offline messages.
(package private)  void removeMessageProcessor(SipMessageProcessor processor)
          Unregisters processor so that it won't receive any further notifications upon successful message delivery, failure or reception of incoming messages..
 void sendInstantMessage(Contact to, Message message)
          Sends the message to the destination indicated by the to contact.
(package private)  void sendMessageRequest(javax.sip.message.Request messageRequest, Contact to, Message messageContent)
          Sends messageRequest to the specified destination and logs messageContent for later use.
 
Methods inherited from class net.java.sip.communicator.service.protocol.AbstractOperationSetBasicInstantMessaging
addMessageListener, createMessage, createMessage, fireMessageDelivered, fireMessageDeliveryFailed, fireMessageEvent, fireMessageReceived, isContentTypeSupported, messageDeliveryPendingTransform, removeMessageListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

OperationSetBasicInstantMessagingSipImpl

OperationSetBasicInstantMessagingSipImpl(ProtocolProviderServiceSipImpl provider)
Creates an instance of this operation set.

Parameters:
provider - a ref to the ProtocolProviderServiceImpl that created us and that we'll use for retrieving the underlying aim connection.
Method Detail

addMessageProcessor

void addMessageProcessor(SipMessageProcessor processor)
Registers a SipMessageProcessor with this operation set so that it gets notifications of successful message delivery, failure or reception of incoming messages..

Parameters:
processor - the SipMessageProcessor to register.

removeMessageProcessor

void removeMessageProcessor(SipMessageProcessor processor)
Unregisters processor so that it won't receive any further notifications upon successful message delivery, failure or reception of incoming messages..

Parameters:
processor - the SipMessageProcessor to unregister.

createMessage

public Message createMessage(String content,
                             String contentType,
                             String encoding,
                             String subject)
Description copied from interface: OperationSetBasicInstantMessaging
Create a Message instance for sending arbitrary MIME-encoding content.

Specified by:
createMessage in interface OperationSetBasicInstantMessaging
Specified by:
createMessage in class AbstractOperationSetBasicInstantMessaging
Parameters:
content - content value
contentType - the MIME-type for content
encoding - encoding used for content
subject - a String subject or null for now subject.
Returns:
the newly created message.

isOfflineMessagingSupported

public boolean isOfflineMessagingSupported()
Determines whether the protocol provider (or the protocol itself) support sending and receiving offline messages. Most often this method would return true for protocols that support offline messages and false for those that don't. It is however possible for a protocol to support these messages and yet have a particular account that does not (i.e. feature not enabled on the protocol server). In cases like this it is possible for this method to return true even when offline messaging is not supported, and then have the sendMessage method throw an OperationFailedException with code - OFFLINE_MESSAGES_NOT_SUPPORTED.

Returns:
true if the protocol supports offline messages and false otherwise.

isContentTypeSupported

public boolean isContentTypeSupported(String contentType)
Determines whether the protocol supports the supplied content type

Parameters:
contentType - the type we want to check
Returns:
true if the protocol supports it and false otherwise.

sendInstantMessage

public void sendInstantMessage(Contact to,
                               Message message)
                        throws IllegalStateException,
                               IllegalArgumentException
Sends the message to the destination indicated by the to contact.

Parameters:
to - the Contact to send message to
message - the Message to send.
Throws:
IllegalStateException - if the underlying stack is not registered and initialized.
IllegalArgumentException - if to is not an instance of ContactImpl.

sendMessageRequest

void sendMessageRequest(javax.sip.message.Request messageRequest,
                        Contact to,
                        Message messageContent)
                  throws javax.sip.TransactionUnavailableException,
                         javax.sip.SipException
Sends messageRequest to the specified destination and logs messageContent for later use.

Parameters:
messageRequest - the SipRequest that we are about to send.
to - the Contact that we are sending messageRequest to.
messageContent - the SC Message that was used to create the Request .
Throws:
javax.sip.TransactionUnavailableException - if we fail creating the transaction required to send messageRequest.
javax.sip.SipException - if we fail sending messageRequest.

createMessageRequest

javax.sip.message.Request createMessageRequest(Contact to,
                                               Message message)
                                         throws OperationFailedException
Construct a Request represent a new message.

Parameters:
to - the Contact to send message to
message - the Message to send.
Returns:
a Message Request destined to the contact
Throws:
OperationFailedException - if an error occurred during the creation of the request

Jitsi: the OpenSource Java VoIP and Instant Messaging client.

Jitsi, the OpenSource Java VoIP and Instant Messaging client.
Distributable under LGPL license.