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 2009/04/27 13:22:16 UTC

svn commit: r768926 - in /cxf/trunk: rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ systests/src/test/java/org/apache/cxf/systest/jaxrs/

Author: sergeyb
Date: Mon Apr 27 11:22:16 2009
New Revision: 768926

URL: http://svn.apache.org/viewvc?rev=768926&view=rev
Log:
JAXRS: support for multiple matrix params in the last segment

Modified:
    cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresource.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresourceImpl.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java

Modified: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java?rev=768926&r1=768925&r2=768926&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java (original)
+++ cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java Mon Apr 27 11:22:16 2009
@@ -332,7 +332,7 @@
             reqPrefix = UrlUtils.pathDecode(reqPrefix);
             // pathInfo drops matrix parameters attached to a last path segment
             int offset = 0;
-            int index = reqPrefix.lastIndexOf(';');
+            int index = getMatrixParameterIndex(reqPrefix, pathInfo.length());
             if (index >= pathInfo.length()) {
                 offset = reqPrefix.length() - index;
             }
@@ -340,6 +340,17 @@
         }
         return reqPrefix;
     }
+    
+    private int getMatrixParameterIndex(String reqPrefix, int pathInfoLength) {
+        int index = reqPrefix.lastIndexOf(';');
+        int lastIndex = -1;
+        while (index >= pathInfoLength) {
+            lastIndex = index;
+            reqPrefix = reqPrefix.substring(0, index);
+            index = reqPrefix.lastIndexOf(';');
+        }
+        return lastIndex;
+    }
 
     protected void generateNotFound(HttpServletRequest request, HttpServletResponse res) throws IOException {
         res.setStatus(404);

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresource.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresource.java?rev=768926&r1=768925&r2=768926&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresource.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresource.java Mon Apr 27 11:22:16 2009
@@ -47,6 +47,7 @@
     Book getTheBook2(@PathParam("n1") String name1,
                      @QueryParam("n2") String name2,
                      @MatrixParam("n3") String name3,
+                     @MatrixParam("n33") String name33,
                      @HeaderParam("N4") String name4,
                      @CookieParam("n5") String name5,
                      String name6) throws BookNotFoundFault;

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresourceImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresourceImpl.java?rev=768926&r1=768925&r2=768926&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresourceImpl.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresourceImpl.java Mon Apr 27 11:22:16 2009
@@ -45,12 +45,13 @@
         return b;
     }
 
-    public Book getTheBook2(String n1, String n2, String n3, String n4, String n5, String n6) 
+    public Book getTheBook2(String n1, String n2, String n3, String n33, 
+                            String n4, String n5, String n6) 
         throws BookNotFoundFault {
         
         Book b = new Book();
         b.setId(id); 
-        b.setName(n1 + n2 + n3 + n4 + n5 + n6);
+        b.setName(n1 + n2 + n3 + n33 + n4 + n5 + n6);
         return b;
     }
     

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java?rev=768926&r1=768925&r2=768926&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java Mon Apr 27 11:22:16 2009
@@ -212,7 +212,7 @@
         client.type(MediaType.TEXT_PLAIN_TYPE).accept(MediaType.APPLICATION_XML_TYPE);
         BookSubresource proxy = JAXRSClientFactory.fromClient(client, BookSubresource.class);
         
-        Book b = proxy.getTheBook2("CXF ", "in ", "Action ", "- 3", "7", "8");
+        Book b = proxy.getTheBook2("CXF ", "in ", "Acti", "on ", "- 3", "7", "8");
         assertEquals(378, b.getId());
         assertEquals("CXF in Action - 378", b.getName());
         
@@ -221,12 +221,12 @@
     private void doTestSubresource(BookStoreJaxrsJaxws proxy) throws Exception {
         BookSubresource bs = proxy.getBookSubresource("378");
         
-        Book b = bs.getTheBook2("CXF ", "in ", "Action ", "- 3", "7", "8");
+        Book b = bs.getTheBook2("CXF ", "in ", "Acti", "on ", "- 3", "7", "8");
         assertEquals(378, b.getId());
         assertEquals("CXF in Action - 378", b.getName());
         
         WebClient.client(bs).reset().header("N4", "- 4");
-        b = bs.getTheBook2("CXF ", "in ", "Action ", null, "7", "8");
+        b = bs.getTheBook2("CXF ", "in ", "Acti", "on ", null, "7", "8");
         assertEquals(378, b.getId());
         assertEquals("CXF in Action - 478", b.getName());