This is an automated email from the ASF dual-hosted git repository.

sergeyb pushed a commit to branch 3.1.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/3.1.x-fixes by this push:
     new c24a6fa  [CXF-7629] Checking MBR and MBW as well
c24a6fa is described below

commit c24a6fa49075924fe136fcc6f5f23b182e438b3b
Author: Sergey Beryozkin <sberyoz...@gmail.com>
AuthorDate: Fri Feb 2 10:41:08 2018 +0000

    [CXF-7629] Checking MBR and MBW as well
---
 .../apache/cxf/jaxrs/provider/ProviderFactory.java |  8 ++---
 .../cxf/jaxrs/provider/ProviderFactoryTest.java    | 40 ++++++++++++++++++++++
 2 files changed, 44 insertions(+), 4 deletions(-)

diff --git 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
index e1cc66c..a2735b7 100644
--- 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
+++ 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
@@ -570,12 +570,12 @@ public abstract class ProviderFactory {
             new LinkedList<ProviderInfo<WriterInterceptor>>();
         for (ProviderInfo<? extends Object> provider : theProviders) {
             Class<?> providerCls = ClassHelper.getRealClass(bus, 
provider.getProvider());
-            
-            if (MessageBodyReader.class.isAssignableFrom(providerCls)) {
+
+            if (filterContractSupported(provider, providerCls, 
MessageBodyReader.class)) {
                 addProviderToList(messageReaders, provider);
             }
-            
-            if (MessageBodyWriter.class.isAssignableFrom(providerCls)) {
+
+            if (filterContractSupported(provider, providerCls, 
MessageBodyWriter.class)) {
                 addProviderToList(messageWriters, provider);
             }
             
diff --git 
a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
 
b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
index 7758210..cbaac45 100644
--- 
a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
+++ 
b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
@@ -126,6 +126,46 @@ public class ProviderFactoryTest extends Assert {
     }
     
     @Test
+    public void testRegisterMbrMbwProviderAsMbrOnly() {
+        ServerProviderFactory pf = ServerProviderFactory.getInstance();
+        final JAXBElementProvider<Book> customProvider = new 
JAXBElementProvider<Book>();
+        pf.registerUserProvider(new Feature() {
+            public boolean configure(FeatureContext context) {
+                context.register(customProvider, MessageBodyReader.class);
+                return true;
+            }
+        });
+        MessageBodyReader<Book> reader = 
pf.createMessageBodyReader(Book.class, null, null,
+                                                                    
MediaType.TEXT_XML_TYPE, new MessageImpl());
+        assertSame(reader, customProvider);
+
+        MessageBodyWriter<Book> writer = 
pf.createMessageBodyWriter(Book.class, null, null,
+                                                                    
MediaType.TEXT_XML_TYPE, new MessageImpl());
+        assertTrue(writer instanceof JAXBElementProvider);
+        assertNotSame(writer, customProvider);
+    }
+    
+    @Test
+    public void testRegisterMbrMbwProviderAsMbwOnly() {
+        ServerProviderFactory pf = ServerProviderFactory.getInstance();
+        final JAXBElementProvider<Book> customProvider = new 
JAXBElementProvider<Book>();
+        pf.registerUserProvider(new Feature() {
+            public boolean configure(FeatureContext context) {
+                context.register(customProvider, MessageBodyWriter.class);
+                return true;
+            }
+        });
+        MessageBodyWriter<Book> writer = 
pf.createMessageBodyWriter(Book.class, null, null,
+                                                                    
MediaType.TEXT_XML_TYPE, new MessageImpl());
+        assertSame(writer, customProvider);
+
+        MessageBodyReader<Book> reader = 
pf.createMessageBodyReader(Book.class, null, null,
+                                                                    
MediaType.TEXT_XML_TYPE, new MessageImpl());
+        assertTrue(reader instanceof JAXBElementProvider);
+        assertNotSame(reader, customProvider);
+    }
+    
+    @Test
     public void testOrderOfProvidersWithSameProperties() {
         ProviderFactory pf = ServerProviderFactory.getInstance();
         WildcardReader reader1 = new WildcardReader();

-- 
To stop receiving notification emails like this one, please contact
serg...@apache.org.

Reply via email to