Dropwizard throws NPE for a POST Request with @Valid over a list

198 views
Skip to first unread message

Sarath Prabath Redlapalli Jaya

unread,
Mar 16, 2018, 5:46:29 AM3/16/18
to dropwizard-dev
Dropwizard throws NPE and responds with 500 while accessing a POST resource. The resource method has validation over body

Resource Snippet:

public Response aPost(@Valid @NotEmpty List<Model> models) {


Stack Trace:


[2018-03-16 14:14:16,425] [] [WARN] MSG - o.e.j.s.HttpChannel /aPost


javax.servlet.ServletException: java.lang.NullPointerException


        at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:489)


        at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)


        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)


        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)


        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)


        at io.dropwizard.jetty.NonblockingServletHolder.handle(NonblockingServletHolder.java:49)


        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1650)


        at io.dropwizard.servlets.ThreadNameFilter.doFilter(ThreadNameFilter.java:34)


        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)


        at io.dropwizard.jersey.filter.AllowedMethodsFilter.handle(AllowedMethodsFilter.java:45)


        at io.dropwizard.jersey.filter.AllowedMethodsFilter.doFilter(AllowedMethodsFilter.java:39)


        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)


        at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:120)


        at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:135)


        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)


        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)


        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)


        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)


        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)


        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)


        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)


        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)


        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)


        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)


        at com.codahale.metrics.jetty9.InstrumentedHandler.handle(InstrumentedHandler.java:241)


        at io.dropwizard.jetty.RoutingHandler.handle(RoutingHandler.java:52)


        at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:455)


        at io.dropwizard.jetty.BiDiGzipHandler.handle(BiDiGzipHandler.java:68)


        at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:56)


        at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:169)


        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)


        at org.eclipse.jetty.server.Server.handle(Server.java:561)


        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:334)


        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)


        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)


        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:104)


        at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)


        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:679)


        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:597)


        at java.lang.Thread.run(Thread.java:748)


Caused by: java.lang.NullPointerException: null


        at sun.reflect.annotation.TypeAnnotationParser.mapTypeAnnotations(TypeAnnotationParser.java:356)


        at sun.reflect.annotation.AnnotatedTypeFactory$AnnotatedTypeBaseImpl.<init>(AnnotatedTypeFactory.java:139)


        at sun.reflect.annotation.AnnotatedTypeFactory.buildAnnotatedType(AnnotatedTypeFactory.java:65)


        at sun.reflect.annotation.TypeAnnotationParser.buildAnnotatedType(TypeAnnotationParser.java:79)


        at java.lang.reflect.Field.getAnnotatedType(Field.java:1170)


        at org.hibernate.validator.internal.metadata.provider.TypeAnnotationAwareMetaDataProvider.findTypeAnnotationConstraintsForMember(TypeAnnotationAwareMetaDataProvider.java:65)


        at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.findPropertyMetaData(AnnotationMetaDataProvider.java:246)


        at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.getFieldMetaData(AnnotationMetaDataProvider.java:229)


        at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.retrieveBeanConfiguration(AnnotationMetaDataProvider.java:137)


        at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.getBeanConfiguration(AnnotationMetaDataProvider.java:125)


        at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.getBeanConfigurationForHierarchy(AnnotationMetaDataProvider.java:108)


        at org.hibernate.validator.internal.metadata.BeanMetaDataManager.createBeanMetaData(BeanMetaDataManager.java:203)


        at org.hibernate.validator.internal.metadata.BeanMetaDataManager.getOrCreateBeanMetaData(BeanMetaDataManager.java:231)


        at org.hibernate.validator.internal.metadata.BeanMetaDataManager.getBeanMetaData(BeanMetaDataManager.java:178)


        at org.hibernate.validator.internal.engine.ValidatorImpl.buildNewLocalExecutionContext(ValidatorImpl.java:770)


        at org.hibernate.validator.internal.engine.ValidatorImpl.validateCascadedConstraint(ValidatorImpl.java:753)


        at org.hibernate.validator.internal.engine.ValidatorImpl.validateCascadedConstraints(ValidatorImpl.java:680)


        at org.hibernate.validator.internal.engine.ValidatorImpl.validateParametersInContext(ValidatorImpl.java:1117)


        at org.hibernate.validator.internal.engine.ValidatorImpl.validateParameters(ValidatorImpl.java:301)


        at org.hibernate.validator.internal.engine.ValidatorImpl.validateParameters(ValidatorImpl.java:255)


        at io.dropwizard.jersey.validation.DropwizardConfiguredValidator.validateResourceAndInputParams(DropwizardConfiguredValidator.java:45)


        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:134)


        at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160)


        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)


        at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)


        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)


        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)


        at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)


        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)


        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)


        at org.glassfish.jersey.internal.Errors.process(Errors.java:315)


        at org.glassfish.jersey.internal.Errors.process(Errors.java:297)


        at org.glassfish.jersey.internal.Errors.process(Errors.java:267)


        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)


        at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)


        at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)


        at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)


        ... 39 common frames omitted


The request is passing through, when @Valid annotation is absent

Thanks

Jochen Schalanda

unread,
Mar 16, 2018, 7:58:28 AM3/16/18
to dropwiz...@googlegroups.com
Hi,

which version of Dropwizard are you using exactly?

Could you provide a minimal example which can be used to reproduce the issue?

Cheers,
Jochen

--
You received this message because you are subscribed to the Google Groups "dropwizard-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dropwizard-de...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Sarath Prabath Redlapalli Jaya

unread,
Mar 21, 2018, 11:34:01 AM3/21/18
to dropwiz...@googlegroups.com
Hi Jochen,

Figured out the problem while building the sample class for you. Turned out i was using @NotEmpty from javax instead of hibernate-validator.

Thank you

Regards

Jochen

To unsubscribe from this group and stop receiving emails from it, send an email to dropwizard-dev+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to a topic in the Google Groups "dropwizard-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dropwizard-dev/AmftNIllJ5g/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dropwizard-dev+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages