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

Ben Weidig edited comment on TAP5-2769 at 11/10/23 2:21 PM:
------------------------------------------------------------

Thanks for the PR!

If AnnotationNode is really the sole change to ASM, I'd even argue not to 
shadow the dependency at all and use it as a "normal" one and change the 
imports in Tapestry instead.

After a quick glance at the AnnotationNode.accept method, it seems it doesn't 
use anything outside of its scope, so the code could be duplicated into a util 
instead of using reflection.
It's still not the best solution, but accessing it via reflection by using 
setAccessible feels kinda hacky and I'm not fully aware of the implications due 
to SecurityManager stuff.

[https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/reflect/AccessibleObject.html#setAccessible(boolean)]


was (Author: ben-ng):
Thanks for the PR!

If AnnotationNode is really the sole change to ASM, I'd even argue not to 
shadow the dependency at all and use it as a "normal" one and change the 
imports in Tapestry instead.

After a quick glance at the AnnotationNode.accept method, it seems it doesn't 
use anything outside of its scope, so the code could be duplicated into a util 
instead of using reflection.
It's still not the best solution, but accessing it via reflection by using 
setAccessible feels kinda hacky and I'm not fully aware of the implications due 
to SecurityManager stuff.

https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/reflect/AccessibleObject.html#setAccessible(boolean)

> Upgrade ASM to 9.6 to allow running on Java 21
> ----------------------------------------------
>
>                 Key: TAP5-2769
>                 URL: https://issues.apache.org/jira/browse/TAP5-2769
>             Project: Tapestry 5
>          Issue Type: Task
>          Components: plastic
>    Affects Versions: 5.8.3
>            Reporter: Chris Poulsen
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> I have a local version where the shadowing of ASM is done by Gradle to easier 
> maintain the ASM copy in the future.
> I'll create a PR with the changes on Github.
> The copied version had a single change to the ASM sources (in order to access 
> the static package protected method 
> {code:java}
> AnnotationNode.accept
> {code}
> .
> I did a quick hack with reflection to access it instead, there is definitely 
> room for improvement there, if anyone wants to take a stab at it.
> Edit: PR https://github.com/apache/tapestry-5/pull/46



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to