Источник в 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
? Это типично (или должно быть так или иначе) для существования обеих версий метода.