Browse Source

Catch InaccessibleObjectException next to IllegalAccessException

Closes gh-35190
pull/35405/head
Juergen Hoeller 5 months ago
parent
commit
4277682a5c
  1. 3
      spring-aop/src/main/java/org/springframework/aop/aspectj/SimpleAspectInstanceFactory.java
  2. 3
      spring-aop/src/main/java/org/springframework/aop/support/AopUtils.java
  3. 5
      spring-beans/src/main/java/org/springframework/beans/DirectFieldAccessor.java
  4. 3
      spring-beans/src/main/java/org/springframework/beans/factory/support/SimpleInstantiationStrategy.java
  5. 5
      spring-context/src/main/java/org/springframework/context/event/ApplicationListenerMethodAdapter.java
  6. 3
      spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationReactiveSupport.java
  7. 3
      spring-context/src/main/java/org/springframework/scripting/groovy/GroovyScriptFactory.java
  8. 3
      spring-context/src/main/java/org/springframework/scripting/support/StandardScriptFactory.java
  9. 3
      spring-core/src/main/java/org/springframework/util/AutoPopulatingList.java
  10. 3
      spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideHandler.java

3
spring-aop/src/main/java/org/springframework/aop/aspectj/SimpleAspectInstanceFactory.java

@ -16,6 +16,7 @@ @@ -16,6 +16,7 @@
package org.springframework.aop.aspectj;
import java.lang.reflect.InaccessibleObjectException;
import java.lang.reflect.InvocationTargetException;
import org.springframework.aop.framework.AopConfigException;
@ -66,7 +67,7 @@ public class SimpleAspectInstanceFactory implements AspectInstanceFactory { @@ -66,7 +67,7 @@ public class SimpleAspectInstanceFactory implements AspectInstanceFactory {
throw new AopConfigException(
"Unable to instantiate aspect class: " + this.aspectClass.getName(), ex);
}
catch (IllegalAccessException ex) {
catch (IllegalAccessException | InaccessibleObjectException ex) {
throw new AopConfigException(
"Could not access aspect constructor: " + this.aspectClass.getName(), ex);
}

3
spring-aop/src/main/java/org/springframework/aop/support/AopUtils.java

@ -16,6 +16,7 @@ @@ -16,6 +16,7 @@
package org.springframework.aop.support;
import java.lang.reflect.InaccessibleObjectException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
@ -367,7 +368,7 @@ public abstract class AopUtils { @@ -367,7 +368,7 @@ public abstract class AopUtils {
throw new AopInvocationException("AOP configuration seems to be invalid: tried calling method [" +
method + "] on target [" + target + "]", ex);
}
catch (IllegalAccessException ex) {
catch (IllegalAccessException | InaccessibleObjectException ex) {
throw new AopInvocationException("Could not access method [" + method + "]", ex);
}
}

5
spring-beans/src/main/java/org/springframework/beans/DirectFieldAccessor.java

@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
package org.springframework.beans;
import java.lang.reflect.Field;
import java.lang.reflect.InaccessibleObjectException;
import java.util.HashMap;
import java.util.Map;
@ -144,7 +145,7 @@ public class DirectFieldAccessor extends AbstractNestablePropertyAccessor { @@ -144,7 +145,7 @@ public class DirectFieldAccessor extends AbstractNestablePropertyAccessor {
ReflectionUtils.makeAccessible(this.field);
return this.field.get(getWrappedInstance());
}
catch (IllegalAccessException ex) {
catch (IllegalAccessException | InaccessibleObjectException ex) {
throw new InvalidPropertyException(getWrappedClass(),
this.field.getName(), "Field is not accessible", ex);
}
@ -156,7 +157,7 @@ public class DirectFieldAccessor extends AbstractNestablePropertyAccessor { @@ -156,7 +157,7 @@ public class DirectFieldAccessor extends AbstractNestablePropertyAccessor {
ReflectionUtils.makeAccessible(this.field);
this.field.set(getWrappedInstance(), value);
}
catch (IllegalAccessException ex) {
catch (IllegalAccessException | InaccessibleObjectException ex) {
throw new InvalidPropertyException(getWrappedClass(), this.field.getName(),
"Field is not accessible", ex);
}

3
spring-beans/src/main/java/org/springframework/beans/factory/support/SimpleInstantiationStrategy.java

@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
package org.springframework.beans.factory.support;
import java.lang.reflect.Constructor;
import java.lang.reflect.InaccessibleObjectException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.function.Supplier;
@ -184,7 +185,7 @@ public class SimpleInstantiationStrategy implements InstantiationStrategy { @@ -184,7 +185,7 @@ public class SimpleInstantiationStrategy implements InstantiationStrategy {
"Illegal arguments to factory method '" + factoryMethod.getName() + "'; " +
"args: " + StringUtils.arrayToCommaDelimitedString(args), ex);
}
catch (IllegalAccessException ex) {
catch (IllegalAccessException | InaccessibleObjectException ex) {
throw new BeanInstantiationException(factoryMethod,
"Cannot access factory method '" + factoryMethod.getName() + "'; is it public?", ex);
}

5
spring-context/src/main/java/org/springframework/context/event/ApplicationListenerMethodAdapter.java

@ -16,6 +16,7 @@ @@ -16,6 +16,7 @@
package org.springframework.context.event;
import java.lang.reflect.InaccessibleObjectException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
@ -374,8 +375,8 @@ public class ApplicationListenerMethodAdapter implements GenericApplicationListe @@ -374,8 +375,8 @@ public class ApplicationListenerMethodAdapter implements GenericApplicationListe
return null;
}
ReflectionUtils.makeAccessible(this.method);
try {
ReflectionUtils.makeAccessible(this.method);
if (KotlinDetector.isSuspendingFunction(this.method)) {
return CoroutinesUtils.invokeSuspendingFunction(this.method, bean, args);
}
@ -385,7 +386,7 @@ public class ApplicationListenerMethodAdapter implements GenericApplicationListe @@ -385,7 +386,7 @@ public class ApplicationListenerMethodAdapter implements GenericApplicationListe
assertTargetBean(this.method, bean, args);
throw new IllegalStateException(getInvocationErrorMessage(bean, ex.getMessage(), args), ex);
}
catch (IllegalAccessException ex) {
catch (IllegalAccessException | InaccessibleObjectException ex) {
throw new IllegalStateException(getInvocationErrorMessage(bean, ex.getMessage(), args), ex);
}
catch (InvocationTargetException ex) {

3
spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationReactiveSupport.java

@ -16,6 +16,7 @@ @@ -16,6 +16,7 @@
package org.springframework.scheduling.annotation;
import java.lang.reflect.InaccessibleObjectException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List;
@ -173,7 +174,7 @@ abstract class ScheduledAnnotationReactiveSupport { @@ -173,7 +174,7 @@ abstract class ScheduledAnnotationReactiveSupport {
"Cannot obtain a Publisher-convertible value from the @Scheduled reactive method",
ex.getTargetException());
}
catch (IllegalAccessException ex) {
catch (IllegalAccessException | InaccessibleObjectException ex) {
throw new IllegalArgumentException(
"Cannot obtain a Publisher-convertible value from the @Scheduled reactive method", ex);
}

3
spring-context/src/main/java/org/springframework/scripting/groovy/GroovyScriptFactory.java

@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
package org.springframework.scripting.groovy;
import java.io.IOException;
import java.lang.reflect.InaccessibleObjectException;
import java.lang.reflect.InvocationTargetException;
import groovy.lang.GroovyClassLoader;
@ -341,7 +342,7 @@ public class GroovyScriptFactory implements ScriptFactory, BeanFactoryAware, Bea @@ -341,7 +342,7 @@ public class GroovyScriptFactory implements ScriptFactory, BeanFactoryAware, Bea
throw new ScriptCompilationException(
scriptSource, "Unable to instantiate Groovy script class: " + scriptClass.getName(), ex);
}
catch (IllegalAccessException ex) {
catch (IllegalAccessException | InaccessibleObjectException ex) {
throw new ScriptCompilationException(
scriptSource, "Could not access Groovy script constructor: " + scriptClass.getName(), ex);
}

3
spring-context/src/main/java/org/springframework/scripting/support/StandardScriptFactory.java

@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
package org.springframework.scripting.support;
import java.io.IOException;
import java.lang.reflect.InaccessibleObjectException;
import java.lang.reflect.InvocationTargetException;
import javax.script.Invocable;
@ -172,7 +173,7 @@ public class StandardScriptFactory implements ScriptFactory, BeanClassLoaderAwar @@ -172,7 +173,7 @@ public class StandardScriptFactory implements ScriptFactory, BeanClassLoaderAwar
throw new ScriptCompilationException(
scriptSource, "Unable to instantiate script class: " + scriptClass.getName(), ex);
}
catch (IllegalAccessException ex) {
catch (IllegalAccessException | InaccessibleObjectException ex) {
throw new ScriptCompilationException(
scriptSource, "Could not access script constructor: " + scriptClass.getName(), ex);
}

3
spring-core/src/main/java/org/springframework/util/AutoPopulatingList.java

@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
package org.springframework.util;
import java.io.Serializable;
import java.lang.reflect.InaccessibleObjectException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
@ -305,7 +306,7 @@ public class AutoPopulatingList<E> implements List<E>, Serializable { @@ -305,7 +306,7 @@ public class AutoPopulatingList<E> implements List<E>, Serializable {
throw new ElementInstantiationException(
"Unable to instantiate element class: " + this.elementClass.getName(), ex);
}
catch (IllegalAccessException ex) {
catch (IllegalAccessException | InaccessibleObjectException ex) {
throw new ElementInstantiationException(
"Could not access element constructor: " + this.elementClass.getName(), ex);
}

3
spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideHandler.java

@ -17,7 +17,6 @@ @@ -17,7 +17,6 @@
package org.springframework.test.context.bean.override.convention;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Objects;
@ -58,7 +57,7 @@ final class TestBeanOverrideHandler extends BeanOverrideHandler { @@ -58,7 +57,7 @@ final class TestBeanOverrideHandler extends BeanOverrideHandler {
ReflectionUtils.makeAccessible(this.factoryMethod);
return this.factoryMethod.invoke(null);
}
catch (IllegalAccessException | InvocationTargetException ex) {
catch (Throwable ex) {
throw new IllegalStateException(
"Failed to invoke @TestBean factory method: " + this.factoryMethod, ex);
}

Loading…
Cancel
Save