[
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)