Return-Path: X-Original-To: apmail-camel-commits-archive@www.apache.org Delivered-To: apmail-camel-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 6971710063 for ; Wed, 19 Nov 2014 07:26:36 +0000 (UTC) Received: (qmail 20698 invoked by uid 500); 19 Nov 2014 07:26:36 -0000 Delivered-To: apmail-camel-commits-archive@camel.apache.org Received: (qmail 20634 invoked by uid 500); 19 Nov 2014 07:26:36 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 20625 invoked by uid 99); 19 Nov 2014 07:26:36 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 19 Nov 2014 07:26:36 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id B9D129AA8CA; Wed, 19 Nov 2014 07:26:35 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: ningjiang@apache.org To: commits@camel.apache.org Date: Wed, 19 Nov 2014 07:26:35 -0000 Message-Id: <1e8ac9cc1435447ea23eb613a044f150@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [1/3] camel git commit: CAMEL-8049 Added the support of multi-value in DefaultRestletBinding with thanks to Bojan Repository: camel Updated Branches: refs/heads/master add89cef0 -> e6f9f02fa CAMEL-8049 Added the support of multi-value in DefaultRestletBinding with thanks to Bojan Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/e6f9f02f Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/e6f9f02f Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/e6f9f02f Branch: refs/heads/master Commit: e6f9f02fac4689d17b5e809de2f64c0f60a73b24 Parents: 34b2f72 Author: Willem Jiang Authored: Wed Nov 19 15:25:28 2014 +0800 Committer: Willem Jiang Committed: Wed Nov 19 15:25:47 2014 +0800 ---------------------------------------------------------------------- .../restlet/DefaultRestletBinding.java | 33 ++++++++++++++------ 1 file changed, 24 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/e6f9f02f/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/DefaultRestletBinding.java ---------------------------------------------------------------------- diff --git a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/DefaultRestletBinding.java b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/DefaultRestletBinding.java index 7e62cd8..8650021 100644 --- a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/DefaultRestletBinding.java +++ b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/DefaultRestletBinding.java @@ -24,10 +24,12 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; +import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Locale; import java.util.Map; + import javax.xml.transform.dom.DOMSource; import org.apache.camel.Exchange; @@ -110,16 +112,23 @@ public class DefaultRestletBinding implements RestletBinding, HeaderFilterStrate // only deal with the form if the content type is "application/x-www-form-urlencoded" if (request.getEntity().getMediaType() != null && request.getEntity().getMediaType().equals(MediaType.APPLICATION_WWW_FORM)) { Form form = new Form(request.getEntity()); - for (Map.Entry entry : form.getValuesMap().entrySet()) { - String key = entry.getKey(); - String value = entry.getValue(); + for (String paramName : form.getValuesMap().keySet()) { + String[] values = form.getValuesArray(paramName); + Object value = null; + if (values != null && values.length > 0) { + if (values.length == 1) { + value = values[0]; + } else { + value = values; + } + } if (value == null) { - inMessage.setBody(key); - LOG.debug("Populate exchange from Restlet request body: {}", key); + inMessage.setBody(paramName); + LOG.debug("Populate exchange from Restlet request body: {}", paramName); } else { - if (!headerFilterStrategy.applyFilterToExternalHeaders(key, value, exchange)) { - inMessage.setHeader(key, value); - LOG.debug("Populate exchange from Restlet request user header: {} value: {}", key, value); + if (!headerFilterStrategy.applyFilterToExternalHeaders(paramName, value, exchange)) { + inMessage.setHeader(paramName, value); + LOG.debug("Populate exchange from Restlet request user header: {} value: {}", paramName, value); } } } @@ -166,7 +175,13 @@ public class DefaultRestletBinding implements RestletBinding, HeaderFilterStrate request.getAttributes().put(key, value); } else { // put the user stuff in the form - form.add(key, value.toString()); + if (value instanceof Collection) { + for (Object v: (Collection) value) { + form.add(key, v.toString()); + } + } else { + form.add(key, value.toString()); + } } } else { // For non-form post put all the headers in attributes