cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "iris ding (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-6369) org.apache.cxf.jaxrs.impl.ConfigurationImpl does not comply with SPEC
Date Mon, 27 Apr 2015 01:52:38 GMT

    [ https://issues.apache.org/jira/browse/CXF-6369?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14513411#comment-14513411
] 

iris ding commented on CXF-6369:
--------------------------------

HI Sergey,

For the 2nd change:
//need to check whether existed already, If so, remove the old entry before hand -start here
Object duplicate = null;
for (Object o : providers.keySet())
{
if (o.getClass() == provider.getClass())
{ duplicate = o; break; }
}
providers.remove(duplicate);
////need to check whether existed already, If so, remove the old entry before hand – end
here

The reason here is if we have a call like below:
config.register(GzipInterceptor.class, 6500);
config.register(GzipInterceptor.class, 7000);
Then finally GzipInterceptor.class, 7000 should take effect.  In other words, the priority
should be overridden by the afterwards provider registration. 
if we simply check whether the given provider has already been registered and reject the registration
the above usage scenario can not be satisfied.



> org.apache.cxf.jaxrs.impl.ConfigurationImpl does not comply with SPEC
> ---------------------------------------------------------------------
>
>                 Key: CXF-6369
>                 URL: https://issues.apache.org/jira/browse/CXF-6369
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 3.0.3, 3.0.4, 2.7.15
>            Reporter: iris ding
>            Assignee: Sergey Beryozkin
>             Fix For: 3.1.0, 3.0.5
>
>
> According to http://docs.oracle.com/javaee/7/api/javax/ws/rs/core/Configurable.html
> As a general rule, for each JAX-RS component class there can be at most one registration
— class-based or instance-based — configured at any given moment. Implementations MUST
reject any attempts to configure a new registration for a provider class that has been already
registered in the given configurable context earlier. Implementations SHOULD also raise a
warning to inform the user about the rejected component registration.
> For example:
>  config.register(GzipInterceptor.class, WriterInterceptor.class);
>  config.register(GzipInterceptor.class);       // Rejected by runtime.
>  config.register(new GzipInterceptor());       // Rejected by runtime.
>  config.register(GzipInterceptor.class, 6500); // Rejected by runtime.
> So we need to check whether the same class's instances have already been put into config
before hand.
> Also to check whether the class/instance has been registered via  public boolean isRegistered(Class<?>
cls) , we need to check whether the two class is the same other than just isAssignableFrom.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message