On Thu, Jan 30, 2014 at 6:44 PM, Matt Benson <gudnabr...@gmail.com> wrote:
> This change breaks binary compatibility. > I think this is OK because the class is package private. Strictly speaking it does break BC if a user's class is also in org/apache/commons/ lang3/reflect/ which I claim is asking for trouble. Why else would our class be package private? Gary > > > On Thu, Jan 30, 2014 at 5:28 PM, <ggreg...@apache.org> wrote: > > > Author: ggregory > > Date: Thu Jan 30 23:28:26 2014 > > New Revision: 1563014 > > > > URL: http://svn.apache.org/r1563014 > > Log: > > [LANG-961] > > org.apache.commons.lang3.reflect.FieldUtils.removeFinalModifier(Field) > does > > not clean up after itself. Only call setAccessible if neccessary and tell > > the caller about it so it can undo the change if need be. > > > > Modified: > > > > > commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java > > > > Modified: > > > commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java > > URL: > > > http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java?rev=1563014&r1=1563013&r2=1563014&view=diff > > > > > ============================================================================== > > --- > > > commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java > > (original) > > +++ > > > commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java > > Thu Jan 30 23:28:26 2014 > > @@ -49,20 +49,22 @@ abstract class MemberUtils { > > * sufficiently privileged code. Better workarounds would be > > gratefully > > * accepted. > > * @param o the AccessibleObject to set as accessible > > + * @return a boolean indicating whether the accessibility of the > > object was set to true. > > */ > > - static void setAccessibleWorkaround(final AccessibleObject o) { > > + static boolean setAccessibleWorkaround(final AccessibleObject o) { > > if (o == null || o.isAccessible()) { > > - return; > > + return false; > > } > > final Member m = (Member) o; > > - if (Modifier.isPublic(m.getModifiers()) > > - && > isPackageAccess(m.getDeclaringClass().getModifiers())) > > { > > + if (!o.isAccessible() && Modifier.isPublic(m.getModifiers()) && > > isPackageAccess(m.getDeclaringClass().getModifiers())) { > > try { > > o.setAccessible(true); > > + return true; > > } catch (final SecurityException e) { // NOPMD > > // ignore in favor of subsequent IllegalAccessException > > } > > } > > + return false; > > } > > > > /** > > > > > > > -- E-Mail: garydgreg...@gmail.com | ggreg...@apache.org Java Persistence with Hibernate, Second Edition<http://www.manning.com/bauer3/> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> Spring Batch in Action <http://www.manning.com/templier/> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory