Skip to content

Commit

Permalink
Remove code duplication in AnnotationDrivenBeanDefinitionParser
Browse files Browse the repository at this point in the history
This commit merges the implementations of getCallableInterceptors()
and getDeferredResultInterceptors() in order to remove code duplication.

Closes gh-24305
  • Loading branch information
GungnirLaevatain authored and sbrannen committed Jan 7, 2020
1 parent 141dae6 commit 4692f20
Showing 1 changed file with 5 additions and 26 deletions.
Expand Up @@ -234,8 +234,8 @@ public BeanDefinition parse(Element element, ParserContext context) {
ManagedList<?> returnValueHandlers = getReturnValueHandlers(element, context);
String asyncTimeout = getAsyncTimeout(element);
RuntimeBeanReference asyncExecutor = getAsyncExecutor(element);
ManagedList<?> callableInterceptors = getCallableInterceptors(element, source, context);
ManagedList<?> deferredResultInterceptors = getDeferredResultInterceptors(element, source, context);
ManagedList<?> callableInterceptors = getInterceptors(element, source, context, "callable-interceptors");
ManagedList<?> deferredResultInterceptors = getInterceptors(element, source, context, "deferred-result-interceptors");

RootBeanDefinition handlerAdapterDef = new RootBeanDefinition(RequestMappingHandlerAdapter.class);
handlerAdapterDef.setSource(source);
Expand Down Expand Up @@ -480,34 +480,13 @@ private RuntimeBeanReference getAsyncExecutor(Element element) {
return null;
}

private ManagedList<?> getCallableInterceptors(
Element element, @Nullable Object source, ParserContext context) {

ManagedList<Object> interceptors = new ManagedList<>();
Element asyncElement = DomUtils.getChildElementByTagName(element, "async-support");
if (asyncElement != null) {
Element interceptorsElement = DomUtils.getChildElementByTagName(asyncElement, "callable-interceptors");
if (interceptorsElement != null) {
interceptors.setSource(source);
for (Element converter : DomUtils.getChildElementsByTagName(interceptorsElement, "bean")) {
BeanDefinitionHolder beanDef = context.getDelegate().parseBeanDefinitionElement(converter);
if (beanDef != null) {
beanDef = context.getDelegate().decorateBeanDefinitionIfRequired(converter, beanDef);
interceptors.add(beanDef);
}
}
}
}
return interceptors;
}

private ManagedList<?> getDeferredResultInterceptors(
Element element, @Nullable Object source, ParserContext context) {
private ManagedList<?> getInterceptors(
Element element, @Nullable Object source, ParserContext context, String interceptorElementName) {

ManagedList<Object> interceptors = new ManagedList<>();
Element asyncElement = DomUtils.getChildElementByTagName(element, "async-support");
if (asyncElement != null) {
Element interceptorsElement = DomUtils.getChildElementByTagName(asyncElement, "deferred-result-interceptors");
Element interceptorsElement = DomUtils.getChildElementByTagName(asyncElement, interceptorElementName);
if (interceptorsElement != null) {
interceptors.setSource(source);
for (Element converter : DomUtils.getChildElementsByTagName(interceptorsElement, "bean")) {
Expand Down

0 comments on commit 4692f20

Please sign in to comment.