You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by zr...@apache.org on 2018/11/16 14:21:04 UTC

[camel] branch master updated: UPDATED RestBindingAdvice

This is an automated email from the ASF dual-hosted git repository.

zregvart pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new 4c55060  UPDATED RestBindingAdvice
4c55060 is described below

commit 4c55060b8ce277504296bab92c2ef3a8543be7bd
Author: Robert Gründler <ro...@dubture.com>
AuthorDate: Fri Nov 16 15:02:34 2018 +0100

    UPDATED RestBindingAdvice
    
    - Support for the catchAll */* MimeType
    - Added some logs to ease debugging when clientRequestValidation is
    turned on
---
 .../java/org/apache/camel/processor/RestBindingAdvice.java   | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/camel-core/src/main/java/org/apache/camel/processor/RestBindingAdvice.java b/camel-core/src/main/java/org/apache/camel/processor/RestBindingAdvice.java
index 7b401ac..90fe9d4 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RestBindingAdvice.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RestBindingAdvice.java
@@ -34,6 +34,8 @@ import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.util.ExchangeHelper;
 import org.apache.camel.util.MessageHelper;
 import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * A {@link org.apache.camel.processor.CamelInternalProcessorAdvice} that binds the REST DSL incoming
@@ -47,6 +49,8 @@ import org.apache.camel.util.ObjectHelper;
  * @see CamelInternalProcessor
  */
 public class RestBindingAdvice implements CamelInternalProcessorAdvice<Map<String, Object>> {
+
+    private static final Logger LOG = LoggerFactory.getLogger(RestBindingAdvice.class);
     private static final String STATE_KEY_DO_MARSHAL = "doMarshal";
     private static final String STATE_KEY_ACCEPT = "accept";
     private static final String STATE_JSON = "json";
@@ -198,6 +202,7 @@ public class RestBindingAdvice implements CamelInternalProcessorAdvice<Map<Strin
         if (clientRequestValidation) {
             // check if the content-type is accepted according to consumes
             if (!isValidOrAcceptedContentType(consumes, contentType)) {
+                LOG.trace("Consuming content type does not match contentType header {}. Stopping routing.", contentType);
                 // the content-type is not something we can process so its a HTTP_ERROR 415
                 exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 415);
                 // stop routing and return
@@ -207,6 +212,7 @@ public class RestBindingAdvice implements CamelInternalProcessorAdvice<Map<Strin
 
             // check if what is produces is accepted by the client
             if (!isValidOrAcceptedContentType(produces, accept)) {
+                LOG.trace("Produced content type does not match accept header {}. Stopping routing.", contentType);
                 // the response type is not accepted by the client so its a HTTP_ERROR 406
                 exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 406);
                 // stop routing and return
@@ -507,6 +513,12 @@ public class RestBindingAdvice implements CamelInternalProcessorAdvice<Map<Strin
             return true;
         }
 
+        // Any MIME type
+        // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept#Directives
+        if ("*/*".equals(target)) {
+          return true;
+        }
+
         boolean isXml = valid.toLowerCase(Locale.ENGLISH).contains("xml");
         boolean isJson = valid.toLowerCase(Locale.ENGLISH).contains("json");