]
Steven Hawkins resolved TEIID-5183.
-----------------------------------
Fix Version/s: 10.1
9.3.6
10.0.2
Resolution: Done
The issue turned out to be that we were not resolving swagger obtained remotely. The code
was updated to make the resolve parameters explicit and to clean up some of the metadata
processing logic.
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
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.