Commit 399455f6 authored by Andy Wilkinson's avatar Andy Wilkinson

Merge pull request #12715 from Wenwei Liao

* gh-12715:
  Polish "Use modifiable set for @ServletComponentScan with no packages"
  Use modifiable set for @ServletComponentScan with no packages
parents 2fd177f9 6078fdae
/* /*
* Copyright 2012-2016 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
package org.springframework.boot.web.servlet; package org.springframework.boot.web.servlet;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.Set; import java.util.Set;
...@@ -84,8 +83,7 @@ class ServletComponentScanRegistrar implements ImportBeanDefinitionRegistrar { ...@@ -84,8 +83,7 @@ class ServletComponentScanRegistrar implements ImportBeanDefinitionRegistrar {
packagesToScan.add(ClassUtils.getPackageName(basePackageClass)); packagesToScan.add(ClassUtils.getPackageName(basePackageClass));
} }
if (packagesToScan.isEmpty()) { if (packagesToScan.isEmpty()) {
return Collections packagesToScan.add(ClassUtils.getPackageName(metadata.getClassName()));
.singleton(ClassUtils.getPackageName(metadata.getClassName()));
} }
return packagesToScan; return packagesToScan;
} }
......
/* /*
* Copyright 2012-2016 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -107,6 +107,37 @@ public class ServletComponentScanRegistrarTests { ...@@ -107,6 +107,37 @@ public class ServletComponentScanRegistrarTests {
"com.example.bar", "com.example.baz"); "com.example.bar", "com.example.baz");
} }
@Test
public void withNoBasePackagesScanningUsesBasePackageOfAnnotatedClass() {
this.context = new AnnotationConfigApplicationContext(NoBasePackages.class);
ServletComponentRegisteringPostProcessor postProcessor = this.context
.getBean(ServletComponentRegisteringPostProcessor.class);
assertThat(postProcessor.getPackagesToScan())
.containsExactly("org.springframework.boot.web.servlet");
}
@Test
public void noBasePackageAndBasePackageAreCombinedCorrectly() {
this.context = new AnnotationConfigApplicationContext(NoBasePackages.class,
BasePackages.class);
ServletComponentRegisteringPostProcessor postProcessor = this.context
.getBean(ServletComponentRegisteringPostProcessor.class);
assertThat(postProcessor.getPackagesToScan()).containsExactlyInAnyOrder(
"org.springframework.boot.web.servlet", "com.example.foo",
"com.example.bar");
}
@Test
public void basePackageAndNoBasePackageAreCombinedCorrectly() {
this.context = new AnnotationConfigApplicationContext(BasePackages.class,
NoBasePackages.class);
ServletComponentRegisteringPostProcessor postProcessor = this.context
.getBean(ServletComponentRegisteringPostProcessor.class);
assertThat(postProcessor.getPackagesToScan()).containsExactlyInAnyOrder(
"org.springframework.boot.web.servlet", "com.example.foo",
"com.example.bar");
}
@Configuration @Configuration
@ServletComponentScan({ "com.example.foo", "com.example.bar" }) @ServletComponentScan({ "com.example.foo", "com.example.bar" })
static class ValuePackages { static class ValuePackages {
...@@ -137,4 +168,10 @@ public class ServletComponentScanRegistrarTests { ...@@ -137,4 +168,10 @@ public class ServletComponentScanRegistrarTests {
} }
@Configuration
@ServletComponentScan
static class NoBasePackages {
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment