package serializers.msgpack;
import java.io.IOException;
import java.util.List;
import org.msgpack.packer.Packer;
import org.msgpack.template.AbstractTemplate;
import org.msgpack.template.ListTemplate;
import org.msgpack.template.NotNullableTemplate;
import org.msgpack.template.Template;
import org.msgpack.unpacker.Unpacker;
import data.media.Image;
import data.media.Media;
import data.media.MediaContent;
final class MediaContentTemplate extends AbstractTemplate<MediaContent> {
static final Template<MediaContent> INSTANCE = new MediaContentTemplate();
static final Template<Media> mediaTemplate = new NotNullableTemplate<Media>(MediaTemplate.INSTANCE);
@SuppressWarnings({ "rawtypes", "unchecked" })
static final Template<List<Image>> imageListTemplate =
new NotNullableTemplate<List<Image>>(new ListTemplate(
new NotNullableTemplate<Image>(ImageTemplate.INSTANCE)));
@Override
public void write(Packer packer, MediaContent v, boolean required) throws IOException {
packer.writeArrayBegin(2);
mediaTemplate.write(packer, v.media, true);
imageListTemplate.write(packer, v.images, true);
packer.writeArrayEnd();
}
@Override
public MediaContent read(Unpacker unpacker, MediaContent to, boolean required) throws IOException {
unpacker.readArrayBegin();
to = new MediaContent(
mediaTemplate.read(unpacker, null, true),
imageListTemplate.read(unpacker, null, true)
);
unpacker.readArrayEnd();
return to;
}
}