Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-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 D36FD1855C for ; Thu, 15 Oct 2015 16:41:27 +0000 (UTC) Received: (qmail 40491 invoked by uid 500); 15 Oct 2015 16:41:27 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 40430 invoked by uid 500); 15 Oct 2015 16:41:27 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 40421 invoked by uid 99); 15 Oct 2015 16:41:27 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 15 Oct 2015 16:41:27 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 8BA32E10A7; Thu, 15 Oct 2015 16:41:27 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: sergeyb@apache.org To: commits@cxf.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: cxf git commit: [CXF-6640] Fixing a locale issue Date: Thu, 15 Oct 2015 16:41:27 +0000 (UTC) Repository: cxf Updated Branches: refs/heads/2.7.x-fixes c1ec2650d -> ffba6ce5c [CXF-6640] Fixing a locale issue Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/ffba6ce5 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/ffba6ce5 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/ffba6ce5 Branch: refs/heads/2.7.x-fixes Commit: ffba6ce5ca133043bfb9ab2423ee2fab69307989 Parents: c1ec265 Author: Sergey Beryozkin Authored: Thu Oct 15 17:36:17 2015 +0100 Committer: Sergey Beryozkin Committed: Thu Oct 15 17:41:10 2015 +0100 ---------------------------------------------------------------------- .../org/apache/cxf/jaxrs/utils/HttpUtils.java | 21 ++++++++++++++------ .../cxf/jaxrs/impl/HttpHeadersImplTest.java | 9 +++++---- 2 files changed, 20 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/ffba6ce5/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java index 1a7520f..1639d73 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java @@ -196,15 +196,24 @@ public final class HttpUtils { if (value == null) { return null; } - - String[] values = StringUtils.split(value, "-"); - if (values.length == 0 || values.length > 2) { + String language = null; + String locale = null; + int index = value.indexOf('-'); + if (index == 0 || index == value.length() - 1) { throw new IllegalArgumentException("Illegal locale value : " + value); } - if (values.length == 1) { - return new Locale(values[0]); + + if (index > 0) { + language = value.substring(0, index); + locale = value.substring(index + 1); + } else { + language = value; + } + + if (locale == null) { + return new Locale(language); } else { - return new Locale(values[0], values[1]); + return new Locale(language, locale); } } http://git-wip-us.apache.org/repos/asf/cxf/blob/ffba6ce5/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java index 46efabd..d484f21 100644 --- a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java +++ b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java @@ -432,15 +432,16 @@ public class HttpHeadersImplTest extends Assert { m.get(Message.PROTOCOL_HEADERS); MetadataMap headers = createHeader(HttpHeaders.ACCEPT_LANGUAGE, - "en;q=0.7, en-gb;q=0.8, da"); + "en;q=0.7, en-gb;q=0.8, da, zh-Hans-SG;q=0.9"); EasyMock.expectLastCall().andReturn(headers); control.replay(); HttpHeaders h = new HttpHeadersImpl(m); List languages = h.getAcceptableLanguages(); - assertEquals(3, languages.size()); + assertEquals(4, languages.size()); assertEquals(new Locale("da"), languages.get(0)); - assertEquals(new Locale("en", "GB"), languages.get(1)); - assertEquals(new Locale("en"), languages.get(2)); + assertEquals(new Locale("zh", "Hans-SG"), languages.get(1)); + assertEquals(new Locale("en", "GB"), languages.get(2)); + assertEquals(new Locale("en"), languages.get(3)); }