Skip to content

Commit c2e5fd0

Browse files
committed
Replace usage of WebMvcConfigurerAdapter
Closes gh-8964
1 parent ec57c3d commit c2e5fd0

File tree

19 files changed

+45
-46
lines changed

19 files changed

+45
-46
lines changed

spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/mvc/AbstractMvcEndpoint.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import org.springframework.context.EnvironmentAware;
2222
import org.springframework.core.env.Environment;
2323
import org.springframework.util.Assert;
24-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
24+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
2525

2626
/**
2727
* Abstract base class for {@link MvcEndpoint} implementations without a backing
@@ -31,8 +31,8 @@
3131
* @author Lari Hotari
3232
* @since 1.4.0
3333
*/
34-
public abstract class AbstractMvcEndpoint extends WebMvcConfigurerAdapter
35-
implements MvcEndpoint, EnvironmentAware {
34+
public abstract class AbstractMvcEndpoint
35+
implements MvcEndpoint, WebMvcConfigurer, EnvironmentAware {
3636

3737
private Environment environment;
3838

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jDataAutoConfiguration.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
import org.springframework.data.neo4j.web.support.OpenSessionInViewInterceptor;
4040
import org.springframework.transaction.PlatformTransactionManager;
4141
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
42-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
42+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
4343

4444
/**
4545
* {@link EnableAutoConfiguration Auto-configuration} for Spring Data Neo4j.
@@ -108,14 +108,14 @@ private String[] getPackagesToScan(ApplicationContext applicationContext) {
108108

109109
@Configuration
110110
@ConditionalOnWebApplication(type = Type.SERVLET)
111-
@ConditionalOnClass({ WebMvcConfigurerAdapter.class,
111+
@ConditionalOnClass({ WebMvcConfigurer.class,
112112
OpenSessionInViewInterceptor.class })
113113
@ConditionalOnMissingBean(OpenSessionInViewInterceptor.class)
114114
@ConditionalOnProperty(prefix = "spring.data.neo4j", name = "open-in-view", havingValue = "true", matchIfMissing = true)
115115
protected static class Neo4jWebConfiguration {
116116

117117
@Configuration
118-
protected static class Neo4jWebMvcConfiguration extends WebMvcConfigurerAdapter {
118+
protected static class Neo4jWebMvcConfiguration implements WebMvcConfigurer {
119119

120120
@Bean
121121
public OpenSessionInViewInterceptor neo4jOpenSessionInViewInterceptor() {

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import org.springframework.context.annotation.Configuration;
2727
import org.springframework.data.web.PageableHandlerMethodArgumentResolver;
2828
import org.springframework.data.web.config.EnableSpringDataWebSupport;
29-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
29+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
3030

3131
/**
3232
* {@link EnableAutoConfiguration Auto-configuration} for Spring Data's web support.
@@ -41,7 +41,7 @@
4141
@EnableSpringDataWebSupport
4242
@ConditionalOnWebApplication(type = Type.SERVLET)
4343
@ConditionalOnClass({ PageableHandlerMethodArgumentResolver.class,
44-
WebMvcConfigurerAdapter.class })
44+
WebMvcConfigurer.class })
4545
@ConditionalOnMissingBean(PageableHandlerMethodArgumentResolver.class)
4646
@AutoConfigureAfter(RepositoryRestMvcAutoConfiguration.class)
4747
public class SpringDataWebAutoConfiguration {

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mobile/DeviceResolverAutoConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import org.springframework.mobile.device.DeviceResolverHandlerInterceptor;
3434
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
3535
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
36-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
36+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
3737

3838
/**
3939
* {@link EnableAutoConfiguration Auto-configuration} for Spring Mobile's
@@ -62,7 +62,7 @@ public DeviceHandlerMethodArgumentResolver deviceHandlerMethodArgumentResolver()
6262
@Configuration
6363
@Order(0)
6464
protected static class DeviceResolverMvcConfiguration
65-
extends WebMvcConfigurerAdapter {
65+
implements WebMvcConfigurer {
6666

6767
private DeviceResolverHandlerInterceptor deviceResolverHandlerInterceptor;
6868

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mobile/SitePreferenceAutoConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import org.springframework.mobile.device.site.SitePreferenceHandlerMethodArgumentResolver;
3434
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
3535
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
36-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
36+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
3737

3838
/**
3939
* {@link EnableAutoConfiguration Auto-configuration} for Spring Mobile's
@@ -64,7 +64,7 @@ public SitePreferenceHandlerMethodArgumentResolver sitePreferenceHandlerMethodAr
6464

6565
@Configuration
6666
protected static class SitePreferenceMvcConfiguration
67-
extends WebMvcConfigurerAdapter {
67+
implements WebMvcConfigurer {
6868

6969
private final SitePreferenceHandlerInterceptor sitePreferenceHandlerInterceptor;
7070

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/JpaBaseConfiguration.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
import org.springframework.transaction.PlatformTransactionManager;
5353
import org.springframework.transaction.jta.JtaTransactionManager;
5454
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
55-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
55+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
5656

5757
/**
5858
* Base {@link EnableAutoConfiguration Auto-configuration} for JPA.
@@ -197,7 +197,7 @@ public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
197197

198198
@Configuration
199199
@ConditionalOnWebApplication(type = Type.SERVLET)
200-
@ConditionalOnClass(WebMvcConfigurerAdapter.class)
200+
@ConditionalOnClass(WebMvcConfigurer.class)
201201
@ConditionalOnMissingBean({ OpenEntityManagerInViewInterceptor.class,
202202
OpenEntityManagerInViewFilter.class })
203203
@ConditionalOnProperty(prefix = "spring.jpa", name = "open-in-view", havingValue = "true", matchIfMissing = true)
@@ -206,7 +206,7 @@ protected static class JpaWebConfiguration {
206206
// Defined as a nested config to ensure WebMvcConfigurerAdapter is not read when
207207
// not on the classpath
208208
@Configuration
209-
protected static class JpaWebMvcConfiguration extends WebMvcConfigurerAdapter {
209+
protected static class JpaWebMvcConfiguration implements WebMvcConfigurer {
210210

211211
@Bean
212212
public OpenEntityManagerInViewInterceptor openEntityManagerInViewInterceptor() {

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/OAuth2AutoConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import org.springframework.context.annotation.Configuration;
3131
import org.springframework.context.annotation.Import;
3232
import org.springframework.security.oauth2.common.OAuth2AccessToken;
33-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
33+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
3434

3535
/**
3636
* {@link EnableAutoConfiguration Auto-configuration} for Spring Security OAuth2.
@@ -40,7 +40,7 @@
4040
* @since 1.3.0
4141
*/
4242
@Configuration
43-
@ConditionalOnClass({ OAuth2AccessToken.class, WebMvcConfigurerAdapter.class })
43+
@ConditionalOnClass({ OAuth2AccessToken.class, WebMvcConfigurer.class })
4444
@Import({ OAuth2AuthorizationServerConfiguration.class,
4545
OAuth2MethodSecurityConfiguration.class, OAuth2ResourceServerConfiguration.class,
4646
OAuth2RestOperationsConfiguration.class })

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@
114114
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistration;
115115
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
116116
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
117-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
117+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
118118
import org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver;
119119
import org.springframework.web.servlet.handler.AbstractUrlHandlerMapping;
120120
import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping;
@@ -146,7 +146,7 @@
146146
@Configuration
147147
@ConditionalOnWebApplication(type = Type.SERVLET)
148148
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class,
149-
WebMvcConfigurerAdapter.class })
149+
WebMvcConfigurer.class })
150150
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
151151
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
152152
@AutoConfigureAfter({ DispatcherServletAutoConfiguration.class,
@@ -170,15 +170,15 @@ public OrderedHttpPutFormContentFilter httpPutFormContentFilter() {
170170
return new OrderedHttpPutFormContentFilter();
171171
}
172172

173-
// Defined as a nested config to ensure WebMvcConfigurerAdapter is not read when not
173+
// Defined as a nested config to ensure WebMvcConfigurer is not read when not
174174
// on the classpath
175175
@Configuration
176176
@Import({ EnableWebMvcConfiguration.class, MvcValidatorRegistrar.class })
177177
@EnableConfigurationProperties({ WebMvcProperties.class, ResourceProperties.class })
178-
public static class WebMvcAutoConfigurationAdapter extends WebMvcConfigurerAdapter {
178+
public static class WebMvcAutoConfigurationAdapter implements WebMvcConfigurer {
179179

180180
private static final Log logger = LogFactory
181-
.getLog(WebMvcConfigurerAdapter.class);
181+
.getLog(WebMvcConfigurer.class);
182182

183183
private final ResourceProperties resourceProperties;
184184

spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfigurationTests.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
import org.springframework.web.servlet.View;
7979
import org.springframework.web.servlet.ViewResolver;
8080
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
81-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
81+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
8282
import org.springframework.web.servlet.handler.HandlerExceptionResolverComposite;
8383
import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping;
8484
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;
@@ -834,7 +834,7 @@ protected void renderMergedOutputModel(Map<String, Object> model,
834834
}
835835

836836
@Configuration
837-
protected static class WebJars extends WebMvcConfigurerAdapter {
837+
protected static class WebJars implements WebMvcConfigurer {
838838

839839
@Override
840840
public void addResourceHandlers(ResourceHandlerRegistry registry) {
@@ -845,7 +845,7 @@ public void addResourceHandlers(ResourceHandlerRegistry registry) {
845845
}
846846

847847
@Configuration
848-
protected static class AllResources extends WebMvcConfigurerAdapter {
848+
protected static class AllResources implements WebMvcConfigurer {
849849

850850
@Override
851851
public void addResourceHandlers(ResourceHandlerRegistry registry) {
@@ -976,7 +976,7 @@ static class MultipleWebMvcRegistrations {
976976
}
977977

978978
@Configuration
979-
protected static class ValidatorWebMvcConfigurer extends WebMvcConfigurerAdapter {
979+
protected static class ValidatorWebMvcConfigurer implements WebMvcConfigurer {
980980

981981
@Override
982982
public Validator getValidator() {

spring-boot-samples/spring-boot-sample-atmosphere/src/main/java/sample/atmosphere/SampleAtmosphereApplication.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import org.springframework.context.annotation.Configuration;
3434
import org.springframework.core.Ordered;
3535
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
36-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
36+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
3737

3838
@SpringBootConfiguration
3939
@EnableAutoConfiguration
@@ -60,7 +60,7 @@ public ServletRegistrationBean<AtmosphereServlet> atmosphereServlet() {
6060
}
6161

6262
@Configuration
63-
static class MvcConfiguration extends WebMvcConfigurerAdapter {
63+
static class MvcConfiguration implements WebMvcConfigurer {
6464

6565
@Override
6666
public void addViewControllers(ViewControllerRegistry registry) {

spring-boot-samples/spring-boot-sample-traditional/src/main/java/sample/traditional/config/WebConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@
2323
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
2424
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
2525
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
26-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
26+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
2727
import org.springframework.web.servlet.view.InternalResourceViewResolver;
2828

2929
@EnableWebMvc
3030
@ComponentScan
3131
@Configuration
32-
public class WebConfig extends WebMvcConfigurerAdapter {
32+
public class WebConfig implements WebMvcConfigurer {
3333

3434
@Override
3535
public void addViewControllers(ViewControllerRegistry registry) {

spring-boot-samples/spring-boot-sample-web-method-security/src/main/java/sample/security/method/SampleMethodSecurityApplication.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@
3535
import org.springframework.stereotype.Controller;
3636
import org.springframework.web.bind.annotation.GetMapping;
3737
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
38-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
38+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
3939

4040
@SpringBootApplication
4141
@EnableGlobalMethodSecurity(securedEnabled = true)
42-
public class SampleMethodSecurityApplication extends WebMvcConfigurerAdapter {
42+
public class SampleMethodSecurityApplication implements WebMvcConfigurer {
4343

4444
@Controller
4545
protected static class HomeController {

spring-boot-samples/spring-boot-sample-web-secure-custom/src/main/java/sample/web/secure/custom/SampleWebSecureCustomApplication.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@
3131
import org.springframework.web.bind.annotation.GetMapping;
3232
import org.springframework.web.bind.annotation.RequestMapping;
3333
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
34-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
34+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
3535

3636
@SpringBootApplication
3737
@Controller
38-
public class SampleWebSecureCustomApplication extends WebMvcConfigurerAdapter {
38+
public class SampleWebSecureCustomApplication implements WebMvcConfigurer {
3939

4040
@GetMapping("/")
4141
public String home(Map<String, Object> model) {

spring-boot-samples/spring-boot-sample-web-secure-github/src/main/java/sample/web/secure/github/SampleGithubSecureApplication.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@
1919
import org.springframework.boot.SpringApplication;
2020
import org.springframework.boot.autoconfigure.SpringBootApplication;
2121
import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
22-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
22+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
2323

2424
@SpringBootApplication
2525
@EnableOAuth2Sso
26-
public class SampleGithubSecureApplication extends WebMvcConfigurerAdapter {
26+
public class SampleGithubSecureApplication implements WebMvcConfigurer {
2727

2828
public static void main(String[] args) throws Exception {
2929
SpringApplication.run(SampleGithubSecureApplication.class, args);

spring-boot-samples/spring-boot-sample-web-secure-jdbc/src/main/java/sample/web/secure/jdbc/SampleWebSecureJdbcApplication.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@
3434
import org.springframework.web.bind.annotation.GetMapping;
3535
import org.springframework.web.bind.annotation.RequestMapping;
3636
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
37-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
37+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
3838

3939
@SpringBootApplication
4040
@Controller
41-
public class SampleWebSecureJdbcApplication extends WebMvcConfigurerAdapter {
41+
public class SampleWebSecureJdbcApplication implements WebMvcConfigurer {
4242

4343
@GetMapping("/")
4444
public String home(Map<String, Object> model) {

spring-boot-samples/spring-boot-sample-web-secure/src/main/java/sample/web/secure/SampleWebSecureApplication.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@
3131
import org.springframework.web.bind.annotation.GetMapping;
3232
import org.springframework.web.bind.annotation.RequestMapping;
3333
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
34-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
34+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
3535

3636
@SpringBootApplication
3737
@Controller
38-
public class SampleWebSecureApplication extends WebMvcConfigurerAdapter {
38+
public class SampleWebSecureApplication implements WebMvcConfigurer {
3939

4040
@GetMapping("/")
4141
public String home(Map<String, Object> model) {

spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/servlet/WebMvcTypeExcludeFilterTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import org.springframework.stereotype.Repository;
3131
import org.springframework.stereotype.Service;
3232
import org.springframework.web.bind.annotation.ControllerAdvice;
33-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
33+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
3434

3535
import static org.assertj.core.api.Assertions.assertThat;
3636

@@ -155,7 +155,7 @@ static class ExampleControllerAdvice {
155155

156156
}
157157

158-
static class ExampleWeb extends WebMvcConfigurerAdapter {
158+
static class ExampleWeb implements WebMvcConfigurer {
159159

160160
}
161161

spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/servlet/mockmvc/ExampleWebMvcConfigurer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,14 @@
2626
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
2727
import org.springframework.web.method.support.ModelAndViewContainer;
2828
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
29-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
3029

3130
/**
3231
* Example {@link WebMvcConfigurer} used in {@link WebMvcTest} tests.
3332
*
3433
* @author Phillip Webb
3534
*/
3635
@Component
37-
public class ExampleWebMvcConfigurer extends WebMvcConfigurerAdapter {
36+
public class ExampleWebMvcConfigurer implements WebMvcConfigurer {
3837

3938
@Override
4039
public void addArgumentResolvers(

spring-boot/src/test/java/org/springframework/boot/web/servlet/support/ErrorPageFilterIntegrationTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
import org.springframework.web.servlet.ModelAndView;
5353
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
5454
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
55-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
55+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
5656
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
5757

5858
import static org.assertj.core.api.Assertions.assertThat;
@@ -128,7 +128,7 @@ public HelloWorldController helloWorldController() {
128128
}
129129

130130
@Controller
131-
public static class HelloWorldController extends WebMvcConfigurerAdapter {
131+
public static class HelloWorldController implements WebMvcConfigurer {
132132

133133
private int status;
134134

0 commit comments

Comments
 (0)