Источник в ByteSource

API, с которым я работаю, принимает com.google.common.io.ByteSource, Мой API принимает в javax.xml.transform.Source так как я делаю Schema проверка, а также вызов другого API. Есть ли чистый способ конвертировать из Source к ByteSource и / или есть лучший объект, который будет соответствовать потребностям обоих методов (например, ByteSource и Source).

2 ответа

Решение

ByteSource может дать InputStream, который можно использовать для преобразования, используя ByteSource.openBufferedStream,

ByteSource а также Source не похоже на особо совместимые API:

  • Source в общем случае не является источником байтов. Существует несколько реализаций, и только одна может (StreamSource) обеспечивает InputStream для чтения байтов.
  • Четное StreamSource не совместим с ожидаемым договором ByteSource, Это выглядит как StreamSource в основном это обертка вокруг одного InputStream и / или Reader, в то время как ByteSource Ожидается, что сможет вернуть новый, независимый InputStream каждый раз openStream() называется.

Разве нет версии API, с которой вы работаете, которая требует InputStream а не ByteSource? Это типично (или должно быть так или иначе) для существования обеих версий метода.

Другие вопросы по тегам