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/02/05 10:48:14 UTC

svn commit: r906882 - in /cxf/trunk/rt/frontend/jaxrs/src: main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java

Author: sergeyb
Date: Fri Feb  5 09:48:13 2010
New Revision: 906882

URL: http://svn.apache.org/viewvc?rev=906882&view=rev
Log:
CXF-2652 : UriInfo.getAbsolutePath was failing if encoded chars were included in the original request URI

Modified:
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java?rev=906882&r1=906881&r2=906882&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java Fri Feb  5 09:48:13 2010
@@ -88,7 +88,12 @@
     }
 
     public String getPath(boolean decode) {
-        return doGetPath(decode, true);
+        String value = doGetPath(decode, true);
+        if (value.length() > 1 && value.startsWith("/")) { 
+            return value.substring(1);
+        } else {
+            return value;
+        }
     }
 
     public List<PathSegment> getPathSegments() {
@@ -192,7 +197,7 @@
         if (MessageUtils.isRequestor(message)) {
             return address;
         }
-        String path = doGetPath(true, false);
+        String path = doGetPath(false, false);
         if (path.startsWith("/") && address.endsWith("/")) {
             address = address.substring(0, address.length() - 1);
         }

Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java?rev=906882&r1=906881&r2=906882&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java Fri Feb  5 09:48:13 2010
@@ -60,6 +60,20 @@
     }
     
     @Test
+    public void testGetAbsolutePathWithEncodedChars() {
+        
+        UriInfoImpl u = new UriInfoImpl(mockMessage("http://localhost:8080/baz%20foo", "/bar"),
+                                        null);
+        assertEquals("Wrong absolute path", "http://localhost:8080/baz%20foo/bar", 
+                     u.getAbsolutePath().toString());
+        u = new UriInfoImpl(mockMessage("http://localhost:8080/baz/%20foo", "/bar%20foo"),
+                                        null);
+        assertEquals("Wrong absolute path", "http://localhost:8080/baz/%20foo/bar%20foo", 
+                     u.getAbsolutePath().toString());
+        
+    }
+    
+    @Test
     public void testGetQueryParameters() {
         UriInfoImpl u = new UriInfoImpl(mockMessage("http://localhost:8080/baz", "/bar"),
                                         null);
@@ -87,10 +101,20 @@
     @Test
     public void testGetRequestURI() {
         
-        UriInfo u = new UriInfoImpl(mockMessage("http://localhost:8080/baz/bar", "/baz/bar", "n=1%202"),
+        UriInfo u = new UriInfoImpl(mockMessage("http://localhost:8080/baz/bar", "/foo", "n=1%202"),
+                            null);
+
+        assertEquals("Wrong request uri", "http://localhost:8080/baz/bar/foo?n=1%202",
+                     u.getRequestUri().toString());
+    }
+    
+    @Test
+    public void testGetRequestURIWithEncodedChars() {
+        
+        UriInfo u = new UriInfoImpl(mockMessage("http://localhost:8080/baz/bar", "/foo/%20bar", "n=1%202"),
                             null);
 
-        assertEquals("Wrong request uri", "http://localhost:8080/baz/bar?n=1%202",
+        assertEquals("Wrong request uri", "http://localhost:8080/baz/bar/foo/%20bar?n=1%202",
                      u.getRequestUri().toString());
     }
     
@@ -150,7 +174,7 @@
         UriInfoImpl u = new UriInfoImpl(mockMessage("http://localhost:8080/bar/baz", 
                                                     "/baz"),
                                         null);
-        assertEquals("Wrong path", "/baz", u.getPath());
+        assertEquals("Wrong path", "baz", u.getPath());
         
         u = new UriInfoImpl(mockMessage("http://localhost:8080/bar/baz", 
                             "/bar/baz"), null);
@@ -162,11 +186,11 @@
         
         u = new UriInfoImpl(mockMessage("http://localhost:8080/baz", "/baz/bar%201"),
                                         null);
-        assertEquals("Wrong path", "/bar 1", u.getPath());
+        assertEquals("Wrong path", "bar 1", u.getPath());
         
         u = new UriInfoImpl(mockMessage("http://localhost:8080/baz", "/baz/bar%201"),
                             null);
-        assertEquals("Wrong path", "/bar%201", u.getPath(false));
+        assertEquals("Wrong path", "bar%201", u.getPath(false));
       
         
     }