Sun GlassFish(tm) Message Queue
v4.4

com.sun.messaging.bridge.service
Class MessageTransformer<T,S>

java.lang.Object
  extended by com.sun.messaging.bridge.service.MessageTransformer<T,S>

public abstract class MessageTransformer<T,S>
extends Object

The message transformer class to be extended by user. Its implementation must provide a public zero-argument constructor. The following is an example usage of this class for MQ STOMP bridge

 import java.util.*;
 import javax.jms.*;
 import com.sun.messaging.bridge.service.MessageTransformer;

 public class MessageTran extends MessageTransformer <Message, Message> {

 public Message transform(Message message, 
                          boolean readOnly,
                          String charsetName,
                          String source, 
                          String target,
                          Properties properties)
                          throws Exception {

    Message m = message;
    if (source.equals(STOMP)) { //from STOMP client to Java Message Queue
        //convert any invalid headers from STOMP SEND frame
        if (properties != null) {
            ......
            //convert key to valid JMS message property name, then call m.setStringProperty()
            ......
        }
     
    } else if (source.equals(SUN_MQ)) { //from Java Message Queue to STOMP client

        if (message instanceof ObjectMessage) {

            //create a new BytesMessage for message to be transformed to 
            BytesMessage bm = (BytesMessage)createJMSMessage(JMSMessageType.BYTESMESSAGE);
               
            //convert message to the BytesMessage
            ......
            m = bm;
        } else {
            ....
        }
    }
    return m;
 }


Nested Class Summary
static class MessageTransformer.JMSMessageType
           
 
Field Summary
static String STOMP
          The predefined provider name for JMS message to/from STOMP client
static String SUN_MQ
          The predefined provider name for JMS message to/from Sun Java Message Queue
 
Constructor Summary
MessageTransformer()
           
 
Method Summary
protected  void branchTo(Object d)
          To be called from the transform() method when needs to tell the bridge to branch the message that is to be returned by the transform() call to a different destination in the target provider
protected  Message createJMSMessage(MessageTransformer.JMSMessageType type)
          Create a JMS message object.
protected  Queue createQueue(String queueName)
          To be called from the transform() method when needs to create a JMS Queue object to the target provider
protected  Topic createTopic(String topicName)
          To be called from the transform() method when needs to create a JMS Topic object to the target provider
 Object getBranchTo()
          This method is called by the bridge service after transform() is returned for bridge types that support branchTo()
 void init(Object obj, String bridgeType)
          This method is called by the bridge service before transform() is called.
 boolean isNoTransfer()
          This method is called by the bridge service after transform() is returned for bridge types that support noTransfer()
protected  void noTransfer()
          To be called from the transform() method when needs to tell the bridge to consume from source and not transfer to target the message that is to be returned by the transform() call
abstract  T transform(S message, boolean readOnly, String charsetName, String source, String target, Properties properties)
          To be implemented by user
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SUN_MQ

public static final String SUN_MQ
The predefined provider name for JMS message to/from Sun Java Message Queue

See Also:
Constant Field Values

STOMP

public static final String STOMP
The predefined provider name for JMS message to/from STOMP client

See Also:
Constant Field Values
Constructor Detail

MessageTransformer

public MessageTransformer()
Method Detail

init

public final void init(Object obj,
                       String bridgeType)
This method is called by the bridge service before transform() is called. A message transformer object is initialized by init() each time before transform() is called. After transform() returns, it's back to uninitialized state.


getBranchTo

public final Object getBranchTo()
This method is called by the bridge service after transform() is returned for bridge types that support branchTo()


isNoTransfer

public final boolean isNoTransfer()
This method is called by the bridge service after transform() is returned for bridge types that support noTransfer()


createJMSMessage

protected final Message createJMSMessage(MessageTransformer.JMSMessageType type)
                                  throws Exception
Create a JMS message object. This method is to be used in tranform() method implemenation when it needs to create a new JMS message

Parameters:
type - the type of the JMS message to be created
Returns:
a newly created uninitialized JMS message object
Throws:
IllegalStateException - if this MessageTransfomer object is not initialized
Exception - if fails to create the JMS Message

createQueue

protected final Queue createQueue(String queueName)
                           throws Exception
To be called from the transform() method when needs to create a JMS Queue object to the target provider

Parameters:
queueName - the name of the Queue
Returns:
a javax.jms.Queue object
Throws:
IllegalStateException - if this MessageTransfomer object is not initialized
Exception - if fails to create the Queue object

createTopic

protected final Topic createTopic(String topicName)
                           throws Exception
To be called from the transform() method when needs to create a JMS Topic object to the target provider

Parameters:
topicName - the name of the Topic
Returns:
a javax.jms.Topic object
Throws:
IllegalStateException - if this MessageTransfomer object is not initialized
Exception - if fails to create the Topic object

branchTo

protected final void branchTo(Object d)
                       throws Exception
To be called from the transform() method when needs to tell the bridge to branch the message that is to be returned by the transform() call to a different destination in the target provider

Parameters:
d - a java.lang.String or javax.jms.Destination object that specifies the destination in target provider to branch the message to
Throws:
IllegalStateException - if this MessageTransfomer object is not initialized
IllegalArgumentException - if null or unexpected object type passed in
UnsupportedOperationException - if the operation is not supported for the bridge type
Exception - if fails to create the JMS Message

noTransfer

protected final void noTransfer()
                         throws Exception
To be called from the transform() method when needs to tell the bridge to consume from source and not transfer to target the message that is to be returned by the transform() call

Throws:
IllegalStateException - if this MessageTransfomer object is not initialized
UnsupportedOperationException - if the operation is not supported for the bridge type
Exception

transform

public abstract T transform(S message,
                            boolean readOnly,
                            String charsetName,
                            String source,
                            String target,
                            Properties properties)
                     throws Exception
To be implemented by user

Parameters:
message - the message object to be tranformed.
readOnly - if the message is in read-only mode
charsetName - the charset name for message if applicable, null if not available
source - the source provider name
target - the target provider name
properties - any properties for the transform() call, null if none
Returns:
a message object that is transformed from the passed in message
Throws:
Exception - if unable to transform message

Sun GlassFish(tm) Message Queue
v4.4

Copyright 2009 Sun Microsystems, Inc. 4150 Network Circle,
Santa Clara, California, 95054, U.S.A. All Rights Reserved.