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.