[ https://issues.apache.org/jira/browse/CXF-7638?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16361203#comment-16361203 ]
Andy McCright commented on CXF-7638: ------------------------------------ [~johndament] My understanding for that case (registering a component with one good and one bad interface) is that we should ignore the whole register call - and log a message indicating the problem. I think the spec is taking a hard line and saying that if a user specifies the contracts for a given component, then it must not contain any contracts not implemented by the component (or a superclass of the component). So the only advantage for specifying contracts (that I can see) would be to limit the component - i.e. a component implements MBW and MBR, but for a given case, we only want it registered as MBR. > JAXRS CTS/TCK issue: register(...) should ignore components when invalid > contracts are passed in > ------------------------------------------------------------------------------------------------- > > Key: CXF-7638 > URL: https://issues.apache.org/jira/browse/CXF-7638 > Project: CXF > Issue Type: Bug > Components: JAX-RS > Affects Versions: 3.2.2 > Reporter: Andy McCright > Assignee: Andy McCright > Priority: Major > Fix For: 3.2.3 > > > We're seeing some failures when running the JAX-RS 2.1 TCK - particularly > around the register method. The javadoc states that the implementation MUST > ignore the component if the call to register specifies a contract (interface) > that the component does not implement. > So, for example, suppose somebody calls code like this: > > public class MyProvider implements MessageBodyWriter<MyObject> ... > > Client c = ClientBuilder.newClient(); > c.register(MyProvider.class, ContainerRequestFilter.class); // should ignore > c.register(new MyProvider, ExceptionMapper.class, MessageBodyReader.class); > // should ignore > Map<Class, int> contractPriorityMap = new HashMap<>(); > contractPriorityMap.put(ClientResponseFilter.class, 20); > c.register(MyProvider.class, contractPriorityMap); // should ignore > c.register(new MyProvider.class, contractPriorityMap); // should ignore > > The TCK tests basically check that nothing gets registered when a passed-in > contract is not assignable to the provider class. And scenarios like the > four mentioned above are failing. > -- This message was sent by Atlassian JIRA (v7.6.3#76005)