package com.w11k.lsql; import com.fasterxml.jackson.annotation.JsonIgnore; import com.google.common.io.ByteStreams; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Arrays; public class Blob { public static Blob EMPTY = new Blob(new byte[]{}); private byte[] data; public Blob(byte[] data) { setData(data); } public Blob(InputStream input) { setData(input); } public byte[] getData() { return data; } public void setData(InputStream inputStream) { try { this.data = ByteStreams.toByteArray(inputStream); } catch (IOException e) { throw new RuntimeException(e); } } public void setData(byte[] data) { this.data = data; } @JsonIgnore public InputStream getInputStream() { return new ByteArrayInputStream(getData()); } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Blob blob = (Blob) o; return Arrays.equals(data, blob.data); } @Override public int hashCode() { return Arrays.hashCode(data); } @Override public String toString() { int size = data != null ? data.length : 0; return "Blob{size=" + size + "}"; } }