Skip to content

Commit c9d0ebd

Browse files
committed
Rename ResponseBodyInterceptor to ResponseBodyAdvice
Issue: SPR-10859
1 parent 2655c50 commit c9d0ebd

17 files changed

+123
-121
lines changed

spring-webmvc/src/main/java/org/springframework/web/servlet/config/AnnotationDrivenBeanDefinitionParser.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.util.List;
2020
import java.util.Properties;
2121

22-
import org.springframework.web.servlet.mvc.method.annotation.JsonViewResponseBodyInterceptor;
22+
import org.springframework.web.servlet.mvc.method.annotation.JsonViewResponseBodyAdvice;
2323
import org.springframework.http.converter.json.GsonHttpMessageConverter;
2424
import org.w3c.dom.Element;
2525

@@ -201,7 +201,7 @@ else if (element.hasAttribute("enableMatrixVariables")) {
201201
handlerAdapterDef.getPropertyValues().add("contentNegotiationManager", contentNegotiationManager);
202202
handlerAdapterDef.getPropertyValues().add("webBindingInitializer", bindingDef);
203203
handlerAdapterDef.getPropertyValues().add("messageConverters", messageConverters);
204-
addResponseBodyInterceptors(handlerAdapterDef);
204+
addResponseBodyAdvice(handlerAdapterDef);
205205

206206
if (element.hasAttribute("ignore-default-model-on-redirect")) {
207207
Boolean ignoreDefaultModel = Boolean.valueOf(element.getAttribute("ignore-default-model-on-redirect"));
@@ -253,7 +253,7 @@ else if (element.hasAttribute("ignoreDefaultModelOnRedirect")) {
253253
exceptionHandlerExceptionResolver.getPropertyValues().add("contentNegotiationManager", contentNegotiationManager);
254254
exceptionHandlerExceptionResolver.getPropertyValues().add("messageConverters", messageConverters);
255255
exceptionHandlerExceptionResolver.getPropertyValues().add("order", 0);
256-
addResponseBodyInterceptors(exceptionHandlerExceptionResolver);
256+
addResponseBodyAdvice(exceptionHandlerExceptionResolver);
257257

258258
String methodExceptionResolverName =
259259
parserContext.getReaderContext().registerWithGeneratedName(exceptionHandlerExceptionResolver);
@@ -288,10 +288,10 @@ else if (element.hasAttribute("ignoreDefaultModelOnRedirect")) {
288288
return null;
289289
}
290290

291-
protected void addResponseBodyInterceptors(RootBeanDefinition beanDef) {
291+
protected void addResponseBodyAdvice(RootBeanDefinition beanDef) {
292292
if (jackson2Present) {
293-
beanDef.getPropertyValues().add("responseBodyInterceptors",
294-
new RootBeanDefinition(JsonViewResponseBodyInterceptor.class));
293+
beanDef.getPropertyValues().add("responseBodyAdvice",
294+
new RootBeanDefinition(JsonViewResponseBodyAdvice.class));
295295
}
296296
}
297297

spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.springframework.web.servlet.config.annotation;
1818

1919
import java.util.ArrayList;
20-
import java.util.Arrays;
2120
import java.util.HashMap;
2221
import java.util.List;
2322
import java.util.Map;
@@ -76,10 +75,10 @@
7675
import org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter;
7776
import org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver;
7877
import org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver;
79-
import org.springframework.web.servlet.mvc.method.annotation.JsonViewResponseBodyInterceptor;
78+
import org.springframework.web.servlet.mvc.method.annotation.JsonViewResponseBodyAdvice;
8079
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
8180
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
82-
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyInterceptor;
81+
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
8382
import org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver;
8483
import org.springframework.web.servlet.resource.ResourceUrlProvider;
8584
import org.springframework.web.servlet.resource.ResourceUrlProviderExposingInterceptor;
@@ -425,9 +424,9 @@ public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
425424
adapter.setCustomReturnValueHandlers(returnValueHandlers);
426425

427426
if (jackson2Present) {
428-
List<ResponseBodyInterceptor<?>> interceptors = new ArrayList<ResponseBodyInterceptor<?>>();
429-
interceptors.add(new JsonViewResponseBodyInterceptor());
430-
adapter.setResponseBodyInterceptors(interceptors);
427+
List<ResponseBodyAdvice<?>> interceptors = new ArrayList<ResponseBodyAdvice<?>>();
428+
interceptors.add(new JsonViewResponseBodyAdvice());
429+
adapter.setResponseBodyAdvice(interceptors);
431430
}
432431

433432
AsyncSupportConfigurer configurer = new AsyncSupportConfigurer();
@@ -712,9 +711,9 @@ protected final void addDefaultHandlerExceptionResolvers(List<HandlerExceptionRe
712711
exceptionHandlerExceptionResolver.setContentNegotiationManager(mvcContentNegotiationManager());
713712
exceptionHandlerExceptionResolver.setMessageConverters(getMessageConverters());
714713
if (jackson2Present) {
715-
List<ResponseBodyInterceptor<?>> interceptors = new ArrayList<ResponseBodyInterceptor<?>>();
716-
interceptors.add(new JsonViewResponseBodyInterceptor());
717-
exceptionHandlerExceptionResolver.setResponseBodyInterceptors(interceptors);
714+
List<ResponseBodyAdvice<?>> interceptors = new ArrayList<ResponseBodyAdvice<?>>();
715+
interceptors.add(new JsonViewResponseBodyAdvice());
716+
exceptionHandlerExceptionResolver.setResponseBodyAdvice(interceptors);
718717
}
719718
exceptionHandlerExceptionResolver.afterPropertiesSet();
720719

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import java.util.Collection;
3030

3131
/**
32-
* A convenient base class for a {@code ResponseBodyInterceptor} to instruct the
32+
* A convenient base class for a {@code ResponseBodyAdvice} to instruct the
3333
* {@link org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
3434
* MappingJackson2HttpMessageConverter} to serialize with JSONP formatting.
3535
*
@@ -43,12 +43,12 @@
4343
* @author Rossen Stoyanchev
4444
* @since 4.1
4545
*/
46-
public abstract class AbstractJsonpResponseBodyInterceptor extends AbstractMappingJacksonResponseBodyInterceptor {
46+
public abstract class AbstractJsonpResponseBodyAdvice extends AbstractMappingJacksonResponseBodyAdvice {
4747

4848
private final String[] jsonpQueryParamNames;
4949

5050

51-
protected AbstractJsonpResponseBodyInterceptor(Collection<String> queryParamNames) {
51+
protected AbstractJsonpResponseBodyAdvice(Collection<String> queryParamNames) {
5252
Assert.isTrue(!CollectionUtils.isEmpty(queryParamNames), "At least one query param name is required");
5353
this.jsonpQueryParamNames = queryParamNames.toArray(new String[queryParamNames.size()]);
5454
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,19 @@
2525
import org.springframework.http.server.ServerHttpResponse;
2626

2727
/**
28-
* A convenient base class for {@code ResponseBodyInterceptor} implementations
28+
* A convenient base class for {@code ResponseBodyAdvice} implementations
2929
* that customize the response before JSON serialization with
3030
* {@link org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
3131
* MappingJackson2HttpMessageConverter}.
3232
*
3333
* @author Rossen Stoyanchev
3434
* @since 4.1
3535
*/
36-
public abstract class AbstractMappingJacksonResponseBodyInterceptor
37-
implements ResponseBodyInterceptor<Object> {
36+
public abstract class AbstractMappingJacksonResponseBodyAdvice
37+
implements ResponseBodyAdvice<Object> {
3838

3939

40-
protected AbstractMappingJacksonResponseBodyInterceptor() {
40+
protected AbstractMappingJacksonResponseBodyAdvice() {
4141
}
4242

4343

spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractMessageConverterMethodProcessor.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.springframework.http.converter.HttpMessageConverter;
3232
import org.springframework.http.server.ServletServerHttpRequest;
3333
import org.springframework.http.server.ServletServerHttpResponse;
34-
import org.springframework.util.ClassUtils;
3534
import org.springframework.util.CollectionUtils;
3635
import org.springframework.web.HttpMediaTypeNotAcceptableException;
3736
import org.springframework.web.accept.ContentNegotiationManager;
@@ -55,7 +54,7 @@ public abstract class AbstractMessageConverterMethodProcessor extends AbstractMe
5554

5655
private final ContentNegotiationManager contentNegotiationManager;
5756

58-
private final ResponseBodyInterceptorChain interceptorChain;
57+
private final ResponseBodyAdviceChain adviceChain;
5958

6059

6160
protected AbstractMessageConverterMethodProcessor(List<HttpMessageConverter<?>> messageConverters) {
@@ -68,11 +67,11 @@ protected AbstractMessageConverterMethodProcessor(List<HttpMessageConverter<?>>
6867
}
6968

7069
protected AbstractMessageConverterMethodProcessor(List<HttpMessageConverter<?>> messageConverters,
71-
ContentNegotiationManager manager, List<Object> responseBodyInterceptors) {
70+
ContentNegotiationManager manager, List<Object> responseBodyAdvice) {
7271

7372
super(messageConverters);
7473
this.contentNegotiationManager = (manager != null ? manager : new ContentNegotiationManager());
75-
this.interceptorChain = new ResponseBodyInterceptorChain(responseBodyInterceptors);
74+
this.adviceChain = new ResponseBodyAdviceChain(responseBodyAdvice);
7675
}
7776

7877

@@ -149,7 +148,7 @@ else if (mediaType.equals(MediaType.ALL) || mediaType.equals(MEDIA_TYPE_APPLICAT
149148
selectedMediaType = selectedMediaType.removeQualityValue();
150149
for (HttpMessageConverter<?> messageConverter : this.messageConverters) {
151150
if (messageConverter.canWrite(returnValueClass, selectedMediaType)) {
152-
returnValue = this.interceptorChain.invoke(returnValue, returnType, selectedMediaType,
151+
returnValue = this.adviceChain.invoke(returnValue, returnType, selectedMediaType,
153152
(Class<HttpMessageConverter<?>>) messageConverter.getClass(), inputMessage, outputMessage);
154153
((HttpMessageConverter<T>) messageConverter).write(returnValue, selectedMediaType, outputMessage);
155154
if (logger.isDebugEnabled()) {

spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ExceptionHandlerExceptionResolver.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public class ExceptionHandlerExceptionResolver extends AbstractHandlerMethodExce
7979

8080
private ContentNegotiationManager contentNegotiationManager = new ContentNegotiationManager();
8181

82-
private final List<Object> responseBodyInterceptors = new ArrayList<Object>();
82+
private final List<Object> responseBodyAdvice = new ArrayList<Object>();
8383

8484

8585
private final Map<Class<?>, ExceptionHandlerMethodResolver> exceptionHandlerCache =
@@ -110,15 +110,15 @@ public ExceptionHandlerExceptionResolver() {
110110
}
111111

112112
/**
113-
* Add one or more interceptors to be invoked after the execution of a controller
113+
* Add one or more components to be invoked after the execution of a controller
114114
* method annotated with {@code @ResponseBody} or returning {@code ResponseEntity}
115115
* but before the body is written to the response with the selected
116116
* {@code HttpMessageConverter}.
117117
*/
118-
public void setResponseBodyInterceptors(List<ResponseBodyInterceptor<?>> responseBodyInterceptors) {
119-
this.responseBodyInterceptors.clear();
120-
if (responseBodyInterceptors != null) {
121-
this.responseBodyInterceptors.addAll(responseBodyInterceptors);
118+
public void setResponseBodyAdvice(List<ResponseBodyAdvice<?>> responseBodyAdvice) {
119+
this.responseBodyAdvice.clear();
120+
if (responseBodyAdvice != null) {
121+
this.responseBodyAdvice.addAll(responseBodyAdvice);
122122
}
123123
}
124124

@@ -250,7 +250,7 @@ public ApplicationContext getApplicationContext() {
250250
@Override
251251
public void afterPropertiesSet() {
252252

253-
// Do this first, it may add ResponseBody interceptors
253+
// Do this first, it may add ResponseBodyAdvice beans
254254
initExceptionHandlerAdviceCache();
255255

256256
if (this.argumentResolvers == null) {
@@ -271,18 +271,18 @@ private void initExceptionHandlerAdviceCache() {
271271
logger.debug("Looking for exception mappings: " + getApplicationContext());
272272
}
273273

274-
List<ControllerAdviceBean> beans = ControllerAdviceBean.findAnnotatedBeans(getApplicationContext());
275-
Collections.sort(beans, new OrderComparator());
274+
List<ControllerAdviceBean> adviceBeans = ControllerAdviceBean.findAnnotatedBeans(getApplicationContext());
275+
Collections.sort(adviceBeans, new OrderComparator());
276276

277-
for (ControllerAdviceBean bean : beans) {
278-
ExceptionHandlerMethodResolver resolver = new ExceptionHandlerMethodResolver(bean.getBeanType());
277+
for (ControllerAdviceBean adviceBean : adviceBeans) {
278+
ExceptionHandlerMethodResolver resolver = new ExceptionHandlerMethodResolver(adviceBean.getBeanType());
279279
if (resolver.hasExceptionMappings()) {
280-
this.exceptionHandlerAdviceCache.put(bean, resolver);
281-
logger.info("Detected @ExceptionHandler methods in " + bean);
280+
this.exceptionHandlerAdviceCache.put(adviceBean, resolver);
281+
logger.info("Detected @ExceptionHandler methods in " + adviceBean);
282282
}
283-
if (ResponseBodyInterceptor.class.isAssignableFrom(bean.getBeanType())) {
284-
this.responseBodyInterceptors.add(bean);
285-
logger.info("Detected ResponseBodyInterceptor implementation in " + bean);
283+
if (ResponseBodyAdvice.class.isAssignableFrom(adviceBean.getBeanType())) {
284+
this.responseBodyAdvice.add(adviceBean);
285+
logger.info("Detected ResponseBodyAdvice implementation in " + adviceBean);
286286
}
287287
}
288288
}
@@ -318,12 +318,12 @@ protected List<HandlerMethodReturnValueHandler> getDefaultReturnValueHandlers()
318318
handlers.add(new ModelMethodProcessor());
319319
handlers.add(new ViewMethodReturnValueHandler());
320320
handlers.add(new HttpEntityMethodProcessor(
321-
getMessageConverters(), this.contentNegotiationManager, this.responseBodyInterceptors));
321+
getMessageConverters(), this.contentNegotiationManager, this.responseBodyAdvice));
322322

323323
// Annotation-based return value types
324324
handlers.add(new ModelAttributeMethodProcessor(false));
325325
handlers.add(new RequestResponseBodyMethodProcessor(
326-
getMessageConverters(), this.contentNegotiationManager, this.responseBodyInterceptors));
326+
getMessageConverters(), this.contentNegotiationManager, this.responseBodyAdvice));
327327

328328
// Multi-purpose return value types
329329
handlers.add(new ViewNameMethodReturnValueHandler());

spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/HttpEntityMethodProcessor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ public HttpEntityMethodProcessor(List<HttpMessageConverter<?>> messageConverters
6161
}
6262

6363
public HttpEntityMethodProcessor(List<HttpMessageConverter<?>> messageConverters,
64-
ContentNegotiationManager contentNegotiationManager, List<Object> responseBodyInterceptors) {
65-
super(messageConverters, contentNegotiationManager, responseBodyInterceptors);
64+
ContentNegotiationManager contentNegotiationManager, List<Object> responseBodyAdvice) {
65+
super(messageConverters, contentNegotiationManager, responseBodyAdvice);
6666
}
6767

6868

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import org.springframework.util.Assert;
2727

2828
/**
29-
* A {@code ResponseBodyInterceptor} implementation that adds support for
29+
* A {@code ResponseBodyAdvice} implementation that adds support for
3030
* Jackson's {@code @JsonView} annotation declared on a Spring MVC
3131
* {@code @RequestMapping} or {@code @ExceptionHandler} method. The serialization
3232
* view specified in the annotation will be passed in to the
@@ -38,7 +38,7 @@
3838
*
3939
* @see com.fasterxml.jackson.databind.ObjectMapper#writerWithView(Class)
4040
*/
41-
public class JsonViewResponseBodyInterceptor extends AbstractMappingJacksonResponseBodyInterceptor {
41+
public class JsonViewResponseBodyAdvice extends AbstractMappingJacksonResponseBodyAdvice {
4242

4343

4444
@Override

spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerAdapter.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ public class RequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter
132132

133133
private List<HttpMessageConverter<?>> messageConverters;
134134

135-
private List<Object> responseBodyInterceptors = new ArrayList<Object>();
135+
private List<Object> responseBodyAdvice = new ArrayList<Object>();
136136

137137
private WebBindingInitializer webBindingInitializer;
138138

@@ -334,15 +334,15 @@ public List<HttpMessageConverter<?>> getMessageConverters() {
334334
}
335335

336336
/**
337-
* Add one or more interceptors to be invoked after the execution of a controller
338-
* method annotated with {@code @ResponseBody} or returning {@code ResponseEntity}
339-
* but before the body is written to the response with the selected
340-
* {@code HttpMessageConverter}.
337+
* Add one or more components to modify the response after the execution of a
338+
* controller method annotated with {@code @ResponseBody}, or a method returning
339+
* {@code ResponseEntity} and before the body is written to the response with
340+
* the selected {@code HttpMessageConverter}.
341341
*/
342-
public void setResponseBodyInterceptors(List<ResponseBodyInterceptor<?>> responseBodyInterceptors) {
343-
this.responseBodyInterceptors.clear();
344-
if (responseBodyInterceptors != null) {
345-
this.responseBodyInterceptors.addAll(responseBodyInterceptors);
342+
public void setResponseBodyAdvice(List<ResponseBodyAdvice<?>> responseBodyAdvice) {
343+
this.responseBodyAdvice.clear();
344+
if (responseBodyAdvice != null) {
345+
this.responseBodyAdvice.addAll(responseBodyAdvice);
346346
}
347347
}
348348

@@ -498,7 +498,7 @@ protected ConfigurableBeanFactory getBeanFactory() {
498498
@Override
499499
public void afterPropertiesSet() {
500500

501-
// Do this first, it may add ResponseBody interceptors
501+
// Do this first, it may add ResponseBody advice beans
502502
initControllerAdviceCache();
503503

504504
if (this.argumentResolvers == null) {
@@ -526,7 +526,7 @@ private void initControllerAdviceCache() {
526526
List<ControllerAdviceBean> beans = ControllerAdviceBean.findAnnotatedBeans(getApplicationContext());
527527
Collections.sort(beans, new OrderComparator());
528528

529-
List<Object> interceptorBeans = new ArrayList<Object>();
529+
List<Object> responseBodyAdviceBeans = new ArrayList<Object>();
530530

531531
for (ControllerAdviceBean bean : beans) {
532532
Set<Method> attrMethods = HandlerMethodSelector.selectMethods(bean.getBeanType(), MODEL_ATTRIBUTE_METHODS);
@@ -539,14 +539,14 @@ private void initControllerAdviceCache() {
539539
this.initBinderAdviceCache.put(bean, binderMethods);
540540
logger.info("Detected @InitBinder methods in " + bean);
541541
}
542-
if (ResponseBodyInterceptor.class.isAssignableFrom(bean.getBeanType())) {
543-
interceptorBeans.add(bean);
544-
logger.info("Detected ResponseBodyInterceptor implementation in " + bean);
542+
if (ResponseBodyAdvice.class.isAssignableFrom(bean.getBeanType())) {
543+
responseBodyAdviceBeans.add(bean);
544+
logger.info("Detected ResponseBodyAdvice bean in " + bean);
545545
}
546546
}
547547

548-
if (!interceptorBeans.isEmpty()) {
549-
this.responseBodyInterceptors.addAll(0, interceptorBeans);
548+
if (!responseBodyAdviceBeans.isEmpty()) {
549+
this.responseBodyAdvice.addAll(0, responseBodyAdviceBeans);
550550
}
551551
}
552552

@@ -638,7 +638,7 @@ private List<HandlerMethodReturnValueHandler> getDefaultReturnValueHandlers() {
638638
handlers.add(new ModelMethodProcessor());
639639
handlers.add(new ViewMethodReturnValueHandler());
640640
handlers.add(new HttpEntityMethodProcessor(
641-
getMessageConverters(), this.contentNegotiationManager, this.responseBodyInterceptors));
641+
getMessageConverters(), this.contentNegotiationManager, this.responseBodyAdvice));
642642
handlers.add(new HttpHeadersReturnValueHandler());
643643
handlers.add(new CallableMethodReturnValueHandler());
644644
handlers.add(new DeferredResultMethodReturnValueHandler());
@@ -648,7 +648,7 @@ private List<HandlerMethodReturnValueHandler> getDefaultReturnValueHandlers() {
648648
// Annotation-based return value types
649649
handlers.add(new ModelAttributeMethodProcessor(false));
650650
handlers.add(new RequestResponseBodyMethodProcessor(
651-
getMessageConverters(), this.contentNegotiationManager, this.responseBodyInterceptors));
651+
getMessageConverters(), this.contentNegotiationManager, this.responseBodyAdvice));
652652

653653
// Multi-purpose return value types
654654
handlers.add(new ViewNameMethodReturnValueHandler());

spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestResponseBodyMethodProcessor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ public RequestResponseBodyMethodProcessor(List<HttpMessageConverter<?>> messageC
7373
}
7474

7575
public RequestResponseBodyMethodProcessor(List<HttpMessageConverter<?>> messageConverters,
76-
ContentNegotiationManager contentNegotiationManager, List<Object> responseBodyInterceptors) {
77-
super(messageConverters, contentNegotiationManager, responseBodyInterceptors);
76+
ContentNegotiationManager contentNegotiationManager, List<Object> responseBodyAdvice) {
77+
super(messageConverters, contentNegotiationManager, responseBodyAdvice);
7878
}
7979

8080

0 commit comments

Comments
 (0)