在Android上的Converter for Square的Tape库中获取空缓冲区

时间:2019-05-13 19:34:13

标签: android kotlin square-tape

我正在Android上使用Tape在Kotlin中制作原型。我正在使用发布到Maven(2.0.0-beta)的最新版本,并且正在使用外部存储中的文件的Android上设置一个最小的ObjectQueue。

我正在实现我的转换器,使其仅使用Jackson来序列化所有内容,因此有时会使用空字节数组调用我的转换器。这是我的转换器的实现

class MyConverter<T>(val forName: String) : ObjectQueue.Converter<MyType<T>> {
    private val mapper = ObjectMapper()

    override fun from(bytes: ByteArray): MyType<T> {
        if (bytes.isEmpty()) {
            throw QueueReadException("Why does this happen?")
        }
        return mapper.readValue<MyType<T>>(bytes, object : TypeReference<MyType<T>>() {})
    }

    override fun toStream(value: MyType<T>, os: OutputStream) {
        os.write(mapper.writeValueAsBytes(value))
    }
}

当我尝试使用queue.peek(n)从队列中读取元素时,我知道它的发生,但是根据queue.size()并通过查看实际的文件内容,队列中肯定有足够的元素。杰克逊写的一堆json元素。

这是一个新的空白队列文件的屏幕快照。

enter image description here

这是我收到此错误时队列文件的外观的屏幕截图。

enter image description here

我不确定我是否应该期望该队列文件始终清晰易懂,或者始终跨越我定义为项目的范围。

还有其他人看到吗?我们甚至应该使用2.0.0-beta吗?从github问题来看,目前看来该库几乎没有维护。

0 个答案:

没有答案