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

sergeyb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/master by this push:
     new 85f1634  [CXF-7629] Checking MBR and MBW as well
85f1634 is described below

commit 85f16345ca55b7a899ad7386faf5431cb528b270
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 |  4 +--
 .../cxf/jaxrs/provider/ProviderFactoryTest.java    | 36 ++++++++++++++++++++++
 2 files changed, 38 insertions(+), 2 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 d254fe9..c87a3a8 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
@@ -567,11 +567,11 @@ public abstract class ProviderFactory {
         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 48e5aca..e34c459 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
@@ -121,6 +121,42 @@ public class ProviderFactoryTest extends Assert {
     }
     
     @Test
+    public void testRegisterMbrMbwProviderAsMbrOnly() {
+        ServerProviderFactory pf = ServerProviderFactory.getInstance();
+        JAXBElementProvider<Book> customProvider = new 
JAXBElementProvider<Book>();
+        pf.registerUserProvider((Feature) 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();
+        JAXBElementProvider<Book> customProvider = new 
JAXBElementProvider<Book>();
+        pf.registerUserProvider((Feature) 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