扩展JBoss Data Virt ws转换程序以处理JSONP

时间:2018-08-29 23:39:12

标签: java jsonp redhat-datavirt

扩展org.teiid.translator.ws以连接到返回JSONP(其媒体类型通常是application / javascript)的Web服务的最佳方法是什么?现有的ws转换器只能读取JSON或XML。总的来说,翻译器的设计目的是否在于促进转换逻辑的注入以处理任何网页结构/格式(例如JSONP,纯文本,html等)?

对于JSONP,我倾向于创建自己的org.teiid.core.types.InputStreamFactory实现,例如com.acme.JsonpToJsonInputStreamFactory,在其中定义我自己的JsonpToJsonReaderInputStream(扩展ReaderInputStream),以跳过领先的

NODE_DEBUG=tls

和尾随

randomFunctionName(

JSONP有效负载,然后修改ClobInputStreamFactory.getInputStream以返回该值,而不是ReaderInputStream。然后我替换两个实例

)

位于translator-ws-jsonp.BinaryWSProcedureExecution中(其中translator-ws-jsonp基于translator-ws)与

ds = new InputStreamFactory.ClobInputStreamFactory(...);

1 个答案:

答案 0 :(得分:1)

WS转换程序以Blob形式返回结果,如何解压结果取决于您。 IMO,您实际上不需要构建另一个翻译器。

当前,JDV中的典型用例是读取blob并使用JSONTOXML函数转换为XML,以便随后可以使用XMLTABLE之类的结构将结果解析为表格结构。因此,您可以编写一个像JSONPTOJSON这样的UDF,就像上面提到的那样,然后使用JSONTOXML(JSONPTOJSON(blob))作为XMLTABLE的输入。