[ 
https://issues.apache.org/jira/browse/CAMEL-12294?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen resolved CAMEL-12294.
---------------------------------
    Resolution: Duplicate
      Assignee: Claus Ibsen

Duplicate of CAMEL-11162

> REST DSL should return 415 error (or a dedicated exception) if Content-Type 
> does not match
> ------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-12294
>                 URL: https://issues.apache.org/jira/browse/CAMEL-12294
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-servlet
>            Reporter: Jacek Obarymski
>            Assignee: Claus Ibsen
>            Priority: Major
>
> When I define a rest resource via REST DSL e.g.
> rest({color:#008000}"/resourceurl/"{color})
>  .post()
>  .consumes({color:#008000}"application/json"{color})
> ...
> I would like to reject all requests that contain Content-Type header other 
> than {color:#008000}"application/json"
> {color}
> Ideally Camel should return 415 (Unsupported Media Type) error or (even 
> better) throw a dedicated exception which I could then handle and transform 
> to a 415 error.
> At the moment the _consumes_ clause does not seem to be used at all.
> What is more, if someone sends a request with Content-Type 
> application/x-www-form-urlencoded and a json body then a 500 error and 
> stacktrace is being returned:
>     at 
> org.apache.camel.http.common.DefaultHttpBinding.readFormUrlEncodedBody(DefaultHttpBinding.java:270)
>     at 
> org.apache.camel.http.common.DefaultHttpBinding.readRequest(DefaultHttpBinding.java:114)
>     at 
> org.apache.camel.http.common.HttpMessage.<init>(HttpMessage.java:56)
>     at 
> org.apache.camel.http.common.CamelServlet.doService(CamelServlet.java:168)
>     at org.apache.camel.http.common.CamelServlet.service(CamelServlet.java:73)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
>     at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:841)
>     at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1650)
>     at 
> org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:206)
>     at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
>     at 
> org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:244)
>     at 
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>     at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1629)
>     at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
>     at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
>     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:190)
>     at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
>     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.session.SessionHandler.doScope(SessionHandler.java:1564)
>     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.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)
>     at 
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
>     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.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:247)
>     at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:140)
>     at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
>     at 
> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:243)
>     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)
> java.lang.IllegalArgumentException: Invalid parameter, expected to be a pair 
> but was {
> {color:#008000}
> {color}There does not seem to be a good way to handle that problem at the 
> moment.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to