Merge branch '2.0.x'

This commit is contained in:
Andy Wilkinson 2018-09-19 19:52:19 +01:00
commit 65295e0e14
2 changed files with 67 additions and 1 deletions

View File

@ -130,7 +130,7 @@ final class ClassLoaderFilesResourcePatternResolver implements ResourcePatternRe
for (Entry<String, ClassLoaderFile> entry : sourceFolder.getFilesEntrySet()) {
String name = entry.getKey();
ClassLoaderFile file = entry.getValue();
if (file.getKind() == Kind.ADDED
if (entry.getValue().getKind() != Kind.DELETED
&& this.antPathMatcher.match(trimmedLocationPattern, name)) {
URL url = new URL("reloaded", null, -1, "/" + name,
new ClassLoaderFileURLStreamHandler(file));

View File

@ -125,6 +125,53 @@ public class DevToolsIntegrationTests {
}
@Test
public void createAControllerAndThenAddARequestMapping() throws Exception {
TestRestTemplate template = new TestRestTemplate();
String urlBase = "http://localhost:" + awaitServerPort();
assertThat(template.getForObject(urlBase + "/one", String.class))
.isEqualTo("one");
assertThat(template.getForEntity(urlBase + "/two", String.class).getStatusCode())
.isEqualTo(HttpStatus.NOT_FOUND);
controller("com.example.ControllerTwo").withRequestMapping("two").build();
assertThat(template.getForObject(urlBase + "/one", String.class))
.isEqualTo("one");
assertThat(template.getForObject("http://localhost:" + awaitServerPort() + "/two",
String.class)).isEqualTo("two");
controller("com.example.ControllerTwo").withRequestMapping("two")
.withRequestMapping("three").build();
assertThat(template.getForObject(
"http://localhost:" + awaitServerPort() + "/three", String.class))
.isEqualTo("three");
}
@Test
public void createAControllerAndThenAddARequestMappingToAnExistingController()
throws Exception {
TestRestTemplate template = new TestRestTemplate();
String urlBase = "http://localhost:" + awaitServerPort();
assertThat(template.getForObject(urlBase + "/one", String.class))
.isEqualTo("one");
assertThat(template.getForEntity(urlBase + "/two", String.class).getStatusCode())
.isEqualTo(HttpStatus.NOT_FOUND);
controller("com.example.ControllerTwo").withRequestMapping("two").build();
assertThat(template.getForObject(urlBase + "/one", String.class))
.isEqualTo("one");
assertThat(template.getForObject("http://localhost:" + awaitServerPort() + "/two",
String.class)).isEqualTo("two");
controller("com.example.ControllerOne").withRequestMapping("one")
.withRequestMapping("three").build();
int port = awaitServerPort();
assertThat(
template.getForObject("http://localhost:" + port + "/one", String.class))
.isEqualTo("one");
assertThat(
template.getForObject("http://localhost:" + port + "/two", String.class))
.isEqualTo("two");
assertThat(template.getForObject("http://localhost:" + port + "/three",
String.class)).isEqualTo("three");
}
@Test
public void deleteAController() throws Exception {
TestRestTemplate template = new TestRestTemplate();
@ -137,6 +184,25 @@ public class DevToolsIntegrationTests {
}
@Test
public void createAControllerAndThenDeleteIt() throws Exception {
TestRestTemplate template = new TestRestTemplate();
String urlBase = "http://localhost:" + awaitServerPort();
assertThat(template.getForObject(urlBase + "/one", String.class))
.isEqualTo("one");
assertThat(template.getForEntity(urlBase + "/two", String.class).getStatusCode())
.isEqualTo(HttpStatus.NOT_FOUND);
controller("com.example.ControllerTwo").withRequestMapping("two").build();
assertThat(template.getForObject(urlBase + "/one", String.class))
.isEqualTo("one");
assertThat(template.getForObject("http://localhost:" + awaitServerPort() + "/two",
String.class)).isEqualTo("two");
assertThat(new File(this.launchedApplication.getClassesDirectory(),
"com/example/ControllerTwo.class").delete()).isTrue();
assertThat(template.getForEntity("http://localhost:" + awaitServerPort() + "/two",
String.class).getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
}
private int awaitServerPort() throws Exception {
long end = System.currentTimeMillis() + 30000;
while (this.serverPortFile.length() == 0) {