commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sebb (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LANG-959) FieldUtils write methods do not write to final fields.
Date Sun, 29 May 2016 13:28:12 GMT

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

Sebb commented on LANG-959:
---------------------------

It looks like the patch unconditionally removes the final modifer.
There does not seem to be any attempt to restore the modifier after the write has completed.
Also the Javadoc for any methods that call removeFinal() should document that the modifier
may be removed.

AFAIK the throws clause does not affect BC == binary compatibility.
However throwing a new Exception could affect callers, so it is reasonable to convert the
Exception.
I think the comment should make it clear that the conversion is to conform to existing behaviour.

> FieldUtils write methods do not write to final fields.
> ------------------------------------------------------
>
>                 Key: LANG-959
>                 URL: https://issues.apache.org/jira/browse/LANG-959
>             Project: Commons Lang
>          Issue Type: Improvement
>          Components: lang.reflect.*
>    Affects Versions: 3.2.1
>         Environment: Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17
11:22:22-0400)
> Maven home: C:\Java\apache-maven-3.1.1\bin\..
> Java version: 1.7.0_51, vendor: Oracle Corporation
> Java home: C:\Program Files\Java\jdk1.7.0_51\jre
> Default locale: en_US, platform encoding: Cp1252
> OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
>            Reporter: Gary Gregory
>            Assignee: Gary Gregory
>             Fix For: Review Patch
>
>         Attachments: LANG-959.diff
>
>
> I have a use case where I need to use reflection to set a public static final Object.
> This does not work with our FieldUtils class because the "forceAccess" argument is only
used to deal with field visibility by calling Field#setAccessible(boolean)
> Q1: Should "forceAccess" be expanded to remove the final modifier? Or:
> Q2: Should we add another boolean parameter "forceWrite" to remove the FINAL modifier?
> I like Q1.
> Q3: The Accessible flag is NOT reset if changed after a write! I think it should be.
Thoughts?
> The attached patch implements this BUT does not fix failing tests that expect writes
to fail on final fields. I left the tests failing to show clearly which ones fail so we can
discuss if:
> - this fixes a bug, 
> - is an improvement acceptable for the next release
> - or breaks too much for the next release
> Discuss here or on the ML.
> Thank you.



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

Mime
View raw message