/tpc/src/serializers/ProtostuffNumericJsonSerializer.java

http://thrift-protobuf-compare.googlecode.com/ · Java · 84 lines · 69 code · 11 blank · 4 comment · 0 complexity · 4ded2d0c90326bfe163ed819ad435b64 MD5 · raw file

  1. package serializers;
  2. import java.io.ByteArrayOutputStream;
  3. import org.codehaus.jackson.JsonParser;
  4. import serializers.protobuf.MediaContentHolder.Image;
  5. import serializers.protobuf.MediaContentHolder.Media;
  6. import serializers.protobuf.MediaContentHolder.MediaContent;
  7. import serializers.protobuf.MediaContentHolder.Image.Size;
  8. import serializers.protobuf.MediaContentHolder.Media.Player;
  9. import serializers.protostuff.MediaContentHolderNumericJSON;
  10. /**
  11. * @author David Yu
  12. * @created Oct 26, 2009
  13. */
  14. public class ProtostuffNumericJsonSerializer implements ObjectSerializer<MediaContent>
  15. {
  16. private static final MediaContentHolderNumericJSON json = new MediaContentHolderNumericJSON();
  17. public MediaContent create()
  18. {
  19. MediaContent contentProto = MediaContent
  20. .newBuilder().setMedia(
  21. Media.newBuilder()
  22. .clearCopyright()
  23. .setFormat("video/mpg4")
  24. .setPlayer(Player.JAVA)
  25. .setTitle("Javaone Keynote")
  26. .setUri("http://javaone.com/keynote.mpg")
  27. .setDuration(1234567)
  28. .setSize(123)
  29. .setHeight(0)
  30. .setWidth(0)
  31. .setBitrate(123)
  32. .addPerson("Bill Gates")
  33. .addPerson("Steve Jobs")
  34. .build()
  35. ).addImage(
  36. Image.newBuilder()
  37. .setHeight(0)
  38. .setTitle("Javaone Keynote")
  39. .setUri("http://javaone.com/keynote_large.jpg")
  40. .setWidth(0)
  41. .setSize(Size.LARGE)
  42. .build()
  43. ).addImage(
  44. Image.newBuilder()
  45. .setHeight(0)
  46. .setTitle("Javaone Keynote")
  47. .setUri("http://javaone.com/keynote_thumbnail.jpg")
  48. .setWidth(0)
  49. .setSize(Size.SMALL)
  50. .build()
  51. )
  52. .build();
  53. return contentProto;
  54. }
  55. public String getName()
  56. {
  57. return "protostuff-numeric-json";
  58. }
  59. public MediaContent deserialize(byte[] array) throws Exception
  60. {
  61. MediaContent.Builder builder = MediaContent.newBuilder();
  62. JsonParser parser = json.getJsonFactory().createJsonParser(array);
  63. json.mergeFrom(parser, builder);
  64. parser.close();
  65. return builder.build();
  66. }
  67. public byte[] serialize(MediaContent content) throws Exception
  68. {
  69. ByteArrayOutputStream out = new ByteArrayOutputStream(512);
  70. json.writeTo(out, content);
  71. return out.toByteArray();
  72. }
  73. }