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

ASF GitHub Bot commented on CXF-7309:
-------------------------------------

Github user nhtzr commented on a diff in the pull request:

    https://github.com/apache/cxf/pull/253#discussion_r109824786
  
    --- Diff: 
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java 
---
    @@ -1167,10 +1161,12 @@ public static void injectContextMethods(Object 
requestObject,
                     if (!cri.isSingleton()) {
                         InjectionUtils.injectThroughMethod(requestObject, 
method, o, message);
                     } else {
    -                    ThreadLocalProxy<Object> proxy 
    -                        = 
(ThreadLocalProxy<Object>)cri.getContextSetterProxy(method);
    +                    Object proxy = extractFromSetter(requestObject, 
method);
    +                    if (!(proxy instanceof ThreadLocalProxy)) {
    --- End diff --
    
    Hi! Sorry for the late response!
    
    The intention of this condition is to prevent NPE or ClassCastException 
that may happen in case `extractFromSetter()` fails or in case it returns some 
completely unexpected value.
    The unexpected value could happen from the unfortunate coincidence in which 
a getter exists but it doesn't follow a Bean Property pattern. 
    Another possibility would be the property being overwritten by code outside 
cxf (That should be unlikely, but it is possible) and therefore no longer a 
proxy.


> JAX-RS @Context fields throw NPE in OSGI hot deployed filters
> -------------------------------------------------------------
>
>                 Key: CXF-7309
>                 URL: https://issues.apache.org/jira/browse/CXF-7309
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 3.0.12, 3.1.10
>            Reporter: Ezequiel Rosas Garcia
>
> Hello. 
> This happens with a PreMatching filter that is loaded from OSGI.
> I found that when the filter OSGI bundle is hot deployed, all other already 
> running bundles using it would start throwing NPE when trying to access the 
> injected fields inside the filter (like CXF-7248)
> This seems to happen due to other bundles retaining their ThreadLocal 
> references in their own AbstractResourceInfo#getSetterProxyMap() while the 
> OSGI Proxy starts redirecting to a new filter object which has new different 
> ThreadLocal references as soon as it is used for the first time after hot re 
> deployment.
> Test: 
> [Link](https://github.com/nhtzr/osgiee-web/blob/42faf2cbe0c54497ea706e97cd91a9ee8c29e020/src/test/java/mx/nhtzr/osgiee/web/internal/MyFilterTest.java)
> PR: [Link](https://github.com/apache/cxf/pull/253)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to