package uk.ac.cam.echo.server.serializers; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonProcessingException; import org.codehaus.jackson.map.JsonSerializer; import org.codehaus.jackson.map.SerializerProvider; import org.hibernate.proxy.HibernateProxy; import uk.ac.cam.echo.data.Message; import uk.ac.cam.echo.data.User; import java.io.IOException; public class MessageSerializer extends JsonSerializer<Message> { public MessageSerializer() { } @Override public void serialize(Message message, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeStartObject(); jsonGenerator.writeNumberField("id", message.getId()); jsonGenerator.writeStringField("contents", message.getContents()); jsonGenerator.writeNumberField("timeStamp", message.getTimeStamp()); if (message.getSender() != null) { User user = message.getSender(); if (user instanceof HibernateProxy) { user = (User) ((HibernateProxy) user).getHibernateLazyInitializer().getImplementation(); } jsonGenerator.writeObjectField("sender", user); } //jsonGenerator.writeNumberField("senderId", message.getSender().getId()); jsonGenerator.writeStringField("senderName", message.getSenderName()); jsonGenerator.writeNumberField("conversationId", message.getConversation().getId()); jsonGenerator.writeEndObject(); } }