]
Xavier Coulon updated JBIDE-19734:
----------------------------------
Fix Version/s: 4.3.0.Beta2
(was: 4.3.0.Beta1)
JAX-RS Validator NPEs with wildcard type arguments
--------------------------------------------------
Key: JBIDE-19734
URL:
https://issues.jboss.org/browse/JBIDE-19734
Project: Tools (JBoss Tools)
Issue Type: Bug
Components: webservices
Environment: Eclipse Mars, JDK 1.7 32-bit
Reporter: Kory Markevich
Assignee: Xavier Coulon
Fix For: 4.3.0.Beta2
JBoss JAX-RS Tools feature version: 1.8.0.Beta1-v20150417-0152-B698
The JAX-RS validator throws an NPE when using generic types with wildcards. Specifically,
the call to typeArgumentBinding.getJavaElement() in SourceType.from(VariableDeclaration)
can return null, which the SourceType constructor then tries to use, resulting in the
following stack trace. Depending on the code, the validator could trigger this exception
as frequently as every pause in typing, resulting in a modal error box popping up
constantly. The sample code provided only triggers it on save though.
java.lang.NullPointerException
at org.jboss.tools.ws.jaxrs.core.jdt.SourceType.<init>(SourceType.java:157)
at org.jboss.tools.ws.jaxrs.core.jdt.SourceType.from(SourceType.java:49)
at
org.jboss.tools.ws.jaxrs.core.jdt.JdtUtils.resolveMethodSignature(JdtUtils.java:1109)
at
org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsResource$Builder.build(JaxrsResource.java:169)
at
org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsResource.update(JaxrsResource.java:273)
at
org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsMetamodel.processJavaElement(JaxrsMetamodel.java:647)
at
org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsMetamodel.processResourceChange(JaxrsMetamodel.java:608)
at
org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsMetamodel.processAffectedResources(JaxrsMetamodel.java:574)
at
org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.ResourceChangedBuildJob.run(ResourceChangedBuildJob.java:77)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)