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  Message createJMSMessage(MessageTransformer.JMSMessageType type)
          Create a JMS message object.
 void init(Object obj)
          This method is called by the bridge service before transform() is called.
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)
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.


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

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.