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 2013/10/29 16:23:37 UTC

svn commit: r1536753 - in /cxf/branches/2.7.x-fixes: ./ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/ systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/resources/

Author: sergeyb
Date: Tue Oct 29 15:23:37 2013
New Revision: 1536753

URL: http://svn.apache.org/r1536753
Log:
Merged revisions 1536747 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r1536747 | sergeyb | 2013-10-29 15:20:15 +0000 (Tue, 29 Oct 2013) | 1 line
  
  [CXF-5347] Making sure matrix params do not interfere with RequestPreprocessor handling extensions
........

Added:
    cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/resources/expected_atom_book_json_matrix.txt
      - copied unchanged from r1536747, cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/resources/expected_atom_book_json_matrix.txt
Modified:
    cxf/branches/2.7.x-fixes/   (props changed)
    cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/PathSegmentImpl.java
    cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestPreprocessor.java
    cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSAtomBookTest.java

Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
  Merged /cxf/trunk:r1536747

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

Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/PathSegmentImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/PathSegmentImpl.java?rev=1536753&r1=1536752&r2=1536753&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/PathSegmentImpl.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/PathSegmentImpl.java Tue Oct 29 15:23:37 2013
@@ -56,6 +56,15 @@ public class PathSegmentImpl implements 
         return path;
     }
     
+    public String getMatrixString() {
+        int index = path.indexOf(';');
+        if (index == -1) {
+            return null;
+        } else {
+            return path.substring(index);
+        }
+    }
+    
     public String toString() {
         return path;
     }

Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestPreprocessor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestPreprocessor.java?rev=1536753&r1=1536752&r2=1536753&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestPreprocessor.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestPreprocessor.java Tue Oct 29 15:23:37 2013
@@ -89,23 +89,31 @@ public class RequestPreprocessor {
     }
     
     private void handleLanguageMappings(Message m, UriInfo uriInfo) {
-        String path = uriInfo.getPath(false);
+        if (languageMappings.isEmpty()) {
+            return;
+        }
+        PathSegmentImpl ps = new PathSegmentImpl(uriInfo.getPath(false));
+        String path = ps.getPath();
         for (Map.Entry<?, ?> entry : languageMappings.entrySet()) {
             if (path.endsWith("." + entry.getKey())) {
                 updateAcceptLanguageHeader(m, entry.getValue().toString());
-                updatePath(m, path, entry.getKey().toString());
+                updatePath(m, path, entry.getKey().toString(), ps.getMatrixString());
                 break;
             }    
         }
     }
     
     private void handleExtensionMappings(Message m, UriInfo uriInfo) {
-        String path = uriInfo.getPath(false);
+        if (extensionMappings.isEmpty()) {
+            return;
+        }
+        PathSegmentImpl ps = new PathSegmentImpl(uriInfo.getPath(false));
+        String path = ps.getPath();
         for (Map.Entry<?, ?> entry : extensionMappings.entrySet()) {
             String key = entry.getKey().toString();
             if (path.endsWith("." + key)) {
                 updateAcceptTypeHeader(m, entry.getValue().toString());
-                updatePath(m, path, key);
+                updatePath(m, path, key, ps.getMatrixString());
                 if ("wadl".equals(key)) {
                     // the path has been updated and Accept was not necessarily set to 
                     // WADL type (xml or json or html - other options)
@@ -136,8 +144,11 @@ public class RequestPreprocessor {
             .put(HttpHeaders.ACCEPT_LANGUAGE, acceptLanguage);
     }
     
-    private void updatePath(Message m, String path, String suffix) {
+    private void updatePath(Message m, String path, String suffix, String matrixString) {
         String newPath = path.substring(0, path.length() - (suffix.length() + 1));
+        if (matrixString != null) {
+            newPath += matrixString;
+        }
         HttpUtils.updatePath(m, newPath);
     }
     

Modified: cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSAtomBookTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSAtomBookTest.java?rev=1536753&r1=1536752&r2=1536753&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSAtomBookTest.java (original)
+++ cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSAtomBookTest.java Tue Oct 29 15:23:37 2013
@@ -100,6 +100,10 @@ public class JAXRSAtomBookTest extends A
         getAndCompareJson("http://localhost:" + PORT + "/bookstore/bookstore/books/entries/123.json",
                                "resources/expected_atom_book_json.txt",
                                "*/*");
+        // do the same using extension mappings & matrix parameters
+        getAndCompareJson("http://localhost:" + PORT + "/bookstore/bookstore/books/entries/123.json;a=b",
+                               "resources/expected_atom_book_json_matrix.txt",
+                               "*/*");
         
         
     }