From e34a7baeb3287ec5210ca721e33441fe2cf025f0 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Thu, 15 Jun 2023 14:59:33 +0200 Subject: [PATCH] Remove code duplication in RootBeanDefinition --- .../factory/support/RootBeanDefinition.java | 37 ++++++++----------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java index 25e894e8ce..8f2d519c31 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java @@ -506,23 +506,12 @@ public class RootBeanDefinition extends AbstractBeanDefinition { if (isExternallyManagedInitMethod(initMethod)) { return true; } - if (this.externallyManagedInitMethods != null) { - for (String candidate : this.externallyManagedInitMethods) { - int indexOfDot = candidate.lastIndexOf('.'); - if (indexOfDot >= 0) { - String methodName = candidate.substring(indexOfDot + 1); - if (methodName.equals(initMethod)) { - return true; - } - } - } - } - return false; + return hasAnyExternallyManagedMethod(this.externallyManagedInitMethods, initMethod); } } /** - * Return all externally managed initialization methods (as an immutable Set). + * Get all externally managed initialization methods (as an immutable Set). *

See {@link #registerExternallyManagedInitMethod} for details * regarding the format for the initialization methods in the returned set. * @since 5.3.11 @@ -583,19 +572,23 @@ public class RootBeanDefinition extends AbstractBeanDefinition { if (isExternallyManagedDestroyMethod(destroyMethod)) { return true; } - if (this.externallyManagedDestroyMethods != null) { - for (String candidate : this.externallyManagedDestroyMethods) { - int indexOfDot = candidate.lastIndexOf('.'); - if (indexOfDot >= 0) { - String methodName = candidate.substring(indexOfDot + 1); - if (methodName.equals(destroyMethod)) { - return true; - } + return hasAnyExternallyManagedMethod(this.externallyManagedDestroyMethods, destroyMethod); + } + } + + private static boolean hasAnyExternallyManagedMethod(Set candidates, String methodName) { + if (candidates != null) { + for (String candidate : candidates) { + int indexOfDot = candidate.lastIndexOf('.'); + if (indexOfDot > 0) { + String candidateMethodName = candidate.substring(indexOfDot + 1); + if (candidateMethodName.equals(methodName)) { + return true; } } } - return false; } + return false; } /**