package com.netflix.suro.message; import com.fasterxml.jackson.core.type.TypeReference; public class StringMessage implements MessageContainer { private final Message message; public static StringMessage from(String routingKey, String body) { return new StringMessage(routingKey, body); } public StringMessage(String routingKey, String body) { message = new Message(routingKey, body.getBytes()); } public StringMessage(Message message) { this.message = message; } @Override public String getRoutingKey() { return message.getRoutingKey(); } @Override public <T> T getEntity(Class<T> clazz) throws Exception { if (clazz.equals(byte[].class)) { return (T)message.getPayload(); } else if (clazz.equals(String.class)) { return (T)new String(message.getPayload()); } else { throw new RuntimeException("Message cannot be deserialized to " + clazz.getCanonicalName()); } } @Override public <T> T getEntity(TypeReference<T> typeReference) throws Exception { throw new RuntimeException("Message cannot be deserialized to TypeReference"); } @Override public Message getMessage() { return message; } }