You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2016/02/24 14:01:23 UTC

cxf git commit: [CXF-6492] Support for Basic scheme with more than a single space between it and the encoded user/password

Repository: cxf
Updated Branches:
  refs/heads/master 3e5241a77 -> a3936f026


[CXF-6492] Support for Basic scheme with more than a single space between it and the encoded user/password


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/a3936f02
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/a3936f02
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/a3936f02

Branch: refs/heads/master
Commit: a3936f02652fbb4c64fce2d5e5b3b4c4de42c3c4
Parents: 3e5241a
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Wed Feb 24 13:01:08 2016 +0000
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Wed Feb 24 13:01:08 2016 +0000

----------------------------------------------------------------------
 .../org/apache/cxf/common/util/StringUtils.java   |  4 ++--
 .../apache/cxf/common/util/StringUtilsTest.java   | 18 ++++++++++++++++++
 .../transport/http/AbstractHTTPDestination.java   |  9 +++++----
 3 files changed, 25 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/a3936f02/core/src/main/java/org/apache/cxf/common/util/StringUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/common/util/StringUtils.java b/core/src/main/java/org/apache/cxf/common/util/StringUtils.java
index b90c078..aa0edba 100644
--- a/core/src/main/java/org/apache/cxf/common/util/StringUtils.java
+++ b/core/src/main/java/org/apache/cxf/common/util/StringUtils.java
@@ -91,8 +91,8 @@ public final class StringUtils {
     }
     
     public static List<String> getParts(String str, String separator) {
-        List<String> ret = new ArrayList<String>();
-        List<String> parts = Arrays.asList(split(str, separator));
+        String[] parts = split(str, separator);
+        List<String> ret = new ArrayList<String>(parts.length);
         for (String part : parts) {
             if (!isEmpty(part)) {
                 ret.add(part);

http://git-wip-us.apache.org/repos/asf/cxf/blob/a3936f02/core/src/test/java/org/apache/cxf/common/util/StringUtilsTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/cxf/common/util/StringUtilsTest.java b/core/src/test/java/org/apache/cxf/common/util/StringUtilsTest.java
index 1e38c3a..7480135 100644
--- a/core/src/test/java/org/apache/cxf/common/util/StringUtilsTest.java
+++ b/core/src/test/java/org/apache/cxf/common/util/StringUtilsTest.java
@@ -53,6 +53,24 @@ public class StringUtilsTest extends Assert {
     }
     
     @Test
+    public void testGetPartsWithSingleSpace() throws Exception {
+        String str = "a b";
+        List<String> parts = StringUtils.getParts(str, " ");
+        assertEquals(2, parts.size());
+        assertEquals("a", parts.get(0));
+        assertEquals("b", parts.get(1));
+    }
+    
+    @Test
+    public void testGetPartsWithManySpaces() throws Exception {
+        String str = "a  b";
+        List<String> parts = StringUtils.getParts(str, " ");
+        assertEquals(2, parts.size());
+        assertEquals("a", parts.get(0));
+        assertEquals("b", parts.get(1));
+    }
+    
+    @Test
     public void testSplitWithDot() throws Exception {
         String str = "a.b.c";
         String[] parts = StringUtils.split(str, "\\.", -1);

http://git-wip-us.apache.org/repos/asf/cxf/blob/a3936f02/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
----------------------------------------------------------------------
diff --git a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
index 882cb63..722356c 100644
--- a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
+++ b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
@@ -28,6 +28,7 @@ import java.net.URL;
 import java.security.Principal;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.List;
 import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -161,10 +162,10 @@ public abstract class AbstractHTTPDestination
         if (credentials == null || StringUtils.isEmpty(credentials.trim())) {
             return null;
         }
-        String creds[] = StringUtils.split(credentials, " ");
-        String authType = creds[0];
-        if ("Basic".equals(authType)) {
-            String authEncoded = creds[1];
+        List<String> creds = StringUtils.getParts(credentials, " ");
+        String authType = creds.get(0);
+        if ("Basic".equals(authType) && creds.size() == 2) {
+            String authEncoded = creds.get(1);
             try {
                 String authDecoded = new String(Base64Utility.decode(authEncoded));
                 int idx = authDecoded.indexOf(':');