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.
}
});
}