Moved executor null check to AsyncExecutionInterceptor, allowing AbstractAsyncExecutionAspect to fall back to sync execution (as in 3.2.1)
Issue: SPR-10636
This commit is contained in:
		
							parent
							
								
									2e4eb9fc10
								
							
						
					
					
						commit
						b6c54c3637
					
				| 
						 | 
				
			
			@ -88,7 +88,7 @@ public abstract class AsyncExecutionAspectSupport implements BeanFactoryAware {
 | 
			
		|||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Determine the specific executor to use when executing the given method.
 | 
			
		||||
	 * @return the executor to use (never {@code null})
 | 
			
		||||
	 * @return the executor to use (or {@code null}, but just if no default executor has been set)
 | 
			
		||||
	 */
 | 
			
		||||
	protected AsyncTaskExecutor determineAsyncExecutor(Method method) {
 | 
			
		||||
		AsyncTaskExecutor executor = this.executors.get(method);
 | 
			
		||||
| 
						 | 
				
			
			@ -102,8 +102,7 @@ public abstract class AsyncExecutionAspectSupport implements BeanFactoryAware {
 | 
			
		|||
						this.beanFactory, Executor.class, qualifier);
 | 
			
		||||
			}
 | 
			
		||||
			else if (executorToUse == null) {
 | 
			
		||||
				throw new IllegalStateException("No executor qualifier specified and no default executor set on " +
 | 
			
		||||
						getClass().getSimpleName() + " either");
 | 
			
		||||
				return null;
 | 
			
		||||
			}
 | 
			
		||||
			executor = (executorToUse instanceof AsyncTaskExecutor ?
 | 
			
		||||
					(AsyncTaskExecutor) executorToUse : new TaskExecutorAdapter(executorToUse));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -83,7 +83,13 @@ public class AsyncExecutionInterceptor extends AsyncExecutionAspectSupport
 | 
			
		|||
		Method specificMethod = ClassUtils.getMostSpecificMethod(invocation.getMethod(), targetClass);
 | 
			
		||||
		specificMethod = BridgeMethodResolver.findBridgedMethod(specificMethod);
 | 
			
		||||
 | 
			
		||||
		Future<?> result = determineAsyncExecutor(specificMethod).submit(
 | 
			
		||||
		AsyncTaskExecutor executor = determineAsyncExecutor(specificMethod);
 | 
			
		||||
		if (executor == null) {
 | 
			
		||||
			throw new IllegalStateException(
 | 
			
		||||
					"No executor specified and no default executor set on AsyncExecutionInterceptor either");
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		Future<?> result = executor.submit(
 | 
			
		||||
				new Callable<Object>() {
 | 
			
		||||
					@Override
 | 
			
		||||
					public Object call() throws Exception {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue