You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by kuro <96...@gmail.com> on 2016/02/27 00:57:04 UTC
RestSwaggerProcessor causes NullPointerException
Camel ver : 2.16.2
RestSwaggerProcessor causes NullPointerException when I access
`http://localhost:8888/api/api-doc`
error log
----------------------------------
[Camel (camel-1) thread #0 - NettyEventExecutorGroup] WARN
org.apache.camel.swagger.RestSwaggerProcessor - Error rendering Swagger API
due null
java.lang.NullPointerException
at
org.apache.camel.swagger.RestSwaggerReader$VerbOrdering.compare(RestSwaggerReader.java:358)
at
org.apache.camel.swagger.RestSwaggerReader$VerbOrdering.compare(RestSwaggerReader.java:339)
at java.util.TimSort.binarySort(TimSort.java:292)
at java.util.TimSort.sort(TimSort.java:217)
at java.util.Arrays.sort(Arrays.java:1512)
at java.util.ArrayList.sort(ArrayList.java:1454)
at java.util.Collections.sort(Collections.java:175)
at
org.apache.camel.swagger.RestSwaggerReader.parse(RestSwaggerReader.java:94)
at
org.apache.camel.swagger.RestSwaggerReader.read(RestSwaggerReader.java:83)
at
org.apache.camel.swagger.RestSwaggerSupport.renderResourceListing(RestSwaggerSupport.java:191)
at
org.apache.camel.swagger.RestSwaggerProcessor.process(RestSwaggerProcessor.java:95)
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:141)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
at
org.apache.camel.component.netty4.handlers.ServerChannelHandler.processAsynchronously(ServerChannelHandler.java:138)
at
org.apache.camel.component.netty4.handlers.ServerChannelHandler.channelRead0(ServerChannelHandler.java:109)
at
org.apache.camel.component.netty4.http.handlers.HttpServerChannelHandler.channelRead0(HttpServerChannelHandler.java:211)
at
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
at
org.apache.camel.component.netty4.http.handlers.HttpServerMultiplexChannelHandler.channelRead0(HttpServerMultiplexChannelHandler.java:113)
at
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:318)
at
io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:42)
at
io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:309)
at
io.netty.util.concurrent.DefaultEventExecutor.run(DefaultEventExecutor.java:36)
at
io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)
at java.lang.Thread.run(Thread.java:745)
----------------------------------
Here is my code.
@Override
public void configure() throws Exception {
restConfiguration().component("netty4-http").bindingMode(RestBindingMode.json)
.enableCORS(true)
.contextPath("/api").port(8888).host("localhost")
.endpointProperty("mapHeaders", "true")
.endpointProperty("urlDecodeHeaders", "true")
.apiContextPath("/api-doc")
.apiProperty("cors", "true");
rest("/api")
.get()
.to("direct:get")
.put()
.to("direct:put")
.delete()
.description("del", "del", "")
.to("direct:del")
.options()
.to("direct:options");
}
-----------------
I found ModelHelper class makes incorrect Xml.
org.apache.camel.model.ModelHelper
public static String dumpModelAsXml(......)
return value
---------------------------
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rests xmlns="http://camel.apache.org/schema/spring">
<rest path="/api">
<get routeId="route1">
<to uri="direct:get" customId="true" id="route1"/>
</get>
<put routeId="route2">
<to uri="direct:put" customId="true" id="route2"/>
</put>
<delete routeId="del" customId="true" id="del">
<to uri="direct:del" customId="true" id="del"/>
</delete>
<verb routeId="route3">
<to uri="direct:options" customId="true" id="route3"/>
</verb>
</rest>
</rests>
--
View this message in context: http://camel.465427.n5.nabble.com/RestSwaggerProcessor-causes-NullPointerException-tp5778340.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Re: RestSwaggerProcessor causes NullPointerException
Posted by Claus Ibsen <cl...@gmail.com>.
Try with 2.16.3-SNAPSHOT.
It works on the upcoming 2.17 release.
On Sat, Feb 27, 2016 at 12:57 AM, kuro <96...@gmail.com> wrote:
> Camel ver : 2.16.2
>
> RestSwaggerProcessor causes NullPointerException when I access
> `http://localhost:8888/api/api-doc`
>
> error log
> ----------------------------------
> [Camel (camel-1) thread #0 - NettyEventExecutorGroup] WARN
> org.apache.camel.swagger.RestSwaggerProcessor - Error rendering Swagger API
> due null
> java.lang.NullPointerException
> at
> org.apache.camel.swagger.RestSwaggerReader$VerbOrdering.compare(RestSwaggerReader.java:358)
> at
> org.apache.camel.swagger.RestSwaggerReader$VerbOrdering.compare(RestSwaggerReader.java:339)
> at java.util.TimSort.binarySort(TimSort.java:292)
> at java.util.TimSort.sort(TimSort.java:217)
> at java.util.Arrays.sort(Arrays.java:1512)
> at java.util.ArrayList.sort(ArrayList.java:1454)
> at java.util.Collections.sort(Collections.java:175)
> at
> org.apache.camel.swagger.RestSwaggerReader.parse(RestSwaggerReader.java:94)
> at
> org.apache.camel.swagger.RestSwaggerReader.read(RestSwaggerReader.java:83)
> at
> org.apache.camel.swagger.RestSwaggerSupport.renderResourceListing(RestSwaggerSupport.java:191)
> at
> org.apache.camel.swagger.RestSwaggerProcessor.process(RestSwaggerProcessor.java:95)
> 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:141)
> at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
> at
> org.apache.camel.component.netty4.handlers.ServerChannelHandler.processAsynchronously(ServerChannelHandler.java:138)
> at
> org.apache.camel.component.netty4.handlers.ServerChannelHandler.channelRead0(ServerChannelHandler.java:109)
> at
> org.apache.camel.component.netty4.http.handlers.HttpServerChannelHandler.channelRead0(HttpServerChannelHandler.java:211)
> at
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
> at
> org.apache.camel.component.netty4.http.handlers.HttpServerMultiplexChannelHandler.channelRead0(HttpServerMultiplexChannelHandler.java:113)
> at
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:318)
> at
> io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:42)
> at
> io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:309)
> at
> io.netty.util.concurrent.DefaultEventExecutor.run(DefaultEventExecutor.java:36)
> at
> io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)
> at java.lang.Thread.run(Thread.java:745)
>
> ----------------------------------
>
> Here is my code.
>
> @Override
> public void configure() throws Exception {
>
> restConfiguration().component("netty4-http").bindingMode(RestBindingMode.json)
> .enableCORS(true)
> .contextPath("/api").port(8888).host("localhost")
> .endpointProperty("mapHeaders", "true")
> .endpointProperty("urlDecodeHeaders", "true")
> .apiContextPath("/api-doc")
> .apiProperty("cors", "true");
>
> rest("/api")
>
> .get()
> .to("direct:get")
> .put()
> .to("direct:put")
> .delete()
> .description("del", "del", "")
> .to("direct:del")
> .options()
> .to("direct:options");
> }
>
> -----------------
>
> I found ModelHelper class makes incorrect Xml.
>
> org.apache.camel.model.ModelHelper
> public static String dumpModelAsXml(......)
>
> return value
> ---------------------------
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <rests xmlns="http://camel.apache.org/schema/spring">
> <rest path="/api">
> <get routeId="route1">
> <to uri="direct:get" customId="true" id="route1"/>
> </get>
> <put routeId="route2">
> <to uri="direct:put" customId="true" id="route2"/>
> </put>
> <delete routeId="del" customId="true" id="del">
> <to uri="direct:del" customId="true" id="del"/>
> </delete>
> <verb routeId="route3">
> <to uri="direct:options" customId="true" id="route3"/>
> </verb>
> </rest>
> </rests>
>
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/RestSwaggerProcessor-causes-NullPointerException-tp5778340.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
--
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2