From 4fe92bb20f4beb158b2934a34a6aa0fa1c10df8e Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Tue, 7 Apr 2020 06:25:45 +0100 Subject: [PATCH] Restore missing method call from merge in #124 --- .../retry/annotation/RecoverAnnotationRecoveryHandler.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/retry/annotation/RecoverAnnotationRecoveryHandler.java b/src/main/java/org/springframework/retry/annotation/RecoverAnnotationRecoveryHandler.java index 21e67c2..0a1d4b5 100644 --- a/src/main/java/org/springframework/retry/annotation/RecoverAnnotationRecoveryHandler.java +++ b/src/main/java/org/springframework/retry/annotation/RecoverAnnotationRecoveryHandler.java @@ -159,7 +159,7 @@ public class RecoverAnnotationRecoveryHandler implements MethodInvocationReco return false; } - private void init(Object target, Method method) { + private void init(final Object target, Method method) { final Map, Method> types = new HashMap, Method>(); final Method failingMethod = method; Retryable retryable = method.getAnnotation(Retryable.class); @@ -170,6 +170,9 @@ public class RecoverAnnotationRecoveryHandler implements MethodInvocationReco @Override public void doWith(Method method) throws IllegalArgumentException, IllegalAccessException { Recover recover = AnnotationUtils.findAnnotation(method, Recover.class); + if (recover == null) { + recover = findAnnotationOnTarget(target, method); + } if (recover != null && method.getReturnType().isAssignableFrom(failingMethod.getReturnType())) { Class[] parameterTypes = method.getParameterTypes(); if (parameterTypes.length > 0 && Throwable.class.isAssignableFrom(parameterTypes[0])) {