Browse Source

Polish

This fixes an additional case where invoked methods are public but the
declaring class is package private.

Fixes gh-29046
pull/29057/head
Brian Clozel 3 years ago
parent
commit
289d378aeb
  1. 5
      spring-core-test/src/main/java/org/springframework/aot/agent/InstrumentedBridgeMethods.java

5
spring-core-test/src/main/java/org/springframework/aot/agent/InstrumentedBridgeMethods.java

@ -316,7 +316,7 @@ public abstract class InstrumentedBridgeMethods {
.onInstance(constructor).withArguments(arguments); .onInstance(constructor).withArguments(arguments);
try { try {
if (!Modifier.isPublic(constructor.getModifiers()) || if (!Modifier.isPublic(constructor.getModifiers()) ||
!Modifier.isPublic(constructor.getDeclaringClass().getModifiers()) || !constructor.canAccess(null)) { !Modifier.isPublic(constructor.getDeclaringClass().getModifiers())) {
constructor.setAccessible(true); constructor.setAccessible(true);
accessibilityChanged = true; accessibilityChanged = true;
} }
@ -339,7 +339,8 @@ public abstract class InstrumentedBridgeMethods {
Object result = null; Object result = null;
boolean accessibilityChanged = false; boolean accessibilityChanged = false;
try { try {
if (!Modifier.isPublic(method.getModifiers())) { if (!Modifier.isPublic(method.getModifiers())
|| !Modifier.isPublic(method.getDeclaringClass().getModifiers())) {
method.setAccessible(true); method.setAccessible(true);
accessibilityChanged = true; accessibilityChanged = true;
} }

Loading…
Cancel
Save