springfox: @ApiModelProperty throwing NumberFormatException if example value is not set
Hi,
When we don’t set example value in @ApiModelProperty for Wrapper class, its try to set empty string (“”) as an example and during parsing its throw NumberFormatException, can’t we have something which set default value for those wrapper class like for Integer it set 0 in JSON example. We are facing this issue for IntegerProperty, DecimalProperty, BaseIntegerProperty. Below i attached Exception log,
NumberFormatException stack trace
NumberFormatException: For input string: ""
at java.lang.Integer.parseInt(String)
at io.swagger.models.properties.IntegerProperty.setExample(Object)
at io.swagger.models.properties.AbstractProperty.setExample(String)
at springfox.documentation.swagger2.mappers.ModelMapper.mapProperty(ModelProperty)
at springfox.documentation.swagger2.mappers.ModelMapper.mapProperties(SortedMap)
at springfox.documentation.swagger2.mappers.ModelMapper.mapProperties(Model)
at springfox.documentation.swagger2.mappers.ModelMapper.mapModels(Map)
at springfox.documentation.swagger2.mappers.ModelMapper.modelsFromApiListings(Multimap)
at springfox.documentation.swagger2.mappers.ServiceModelToSwagger2MapperImpl.mapDocumentation(Documentation)
at springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(String, HttpServletRequest)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Method, Object, Object[])
at sun.reflect.NativeMethodAccessorImpl.invoke(Object, Object[])
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Object, Object[])
at java.lang.reflect.Method.invoke(Object, Object[])
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(Object[])
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(NativeWebRequest, ModelAndViewContainer, Object[])
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletWebRequest, ModelAndViewContainer, Object[])
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(HttpServletRequest, HttpServletResponse, HandlerMethod)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(HttpServletRequest, HttpServletResponse, HandlerMethod)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(HttpServletRequest, HttpServletResponse, Object)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(HttpServletRequest, HttpServletResponse)
at org.springframework.web.servlet.DispatcherServlet.doService(HttpServletRequest, HttpServletResponse)
at org.springframework.web.servlet.FrameworkServlet.processRequest(HttpServletRequest, HttpServletResponse)
at org.springframework.web.servlet.FrameworkServlet.doGet(HttpServletRequest, HttpServletResponse)
at javax.servlet.http.HttpServlet.service(HttpServletRequest, HttpServletResponse)
at org.springframework.web.servlet.FrameworkServlet.service(HttpServletRequest, HttpServletResponse)
at javax.servlet.http.HttpServlet.service(ServletRequest, ServletResponse)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
at com.accelevents.security.AuthenticationTokenProcessingFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterInvocation)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse)
at com.accelevents.security.AuthenticationTokenProcessingFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HttpServletRequest, HttpServletResponse, FilterChain)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(HttpServletRequest, HttpServletResponse, FilterChain)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(ServletRequest, ServletResponse, FilterChain)
at org.springframework.security.web.FilterChainProxy.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(Filter, ServletRequest, ServletResponse, FilterChain)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(HttpServletRequest, HttpServletResponse, FilterChain)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpServletRequest, HttpServletResponse, FilterChain)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HttpServletRequest, HttpServletResponse, FilterChain)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(HttpServletRequest, HttpServletResponse, FilterChain)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
at org.springframework.boot.web.support.ErrorPageFilter.doFilter(HttpServletRequest, HttpServletResponse, FilterChain)
at org.springframework.boot.web.support.ErrorPageFilter.access$000(ErrorPageFilter, HttpServletRequest, HttpServletResponse, FilterChain)
at org.springframework.boot.web.support.ErrorPageFilter$1.doFilterInternal(HttpServletRequest, HttpServletResponse, FilterChain)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
at org.apache.catalina.core.StandardWrapperValve.invoke(Request, Response)
at org.apache.catalina.core.StandardContextValve.invoke(Request, Response)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Request, Response)
at org.apache.catalina.core.StandardHostValve.invoke(Request, Response)
at org.apache.catalina.valves.ErrorReportValve.invoke(Request, Response)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(Request, Response)
at org.apache.catalina.core.StandardEngineValve.invoke(Request, Response)
at org.apache.catalina.connector.CoyoteAdapter.service(Request, Response)
at org.apache.coyote.http11.AbstractHttp11Processor.process(SocketWrapper)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(SocketWrapper, SocketStatus)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun()
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run()
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker)
at java.util.concurrent.ThreadPoolExecutor$Worker.run()
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run()
at java.lang.Thread.run()
About this issue
- Original URL
- State: closed
- Created 6 years ago
- Comments: 31 (9 by maintainers)
Commits related to this issue
- resolve errors in the logs related to swagger: resolve way - https://github.com/springfox/springfox/issues/2265 — committed to EugeneVintsiv/iextrading-grabber by EugeneVintsiv 6 years ago
- resolve errors in the logs related to swagger: resolve way - https://github.com/springfox/springfox/issues/2265 — committed to EugeneVintsiv/iextrading-grabber by EugeneVintsiv 6 years ago
- Update pom.xml an issue of old-version of swagger @ApiParam throwing NumberFormatException (related to NcsRest.java). Find a solution to remove the old version of swagger from springfox from htt... — committed to EMResearch/EMB by deleted user 6 years ago
- Update swagger version an issue of old-version of swagger @ApiParam throwing NumberFormatException (related to NcsRest.java). Find a solution to remove the old version of swagger from springfox from... — committed to EMResearch/EMB by man-zhang 6 years ago
- fix NumberFormatException for @ApiModelProperty see: https://github.com/springfox/springfox/issues/2265 — committed to urlaubsverwaltung/urlaubsverwaltung by honnel 5 years ago
- fix NumberFormatException for @ApiModelProperty see: https://github.com/springfox/springfox/issues/2265 — committed to urlaubsverwaltung/urlaubsverwaltung by honnel 5 years ago
- fix NumberFormatException for @ApiModelProperty see: https://github.com/springfox/springfox/issues/2265 — committed to urlaubsverwaltung/urlaubsverwaltung by honnel 5 years ago
- fix NumberFormatException for @ApiModelProperty see: https://github.com/springfox/springfox/issues/2265 — committed to urlaubsverwaltung/urlaubsverwaltung by honnel 5 years ago
- fix NumberFormatException for @ApiModelProperty see: https://github.com/springfox/springfox/issues/2265 — committed to thiloplanz/urlaubsverwaltung by honnel 5 years ago
- fix swagger NumberFormatException https://github.com/springfox/springfox/issues/2265 — committed to verhoturkin/votingsystem by verhoturkin 5 years ago
- #32 : Added patch for Swagger bug See: https://github.com/swagger-api/swagger-core/issues/2979 and https://github.com/springfox/springfox/issues/2265 Upgrading to swagger-models 1.5.21 is the long t... — committed to gazbert/bxbot by gazbert 4 years ago
Hi everybody,
I solved this issue removing old swagger version (1.5.20) and add new one.
In pom.xml
@ajcRodrigues Thanks! It works like a charm 🍸
For Gradle’s users:
I’d prefer that the empty example is properly handled rather than attempting to cast it to a number. However, in lieu of that, just showing the warning without the stack trace would be nice. In the meantime, I’ve added the following to my application.properties file to hide the warning and stack trace:
logging.level.io.swagger.models.parameters.AbstractSerializableParameter=ERROR