static

in qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessagePropertyIntercepter.java [99:192]


    static {
        PROPERTY_INTERCEPTERS.put(JMS_AMQP_TTL, new PropertyIntercepter() {
            @Override
            public Object getProperty(AmqpJmsMessageFacade message) throws JMSException {
                if (message.hasAmqpTimeToLiveOverride()) {
                    return message.getAmqpTimeToLiveOverride();
                }
                return null;
            }

            @Override
            public void setProperty(AmqpJmsMessageFacade message, Object value) throws JMSException {
                Long rc = (Long) TypeConversionSupport.convert(value, Long.class);
                if (rc == null) {
                    throw new JMSException("Property " + JMS_AMQP_TTL + " cannot be set from a " + value.getClass().getName() + ".");
                }
                message.setAmqpTimeToLiveOverride(rc);
            }

            @Override
            public boolean propertyExists(AmqpJmsMessageFacade message) {
                return message.hasAmqpTimeToLiveOverride();
            }

            @Override
            public void clearProperty(AmqpJmsMessageFacade message) throws JMSException {
                message.setAmqpTimeToLiveOverride(null);
            }
        });
        PROPERTY_INTERCEPTERS.put(JMS_AMQP_REPLY_TO_GROUP_ID, new PropertyIntercepter() {
            @Override
            public Object getProperty(AmqpJmsMessageFacade message) throws JMSException {
                return message.getReplyToGroupId();
            }

            @Override
            public void setProperty(AmqpJmsMessageFacade message, Object value) throws JMSException {
                String rc = (String) TypeConversionSupport.convert(value, String.class);
                if (rc == null) {
                    throw new JMSException("Property " + JMS_AMQP_REPLY_TO_GROUP_ID + " cannot be set from a " + value.getClass().getName() + ".");
                }
                message.setReplyToGroupId(rc);
            }

            @Override
            public boolean propertyExists(AmqpJmsMessageFacade message) {
                String replyToGroupId = message.getReplyToGroupId();
                return replyToGroupId != null && !replyToGroupId.equals("");
            }

            @Override
            public void clearProperty(AmqpJmsMessageFacade message) throws JMSException {
                message.setReplyToGroupId(null);
            }
        });
        PROPERTY_INTERCEPTERS.put(JMS_AMQP_TYPED_ENCODING, new PropertyIntercepter() {
            @Override
            public Object getProperty(AmqpJmsMessageFacade message) throws JMSException {
                if (message instanceof AmqpJmsObjectMessageFacade) {
                    return ((AmqpJmsObjectMessageFacade) message).isAmqpTypedEncoding();
                }

                return null;
            }

            @Override
            public void setProperty(AmqpJmsMessageFacade message, Object value) throws JMSException {
                Boolean rc = (Boolean) TypeConversionSupport.convert(value, Boolean.class);
                if (rc == null) {
                    throw new JMSException("Property " + JMS_AMQP_TYPED_ENCODING + " cannot be set from a " + value.getClass().getName() + ".");
                }

                if (message instanceof AmqpJmsObjectMessageFacade) {
                    ((AmqpJmsObjectMessageFacade) message).setUseAmqpTypedEncoding(rc);
                } else {
                    throw new MessageFormatException(JMS_AMQP_TYPED_ENCODING + " is only applicable to ObjectMessage");
                }
            }

            @Override
            public boolean propertyExists(AmqpJmsMessageFacade message) {
                if (message instanceof AmqpJmsObjectMessageFacade) {
                    return ((AmqpJmsObjectMessageFacade) message).isAmqpTypedEncoding();
                }

                return false;
            }

            @Override
            public void clearProperty(AmqpJmsMessageFacade message) throws JMSException {
                // TODO - Should we leave encoding intact or change to the default.
            }
        });
    }