static Message inboundJmsInstance(JsJmsMessage newMsg, JmsSessionImpl newSess, Map passThruProps) {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.entry(tc, "inboundJmsInstance", new Object[] { newMsg, newSess, passThruProps });

        // This is where the mapping of MFP components to JMS components takes
        // place. The list of mappings should increase as we support more method
        // types.

        JmsMessageImpl jmsMsg = null;

        JmsBodyType bt = newMsg.getBodyType();
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
            SibTr.debug(tc, "body type: " + bt);

        int bodyTypeInt = -2; // This is not one of the JmsBodyType constants.
        if (bt != null) {
            bodyTypeInt = bt.toInt();
        }

        switch (bodyTypeInt) {

            case JmsBodyType.NULL_INT:
                jmsMsg = new JmsMessageImpl(newMsg, newSess);
                break;

            case JmsBodyType.TEXT_INT:
                jmsMsg = new JmsTextMessageImpl((JsJmsTextMessage) newMsg, newSess);
                break;

            case JmsBodyType.MAP_INT:
                jmsMsg = new JmsMapMessageImpl((JsJmsMapMessage) newMsg, newSess);
                break;

            case JmsBodyType.OBJECT_INT:
                jmsMsg = new JmsObjectMessageImpl((JsJmsObjectMessage) newMsg, newSess);
                break;

            case JmsBodyType.BYTES_INT:
                jmsMsg = new JmsBytesMessageImpl((JsJmsBytesMessage) newMsg, newSess);
                break;

            case JmsBodyType.STREAM_INT:
                jmsMsg = new JmsStreamMessageImpl((JsJmsStreamMessage) newMsg, newSess);
                break;

            default:
                // Catch-all situation to translate to a JMS Message instance - we won't be
                // able to get to any of the body data, but the header fields would be visible.
                if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                    SibTr.debug(tc, "UNKNOWN MESSAGE TYPE FOUND: " + bt);
                jmsMsg = new JmsMessageImpl(newMsg, newSess);
                break;

        }

        // Need to transfer certain performance related properties from the pass through properties
        // to the new message here. Only attempt this if pass thru props have been provided
        if (passThruProps != null) {
            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                SibTr.debug(tc, "Pass through properties provided - attempting to assign to new message");

            // Discover the properties from the pass thru props
            String producerProp = (String) passThruProps.get(JmsraConstants.PRODUCER_DOES_NOT_MODIFY_PAYLOAD_AFTER_SET);
            String consumerProp = (String) passThruProps.get(JmsraConstants.CONSUMER_DOES_NOT_MODIFY_PAYLOAD_AFTER_GET);

            // Assign attributes to the message according to value of properties
            if (producerProp != null) {
                jmsMsg.producerWontModifyPayloadAfterSet = producerProp.equalsIgnoreCase(ApiJmsConstants.WILL_NOT_MODIFY_PAYLOAD);
            }
            if (consumerProp != null) {
                jmsMsg.consumerWontModifyPayloadAfterGet = consumerProp.equalsIgnoreCase(ApiJmsConstants.WILL_NOT_MODIFY_PAYLOAD);
            }
        }

        // When a JMS Message has been received, it's body and properties are read-only
        // until clearBody() or clearProperties() are called.
        jmsMsg.bodyReadOnly = true;
        jmsMsg.propertiesReadOnly = true;

        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.exit(tc, "inboundJmsInstance");
        return jmsMsg;
    }
static Message inboundJmsInstance ( JsJmsMessage newMsg , JmsSessionImpl newSess , Map passThruProps ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( tc , "inboundJmsInstance" , new Object [ ] { newMsg , newSess , passThruProps } ) ; JmsMessageImpl jmsMsg = null ; JmsBodyType bt = newMsg . getBodyType ( ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( tc , "body type: " + bt ) ; int bodyTypeInt = - 2 ; if ( bt != null ) { bodyTypeInt = bt . toInt ( ) ; } switch ( bodyTypeInt ) { case JmsBodyType . NULL_INT : jmsMsg = new JmsMessageImpl ( newMsg , newSess ) ; break ; case JmsBodyType . TEXT_INT : jmsMsg = new JmsTextMessageImpl ( ( JsJmsTextMessage ) newMsg , newSess ) ; break ; case JmsBodyType . MAP_INT : jmsMsg = new JmsMapMessageImpl ( ( JsJmsMapMessage ) newMsg , newSess ) ; break ; case JmsBodyType . OBJECT_INT : jmsMsg = new JmsObjectMessageImpl ( ( JsJmsObjectMessage ) newMsg , newSess ) ; break ; case JmsBodyType . BYTES_INT : jmsMsg = new JmsBytesMessageImpl ( ( JsJmsBytesMessage ) newMsg , newSess ) ; break ; case JmsBodyType . STREAM_INT : jmsMsg = new JmsStreamMessageImpl ( ( JsJmsStreamMessage ) newMsg , newSess ) ; break ; default : if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( tc , "UNKNOWN MESSAGE TYPE FOUND: " + bt ) ; jmsMsg = new JmsMessageImpl ( newMsg , newSess ) ; break ; } if ( passThruProps != null ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( tc , "Pass through properties provided - attempting to assign to new message" ) ; String producerProp = ( String ) passThruProps . get ( JmsraConstants . PRODUCER_DOES_NOT_MODIFY_PAYLOAD_AFTER_SET ) ; String consumerProp = ( String ) passThruProps . get ( JmsraConstants . CONSUMER_DOES_NOT_MODIFY_PAYLOAD_AFTER_GET ) ; if ( producerProp != null ) { jmsMsg . producerWontModifyPayloadAfterSet = producerProp . equalsIgnoreCase ( ApiJmsConstants . WILL_NOT_MODIFY_PAYLOAD ) ; } if ( consumerProp != null ) { jmsMsg . consumerWontModifyPayloadAfterGet = consumerProp . equalsIgnoreCase ( ApiJmsConstants . WILL_NOT_MODIFY_PAYLOAD ) ; } } jmsMsg . bodyReadOnly = true ; jmsMsg . propertiesReadOnly = true ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "inboundJmsInstance" ) ; return jmsMsg ; }
This static method is a factory for producing Message objects from
JsJmsMessage objects.
It is called by JmsSharedUtilsImpl.inboundMessagePath(...)

Note that this method cannot be easily moved to the shared utils
class because it access private state of the JmsMessageImpl object.

@param newMsg The inbound MFP message component we wish to get a JMS
representation of.
@param newSess The session to associate with the Message objects
@param passThruProps Session-like properties, some of which are passed to the message objects.
These properties originate in ConnectionFactory and ActivationSpec admin objects, and are relevant
to message objects.
@return Message A JMS Message instance of the associated type to the
parameter MFP component.