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 2010/10/04 20:08:40 UTC

svn commit: r1004346 - in /cxf/branches/2.2.x-fixes: ./ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/ rt/frontend/jaxr...

Author: sergeyb
Date: Mon Oct  4 18:08:40 2010
New Revision: 1004346

URL: http://svn.apache.org/viewvc?rev=1004346&view=rev
Log:
Merged revisions 1004334,1004341 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r1004334 | sergeyb | 2010-10-04 18:52:54 +0100 (Mon, 04 Oct 2010) | 1 line
  
  Updating ServletDestination to return a proper base address in case of destination address being overwritten
........
  r1004341 | sergeyb | 2010-10-04 19:03:21 +0100 (Mon, 04 Oct 2010) | 1 line
  
  A hack to ensure that a + contained in UriBuilder.replaceQuery is retained but is encoded otherwise
........

Modified:
    cxf/branches/2.2.x-fixes/   (props changed)
    cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java
    cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
    cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
    cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java
    cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java
    cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java

Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
    svn:mergeinfo = /cxf/trunk:1004334-1004341

Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java?rev=1004346&r1=1004345&r2=1004346&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java Mon Oct  4 18:08:40 2010
@@ -598,7 +598,7 @@ public class UriBuilderImpl extends UriB
             // of quertyParam are encoded as '+'
             queryValue = queryValue.replace(" ", "%20");
         }
-        query = JAXRSUtils.getStructuredParams(queryValue, "&", false, false);
+        query = JAXRSUtils.getStructuredParams(queryValue, "&", false, true);
         return this;
     }
 
@@ -667,9 +667,7 @@ public class UriBuilderImpl extends UriB
             Map.Entry<String, List<String>> entry = it.next();
             for (Iterator<String> sit = entry.getValue().iterator(); sit.hasNext();) {
                 String val = sit.next();
-                if (fromEncoded) {
-                    val = HttpUtils.encodePartiallyEncoded(val, isQuery);
-                } else if (isQuery && !val.startsWith("{") && !val.endsWith("}")) { 
+                if (fromEncoded  || (isQuery && !val.startsWith("{") && !val.endsWith("}"))) { 
                     val = HttpUtils.encodePartiallyEncoded(val, isQuery);
                 }
                 b.append(entry.getKey());

Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java?rev=1004346&r1=1004345&r2=1004346&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java Mon Oct  4 18:08:40 2010
@@ -64,7 +64,7 @@ public final class HttpUtils {
     
     // there are more of such characters, ex, '*' but '*' is not affected by UrlEncode
     private static final String PATH_RESERVED_CHARACTERS = "=@";
-    private static final String QUERY_RESERVED_CHARACTERS = "?/+";
+    private static final String QUERY_RESERVED_CHARACTERS = "?/";
     
     private HttpUtils() {
     }

Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java?rev=1004346&r1=1004345&r2=1004346&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java Mon Oct  4 18:08:40 2010
@@ -935,8 +935,8 @@ public final class JAXRSUtils {
                 String value = null;
                 if (values.length == 1) {
                     value = "";
-                } else if (decode) {
-                    value = (";".equals(sep) || !decodePlus)
+                } else if (decode || (decodePlus && values[1].contains("+"))) {
+                    value = (";".equals(sep))
                         ? HttpUtils.pathDecode(values[1]) : HttpUtils.urlDecode(values[1]); 
                 } else {
                     value = values[1];

Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java?rev=1004346&r1=1004345&r2=1004346&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java Mon Oct  4 18:08:40 2010
@@ -33,8 +33,8 @@ public class WebClientTest extends Asser
     @Test
     public void testEncoding() {
         URI u = WebClient.create("http://foo").path("bar+ %2B").matrix("a", "value+ ")
-            .query("b", "bv+ ").getCurrentURI();
-        assertEquals("http://foo/bar+%20%2B;a=value+%20?b=bv++", u.toString());
+            .query("b", "bv+ %2B").getCurrentURI();
+        assertEquals("http://foo/bar+%20%2B;a=value+%20?b=bv%2B+%2B", u.toString());
     }
     
     @Test

Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java?rev=1004346&r1=1004345&r2=1004346&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java Mon Oct  4 18:08:40 2010
@@ -167,7 +167,7 @@ public class UriBuilderImplTest extends 
             .matrixParam("m", "m1 ", "m2+%20")
             .queryParam("q", "q1 ", "q2+q3%20").clone().buildFromEncoded("a+ ", "b%2B%20 ");   
         assertEquals("URI is not built correctly", 
-                     "http://bar/a+%20/b%2B%20%20;m=m1%20;m=m2+%20?q=q1+&q=q2+q3%20", 
+                     "http://bar/a+%20/b%2B%20%20;m=m1%20;m=m2+%20?q=q1+&q=q2%2Bq3%20", 
                      newUri.toString());
     }
     
@@ -176,7 +176,7 @@ public class UriBuilderImplTest extends 
         URI uri = new URI("http://bar/foo+%20%2B?q=a+b%20%2B");
         URI newUri = new UriBuilderImpl(uri).buildFromEncoded();   
         assertEquals("URI is not built correctly", 
-                     "http://bar/foo+%20%2B?q=a+b%20%2B", newUri.toString());
+                     "http://bar/foo+%20%2B?q=a%2Bb%20%2B", newUri.toString());
     }
     
     @Test
@@ -215,7 +215,7 @@ public class UriBuilderImplTest extends 
     public void testEncodedAddedQuery() throws Exception {
         URI uri = new URI("http://bar");
         URI newUri = new UriBuilderImpl(uri).queryParam("q", "a+b%20%2B").buildFromEncoded();   
-        assertEquals("URI is not built correctly", "http://bar?q=a+b%20%2B", newUri.toString());
+        assertEquals("URI is not built correctly", "http://bar?q=a%2Bb%20%2B", newUri.toString());
     }
     
     @Test

Modified: cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java?rev=1004346&r1=1004345&r2=1004346&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java (original)
+++ cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java Mon Oct  4 18:08:40 2010
@@ -20,6 +20,7 @@
 package org.apache.cxf.transport.servlet;
 
 import java.io.IOException;
+import java.net.URI;
 import java.util.logging.Logger;
 
 import javax.servlet.ServletConfig;
@@ -99,7 +100,13 @@ public class ServletDestination extends 
  
     }
     protected String getBasePath(String contextPath) throws IOException {
-        return contextPath + getAddress().getAddress().getValue();
+        
+        String address = getAddress().getAddress().getValue();
+        if (address.startsWith("http")) {
+            return URI.create(address).getPath();
+        }
+        
+        return contextPath + address;
     }
     
     @Override