Ivan Bondarenko created CXF-5360:
------------------------------------

             Summary: Resource classes are selected incorrectly
                 Key: CXF-5360
                 URL: https://issues.apache.org/jira/browse/CXF-5360
             Project: CXF
          Issue Type: Bug
          Components: JAX-RS
    Affects Versions: 2.7.7
            Reporter: Ivan Bondarenko
            Priority: Blocker


The problem: the resource is selected incorrectly when multiple classes can 
'visually' handle request. For example if we have two classes
@Path("/") class Foo {
  @GET @Path("bar") public String bar() { return "bar"; }
}
@Path("/") class Real {
  @GET @Path("hello") public String hello() { return "hello"; }
}
and their instances are registered in this order (e.g. in jaxrs:serviceBeans), 
when I GET the "/hello" path, the Foo will be selected, while it is not even 
able to handle this request.
The starting point to investigate the problem is 
org.apache.cxf.jaxrs.utils.JAXRSUtils.selectResourceClass(List<ClassResourceInfo>,
 String, MultivaluedMap<String, String>, Message), where 'candidateList' 
variable is filled incorrectly. Unfortunately I'm not so familiar with CXF code 
to provide a patch, but resource class must be selected basing on full class 
description (all methods and annotations must be taken into account).

Why this is a problem: except obvious reason (unexpected behavior), this bug 
disallows to make REST service modular. For example we may want to provide 
different feature sets for different servers. Right now it is not possible to 
implement.




--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to