reta opened a new pull request #529: CXF-8009: CXF should not rely on 
ClassUtils for CGLIB proxy checks
URL: https://github.com/apache/cxf/pull/529
 
 
   This is a tricky one. So the `ClassUtils.isCglibProxyClass`, which is used 
by `SpringAopClassHelper`, does check if the class name has `$$` to 
disambiguate CGLIB proxies from regular classes. The typical examples of CGLIB 
proxy class names are:
   ```
   SpringProxy$$EnhancerBySpringCGLIB$$d8e73a30
   Function$$EnhancerByCGLIB$$53576dae
   ```
   However, the classes generated for lambda expressions do contain `$$` as 
well, tricking `SpringAopClassHelper` to believe it is a CGLIB proxy, here is 
an example:
   ```
   org.apache.cxf.common.util.ClassHelperTest$$Lambda$10/846254484@32b260fa
   ```
   It turned out to be difficult to come up with efficient and bullet-proof 
check (based on class name only) to determine if it is CGLIB generated proxy or 
not. The cheapest but not 100% reliable way seems to be to check the presence 
of the `CGLIB` in the class name (this PR).
   
   Alternatively, using the reflection it is possible to achieve more reliable 
outcomes by inspecting the class, looking for CGLIB generated methods / fields 
(`CGLIB$BIND_CALLBACKS`). I am not sure it is worth it actually.
   
   @dkulp @coheigea what do you think, guys?
   
   
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to