Merge branch '6.0.x'

This commit is contained in:
Juergen Hoeller
2023-06-29 18:04:40 +02:00
3 changed files with 27 additions and 12 deletions

View File

@@ -220,6 +220,16 @@ public abstract class AbstractResource implements Resource {
return null;
}
/**
* Lazily access the logger for debug logging in case of an exception.
*/
private void debug(Supplier<String> message, Throwable ex) {
Log logger = LogFactory.getLog(getClass());
if (logger.isDebugEnabled()) {
logger.debug(message.get(), ex);
}
}
/**
* This implementation compares description strings.
@@ -249,11 +259,4 @@ public abstract class AbstractResource implements Resource {
return getDescription();
}
private void debug(Supplier<String> message, Throwable ex) {
Log logger = LogFactory.getLog(getClass());
if (logger.isDebugEnabled()) {
logger.debug(message.get(), ex);
}
}
}

View File

@@ -70,19 +70,19 @@ class PathResourceTests {
@Test
void nullPath() {
assertThatIllegalArgumentException().isThrownBy(() -> new PathResource((Path) null))
.withMessageContaining("Path must not be null");
.withMessageContaining("Path must not be null");
}
@Test
void nullPathString() {
assertThatIllegalArgumentException().isThrownBy(() -> new PathResource((String) null))
.withMessageContaining("Path must not be null");
.withMessageContaining("Path must not be null");
}
@Test
void nullUri() {
assertThatIllegalArgumentException().isThrownBy(() -> new PathResource((URI) null))
.withMessageContaining("URI must not be null");
.withMessageContaining("URI must not be null");
}
@Test
@@ -258,6 +258,17 @@ class PathResourceTests {
assertThat(resource.isWritable()).isFalse();
}
@Test
void equalsAndHashCode() {
Resource mr1 = new PathResource(TEST_FILE);
Resource mr2 = new PathResource(TEST_FILE);
Resource mr3 = new PathResource(TEST_DIR);
assertThat(mr1).isEqualTo(mr2);
assertThat(mr1).isNotEqualTo(mr3);
assertThat(mr1).hasSameHashCodeAs(mr2);
assertThat(mr1).doesNotHaveSameHashCodeAs(mr3);
}
@Test
void outputStream(@TempDir Path temporaryFolder) throws IOException {
PathResource resource = new PathResource(temporaryFolder.resolve("test"));

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2022 the original author or authors.
* Copyright 2002-2023 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -57,7 +57,7 @@ public class ServletContextResource extends AbstractFileResolvingResource implem
/**
* Create a new ServletContextResource.
* Create a new {@code ServletContextResource} for the given path.
* <p>The Servlet spec requires that resource paths start with a slash,
* even if many containers accept paths without leading slash too.
* Consequently, the given path will be prepended with a slash if it
@@ -94,6 +94,7 @@ public class ServletContextResource extends AbstractFileResolvingResource implem
return this.path;
}
/**
* This implementation checks {@code ServletContext.getResource}.
* @see jakarta.servlet.ServletContext#getResource(String)