Overview | Package | Class | Tree | Deprecated | Index | Help
| Sun GlassFish(tm) Message Queue v4.4
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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

    java.lang.Object
      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

Overview | Package | Class | Tree | Deprecated | Index | Help
| Sun GlassFish(tm) Message Queue v4.4
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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