[ https://issues.apache.org/jira/browse/CAMEL-12926?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16684015#comment-16684015 ]
Andrea Tarocchi commented on CAMEL-12926: ----------------------------------------- Hi [~ramu11], I'm also working on this one, which of the 2 alternatives do you think is better? Or what else you propose to fix it? > null pointer exceptions accessing swagger url in blueprint projects > ------------------------------------------------------------------- > > Key: CAMEL-12926 > URL: https://issues.apache.org/jira/browse/CAMEL-12926 > Project: Camel > Issue Type: Bug > Components: camel-swagger > Affects Versions: 2.22.1 > Reporter: Andrea Tarocchi > Assignee: Ramu > Priority: Major > > When a blueprint like: > {code:xml} > <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.5.0" > xsi:schemaLocation=" > http://www.osgi.org/xmlns/blueprint/v1.0.0 > https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd > http://camel.apache.org/schema/blueprint > http://camel.apache.org/schema/blueprint/camel-blueprint.xsd"> > > <reference id="httpService" interface="org.osgi.service.http.HttpService"/> > <bean class="org.apache.camel.component.servlet.osgi.OsgiServletRegisterer" > init-method="register" > destroy-method="unregister"> > <property name="alias" value="/camel-rest-sql"/> > <property name="httpService" ref="httpService"/> > <property name="servlet" ref="camelServlet"/> > </bean> > <bean id="camelServlet" > class="org.apache.camel.component.servlet.CamelHttpTransportServlet"/> > <camelContext xmlns="http://camel.apache.org/schema/blueprint"> > <restConfiguration > component="servlet" > bindingMode="json" > contextPath="/camel-rest-sql" port="{{env:HTTP_PORT:8181}}" > apiContextPath="/api-doc"> > </restConfiguration> > <rest path="/books" consumes="application/json" > produces="application/json"> > <get uri="/" outType="java.util.String"> > <to uri="log:blueprint-swagger"/> > </get> > </rest> > </camelContext> > </blueprint> > {code} > and then one try to access {{http://localhost:8181/camel-rest-sql/api-doc}} > there is a null pointer exception: > {code:java} > 2018-11-03 08:31:37,062 | INFO | ead #2 - timer://foo | generateOrder-route > | 120 - org.apache.camel.camel-core - 2.21.0.fuse-720040 | > Inserted new order 1 > 2018-11-03 08:31:37,547 | INFO | rocessed%20=%20false | processOrder-route > | 120 - org.apache.camel.camel-core - 2.21.0.fuse-720040 | > Processed order id 1 item ActiveMQ of 10 copies of ActiveMQ in Action > 2018-11-03 08:31:45,741 | WARN | qtp1210359820-76 | > o.a.c.s.RestSwaggerProcessor | 125 - org.apache.camel.camel-swagger-java > - 2.21.0.fuse-720040 | Error rendering Swagger API due null > java.lang.NullPointerException: null > at > org.apache.camel.swagger.RestSwaggerSupport.renderResourceListing(RestSwaggerSupport.java:211) > ~[?:?] > at > org.apache.camel.swagger.RestSwaggerProcessor.process(RestSwaggerProcessor.java:119) > ~[?:?] > at > org.apache.camel.component.rest.RestApiProducer.process(RestApiProducer.java:36) > ~[?:?] > at > org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61) > ~[?:?] > at > org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148) > ~[?:?] > at > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548) > ~[?:?] > at > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) > ~[?:?] > at > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) > ~[?:?] > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97) > ~[?:?] > at > org.apache.camel.http.common.CamelServlet.doService(CamelServlet.java:214) > ~[?:?] > at > org.apache.camel.http.common.CamelServlet.service(CamelServlet.java:80) ~[?:?] > at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) > ~[36:javax.servlet-api:3.1.0] > at > org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865) ~[?:?] > at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:535) > ~[?:?] > at > org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) > ~[?:?] > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) > ~[?:?] > at > org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) > ~[?:?] > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) > ~[?:?] > at > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) > ~[?:?] > at > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) > ~[?:?] > at > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) > ~[?:?] > at > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317) > ~[?:?] > at > org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:293) > ~[?:?] > at > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) > ~[?:?] > at > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) > ~[?:?] > at > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) > ~[?:?] > at > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) > ~[?:?] > at > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219) > ~[?:?] > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) > ~[?:?] > at > org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) > ~[?:?] > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) > ~[?:?] > at org.eclipse.jetty.server.Server.handle(Server.java:531) ~[?:?] > at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352) > ~[?:?] > at > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) > ~[?:?] > at > org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) > ~[?:?] > at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) > ~[?:?] > at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) > ~[?:?] > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) > ~[94:org.eclipse.jetty.util:9.4.11.v20180605] > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) > ~[94:org.eclipse.jetty.util:9.4.11.v20180605] > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) > ~[94:org.eclipse.jetty.util:9.4.11.v20180605] > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:132) > ~[94:org.eclipse.jetty.util:9.4.11.v20180605] > at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762) > [94:org.eclipse.jetty.util:9.4.11.v20180605] > at > org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680) > [94:org.eclipse.jetty.util:9.4.11.v20180605] > at java.lang.Thread.run(Thread.java:748) [?:?] > {code} > this is happening because {{restConfiguration}} is build with > {{apiProperties}} as {{null}} because there is no tag {{<apiProperty key="" > value=""/>}} inside {{<restConfiguration>}} tag; thus the null pointer here: > https://github.com/apache/camel/blob/master/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerSupport.java#L213-L215 > What do you think is the best approach to fix this: > * check for null in {{RestSwaggerSupport.java}} > * or investigate why blueprint use initialize {{apiProperties}} as {{null}} > (which I think might be a legitimate behaviour) -- This message was sent by Atlassian JIRA (v7.6.3#76005)