[teiid-issues] [JBoss JIRA] (TEIID-5183) NPE in Swagger translator

dalex dalex (JIRA) issues at jboss.org
Fri Jan 5 05:47:00 EST 2018


    [ https://issues.jboss.org/browse/TEIID-5183?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13509758#comment-13509758 ] 

dalex dalex edited comment on TEIID-5183 at 1/5/18 5:46 AM:
------------------------------------------------------------

Hi [~shawkins] first of all thx a lot for the quick fix, I applied all changes from the issue and it's really better now. Could you please check another interesting case? It seems there is some bug related to swagger procs execution.
1. Configure the following swagger ra (it uses http://api.apis.guru/v2/specs/deutschebahn.com/fahrplan/v1/ endpoint):
{code:xml}
                <resource-adapter id="swagger">
                    <module slot="main" id="org.jboss.teiid.resource-adapter.webservice"/>
                    <transaction-support>NoTransaction</transaction-support>
                    <connection-definitions>
                        <connection-definition class-name="org.teiid.resource.adapter.ws.WSManagedConnectionFactory" jndi-name="java:/swagger" enabled="true" use-java-context="true" pool-name="teiid-swagger-ds">
                            <config-property name="EndPoint">
                                http://api.apis.guru/v2/specs/deutschebahn.com/fahrplan/v1/
                            </config-property>
                        </connection-definition>
                    </connection-definitions>
                </resource-adapter>
{code}

2. Try to run the following query:
{code:sql}
call mswagger."location/name"('Hannover');;
{code}
it will return a table containing only null values:
 !swagger_null_values.jpg|thumbnail! 
though if you have a look at the https://api.deutschebahn.com/freeplan/v1/location/Hannover link you will see that all values are correct and should be shown as values in the table.


was (Author: dalex005):
Hi [~shawkins] first of all thx a lot for the quick fix, I applied all changes from the issue and it's really better now. Could you please check another interesting case, seems there is some bug related to swagger procs execution.
1. Configure the following swagger ra (it uses http://api.apis.guru/v2/specs/deutschebahn.com/fahrplan/v1/ endpoint):
{code:xml}
                <resource-adapter id="swagger">
                    <module slot="main" id="org.jboss.teiid.resource-adapter.webservice"/>
                    <transaction-support>NoTransaction</transaction-support>
                    <connection-definitions>
                        <connection-definition class-name="org.teiid.resource.adapter.ws.WSManagedConnectionFactory" jndi-name="java:/swagger" enabled="true" use-java-context="true" pool-name="teiid-swagger-ds">
                            <config-property name="EndPoint">
                                http://api.apis.guru/v2/specs/deutschebahn.com/fahrplan/v1/
                            </config-property>
                        </connection-definition>
                    </connection-definitions>
                </resource-adapter>
{code}

2. Try to run the following query:
{code:sql}
call mswagger."location/name"('Hannover');;
{code}
it will return a table containing only null values:
 !swagger_null_values.jpg|thumbnail! 
though if you have a look at the https://api.deutschebahn.com/freeplan/v1/location/Hannover link you will see that all values are correct and should be shown as values in the table.

> NPE in Swagger translator
> -------------------------
>
>                 Key: TEIID-5183
>                 URL: https://issues.jboss.org/browse/TEIID-5183
>             Project: Teiid
>          Issue Type: Bug
>          Components: Misc. Connectors
>    Affects Versions: 9.3.4
>         Environment: teiid-9.3.4 on WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final)
>            Reporter: dalex dalex
>            Assignee: Steven Hawkins
>             Fix For: 10.1, 9.3.6, 10.0.2
>
>         Attachments: swagger_null_values.jpg
>
>
> When using the http://api.apis.guru/v2/specs/azure.com/redis/2017-10-01/ link as an endpoint for swagger resource adapter Teiid throws up the following error message (in bootstrapping phase), though with http://petstore.swagger.io/v2 endpoint according to the https://teiid.gitbooks.io/documents/reference/Swagger_Translator.html documentation the translator works:
> {code:noformat}
> 2017-12-18 16:14:43,975 WARN  [org.teiid.RUNTIME] (Worker1_async-teiid-threads1)  TEIID50036 VDB test.1 model "mswagger" metadata failed to load. Reason:java.lang.NullPointerExceptio
> n: java.lang.NullPointerException
>         at org.teiid.metadata.MetadataFactory.setUUID(MetadataFactory.java:155)
>         at org.teiid.metadata.MetadataFactory.addProcedureParameter(MetadataFactory.java:421)
>         at org.teiid.translator.swagger.SwaggerMetadataProcessor.addProcedureParameters(SwaggerMetadataProcessor.java:560)
>         at org.teiid.translator.swagger.SwaggerMetadataProcessor.addProcedure(SwaggerMetadataProcessor.java:261)
>         at org.teiid.translator.swagger.SwaggerMetadataProcessor.process(SwaggerMetadataProcessor.java:206)
>         at org.teiid.translator.swagger.SwaggerMetadataProcessor.process(SwaggerMetadataProcessor.java:74)
>         at org.teiid.translator.ExecutionFactory.getMetadata(ExecutionFactory.java:961)
>         at org.teiid.query.metadata.NativeMetadataRepository.getMetadata(NativeMetadataRepository.java:96)
>         at org.teiid.query.metadata.NativeMetadataRepository.loadMetadata(NativeMetadataRepository.java:62)
>         at org.teiid.query.metadata.ChainingMetadataRepository.loadMetadata(ChainingMetadataRepository.java:55)
>         at org.teiid.jboss.VDBService$6.run(VDBService.java:341)
>         at org.teiid.jboss.VDBService$7.run(VDBService.java:392)
>         at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:284)
>         at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
>         at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>         at java.lang.Thread.run(Thread.java:745)
> {code}
> The http://api.apis.guru/v2/specs/azure.com/redis/2017-10-01/ endpoint supports swagger API according to the https://apis.guru/browse-apis/ link and I can see json output when requesting the http://api.apis.guru/v2/specs/azure.com/redis/2017-10-01/swagger.json link. Probably the NPE appears because of RefParameter type which is not handled in SwaggerMetadataProcessor.addProcedureParameters method which leads to name = null.



--
This message was sent by Atlassian JIRA
(v7.5.0#75005)


More information about the teiid-issues mailing list