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/23 17:08:29 UTC

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

Author: sergeyb
Date: Wed Oct 23 15:08:28 2013
New Revision: 1535049

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

........
  r1535038 | sergeyb | 2013-10-23 15:45:57 +0100 (Wed, 23 Oct 2013) | 1 line
  
  [CXF-5346] Making sure shared dynamic filters do not interfere with non-target operation bindings
........

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/provider/ProviderFactory.java
    cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java
    cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java

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

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/provider/ProviderFactory.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java?rev=1535049&r1=1535048&r2=1535049&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java Wed Oct 23 15:08:28 2013
@@ -617,6 +617,9 @@ public final class ProviderFactory {
             if (entryName.equals(DEFAULT_FILTER_NAME_BINDING)) {
                 map.put(entry.getValue(), Collections.<String>emptyList());
             } else {
+                if (entryName.endsWith(":dynamic") && !names.contains(entryName)) {
+                    continue;
+                }
                 map.add(entry.getValue(), entryName);
             }
         }
@@ -1230,7 +1233,6 @@ public final class ProviderFactory {
             }
         }
     }
-
     public void initProviders(List<ClassResourceInfo> cris) {
         Set<Object> set = getReadersWriters();
         for (Object o : set) {
@@ -1409,7 +1411,8 @@ public final class ProviderFactory {
             nameBinding = DEFAULT_FILTER_NAME_BINDING 
                 + ori.getClassResourceInfo().getServiceClass().getName()
                 + "."
-                + ori.getMethodToInvoke().getName();
+                + ori.getMethodToInvoke().getName()
+                + ":dynamic";
         }
         
         @Override

Modified: cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java?rev=1535049&r1=1535048&r2=1535049&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java (original)
+++ cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java Wed Oct 23 15:08:28 2013
@@ -301,7 +301,9 @@ public class BookServer20 extends Abstra
             if (!responseContext.getHeaders().containsKey("Response")) {
                 throw new RuntimeException();
             }
-            if (!responseContext.getHeaders().containsKey("DynamicResponse")
+        
+            if ((!responseContext.getHeaders().containsKey("DynamicResponse")
+                || !responseContext.getHeaders().containsKey("DynamicResponse2"))
                 && !"Prematch filter error".equals(responseContext.getEntity())) {
                 throw new RuntimeException();
             }
@@ -328,7 +330,7 @@ public class BookServer20 extends Abstra
     }
     
     @BindingPriority(2)
-    public static class PostMatchDynamicContainerResponseFilter implements ContainerResponseFilter {
+    public static class PostMatchDynamicContainerResponseFilter2 implements ContainerResponseFilter {
 
         @Override
         public void filter(ContainerRequestContext requestContext,
@@ -336,6 +338,21 @@ public class BookServer20 extends Abstra
             if (!responseContext.getHeaders().containsKey("Response")) {
                 throw new RuntimeException();
             }
+            responseContext.getHeaders().add("DynamicResponse2", "Dynamic2");
+            
+        }
+        
+    }
+    
+    @BindingPriority(2)
+    public static class PostMatchDynamicContainerResponseFilter implements ContainerResponseFilter {
+    
+        @Override
+        public void filter(ContainerRequestContext requestContext,
+                           ContainerResponseContext responseContext) throws IOException {
+            if (!responseContext.getHeaders().containsKey("Response")) {
+                throw new RuntimeException();
+            }
             responseContext.getHeaders().add("DynamicResponse", "Dynamic");
             
         }
@@ -399,11 +416,15 @@ public class BookServer20 extends Abstra
     
     public static class CustomDynamicFeature implements DynamicFeature {
 
+        private static final ContainerResponseFilter RESPONSE_FILTER =
+            new PostMatchDynamicContainerResponseFilter2();
+        
         @Override
         public void configure(ResourceInfo resourceInfo, Configurable configurable) {
             
             configurable.register(new PreMatchDynamicContainerRequestFilter());
             configurable.register(new PostMatchDynamicContainerResponseFilter());
+            configurable.register(RESPONSE_FILTER);
         }
         
     }

Modified: cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java?rev=1535049&r1=1535048&r2=1535049&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java (original)
+++ cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java Wed Oct 23 15:08:28 2013
@@ -454,6 +454,7 @@ public class JAXRS20ClientServerBookTest
         assertEquals("OK", response.getHeaderString("Response"));
         assertEquals("OK2", response.getHeaderString("Response2"));
         assertEquals("Dynamic", response.getHeaderString("DynamicResponse"));
+        assertEquals("Dynamic2", response.getHeaderString("DynamicResponse2"));
         assertEquals("custom", response.getHeaderString("Custom"));
         assertEquals("simple", response.getHeaderString("Simple"));
         assertEquals("serverWrite", response.getHeaderString("ServerWriterInterceptor"));