use of org.apache.qpid.server.message.internal.InternalMessage in project qpid-broker-j by apache.
the class PropertyConverter_v1_0_to_InternalTest method testUserIdConversion.
public void testUserIdConversion() {
final byte[] data = new byte[] { (byte) 0xc3, 0x28 };
final Binary userId = new Binary(data);
Properties properties = new Properties();
properties.setUserId(userId);
Message_1_0 originalMessage = createTestMessage(properties);
InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
assertEquals("Unexpected userId", new String(data, UTF_8), convertedMessage.getMessageHeader().getUserId());
}
use of org.apache.qpid.server.message.internal.InternalMessage in project qpid-broker-j by apache.
the class PropertyConverter_v1_0_to_InternalTest method testReplyToConversion.
public void testReplyToConversion() {
final String replyTo = "amq.direct/test";
Properties properties = new Properties();
properties.setReplyTo(replyTo);
Message_1_0 originalMessage = createTestMessage(properties);
InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
assertEquals("Unexpected replyTo", replyTo, convertedMessage.getMessageHeader().getReplyTo());
}
use of org.apache.qpid.server.message.internal.InternalMessage in project qpid-broker-j by apache.
the class PropertyConverter_v1_0_to_InternalTest method testCorrelationIdUnsignedLongConversion.
public void testCorrelationIdUnsignedLongConversion() {
final UnsignedLong correlationId = UnsignedLong.valueOf(-1L);
Properties properties = new Properties();
properties.setCorrelationId(correlationId);
Message_1_0 originalMessage = createTestMessage(properties);
InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
assertEquals("Unexpected correlationId", correlationId.toString(), convertedMessage.getMessageHeader().getCorrelationId());
}
use of org.apache.qpid.server.message.internal.InternalMessage in project qpid-broker-j by apache.
the class PropertyConverter_v1_0_to_InternalTest method testMessageIdUuidConversion.
public void testMessageIdUuidConversion() {
final UUID messageId = UUID.randomUUID();
Properties properties = new Properties();
properties.setMessageId(messageId);
Message_1_0 originalMessage = createTestMessage(properties);
InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
assertEquals("Unexpected messageId", messageId.toString(), convertedMessage.getMessageHeader().getMessageId());
}
use of org.apache.qpid.server.message.internal.InternalMessage in project qpid-broker-j by apache.
the class AbstractVirtualHost method publishMessage.
@Override
public int publishMessage(@Param(name = "message") final ManageableMessage message) {
final String address = message.getAddress();
MessageDestination destination = address == null ? getDefaultDestination() : getAttainedMessageDestination(address);
if (destination == null) {
destination = getDefaultDestination();
}
final AMQMessageHeader header = new MessageHeaderImpl(message);
Serializable body = null;
Object messageContent = message.getContent();
if (messageContent != null) {
if (messageContent instanceof Map || messageContent instanceof List) {
if (message.getMimeType() != null || message.getEncoding() != null) {
throw new IllegalArgumentException("If the message content is provided as map or list, the mime type and encoding must be left unset");
}
body = (Serializable) messageContent;
} else if (messageContent instanceof String) {
String contentTransferEncoding = message.getContentTransferEncoding();
if ("base64".equalsIgnoreCase(contentTransferEncoding)) {
body = Strings.decodeBase64((String) messageContent);
} else if (contentTransferEncoding == null || contentTransferEncoding.trim().equals("") || contentTransferEncoding.trim().equalsIgnoreCase("identity")) {
String mimeType = message.getMimeType();
if (mimeType != null && !(mimeType = mimeType.trim().toLowerCase()).equals("")) {
if (!(mimeType.startsWith("text/") || Arrays.asList("application/json", "application/xml").contains(mimeType))) {
throw new IllegalArgumentException(message.getMimeType() + " is invalid as a MIME type for this message. " + "Only MIME types of the text type can be used if a string is supplied as the content");
} else if (mimeType.matches(".*;\\s*charset\\s*=.*")) {
throw new IllegalArgumentException(message.getMimeType() + " is invalid as a MIME type for this message. " + "If a string is supplied as the content, the MIME type must not include a charset parameter");
}
}
body = (String) messageContent;
} else {
throw new IllegalArgumentException("contentTransferEncoding value '" + contentTransferEncoding + "' is invalid. The only valid values are base64 and identity");
}
} else {
throw new IllegalArgumentException("The message content (if present) can only be a string, map or list");
}
}
InternalMessage internalMessage = InternalMessage.createMessage(getMessageStore(), header, body, message.isPersistent(), address);
AutoCommitTransaction txn = new AutoCommitTransaction(getMessageStore());
final InstanceProperties instanceProperties = new InstanceProperties() {
@Override
public Object getProperty(final Property prop) {
switch(prop) {
case EXPIRATION:
Date expiration = message.getExpiration();
return expiration == null ? 0 : expiration.getTime();
case IMMEDIATE:
return false;
case PERSISTENT:
return message.isPersistent();
case MANDATORY:
return false;
case REDELIVERED:
return false;
default:
return null;
}
}
};
final RoutingResult<InternalMessage> result = destination.route(internalMessage, address, instanceProperties);
return result.send(txn, null);
}
Aggregations