mirror of https://github.com/apache/lucene.git
Forward port references to AccessController in VirtualMethod (#12308)
This commit is contained in:
parent
04ef6de826
commit
a8a95e64ce
|
@ -17,6 +17,8 @@
|
|||
package org.apache.lucene.util;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
@ -49,13 +51,20 @@ import java.util.Set;
|
|||
*
|
||||
* <pre class="prettyprint">
|
||||
* final boolean isDeprecatedMethodOverridden =
|
||||
* oldMethod.getImplementationDistance(this.getClass()) > newMethod.getImplementationDistance(this.getClass());
|
||||
* AccessController.doPrivileged((PrivilegedAction<Boolean>) () ->
|
||||
* (oldMethod.getImplementationDistance(this.getClass()) > newMethod.getImplementationDistance(this.getClass())));
|
||||
*
|
||||
* <em>// alternatively (more readable):</em>
|
||||
* final boolean isDeprecatedMethodOverridden =
|
||||
* VirtualMethod.compareImplementationDistance(this.getClass(), oldMethod, newMethod) > 0
|
||||
* AccessController.doPrivileged((PrivilegedAction<Boolean>) () ->
|
||||
* VirtualMethod.compareImplementationDistance(this.getClass(), oldMethod, newMethod) > 0);
|
||||
* </pre>
|
||||
*
|
||||
* <p>It is important to use {@link AccessController#doPrivileged(PrivilegedAction)} for the actual
|
||||
* call to get the implementation distance because the subclass may be in a different package. The
|
||||
* static constructors do not need to use {@code AccessController} because it just initializes our
|
||||
* own method reference. The caller should have access to all declared members in its own class.
|
||||
*
|
||||
* <p>{@link #getImplementationDistance} returns the distance of the subclass that overrides this
|
||||
* method. The one with the larger distance should be used preferable. This way also more
|
||||
* complicated method rename scenarios can be handled (think of 2.9 {@code TokenStream}
|
||||
|
|
Loading…
Reference in New Issue