Каков наилучший способ расширения org.teiid.translator.ws для подключения к веб-сервису, который возвращает JSONP (медиатипом которого обычно является application / javascript)? Существующий переводчик WS может читать только JSON или XML. В целом, был ли создан переводчик для облегчения внедрения логики преобразования для обработки любой структуры / формата веб-страницы (например, JSONP, обычный текст, HTML и т. Д.)?
Для JSONP я склоняюсь к созданию собственной реализации org.teiid.core.types.InputStreamFactory, скажем com.acme.JsonpToJsonInputStreamFactory, в которой я определяю свой собственный JsonpToJsonReaderInputStream (расширяющий ReaderInputStream3), который пропускает ведущий * 100
randomFunctionName(
и трейлинг
)
полезной нагрузки JSONP и измените ClobInputStreamFactory.getInputStream, чтобы вернуть его вместо ReaderInputStream. Затем я заменяю оба экземпляра
ds = new InputStreamFactory.ClobInputStreamFactory(...);
в translationator-ws-jsonp.BinaryWSProcedureExecution (где translationator-ws-jsonp основан на translation-ws) с
ds = new JsonpToJsonInputStreamFactory.ClobInputStreamFactory(...);