Rename registerResourceIfNecessary to registerResource

This commit renames registerResourceIfNecessary() to registerResource()
and throws an exception if the class path resource does not exist.

Closes gh-29083
This commit is contained in:
Sam Brannen
2022-09-10 19:49:56 +02:00
parent d883c8fbb3
commit 6d83a959fb
5 changed files with 25 additions and 18 deletions

View File

@@ -27,6 +27,7 @@ import java.util.stream.Stream;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
/**
* Gather the need for resources available at runtime.
@@ -113,15 +114,18 @@ public class ResourceHints {
}
/**
* Determine if the supplied resource is a {@link ClassPathResource} that
* {@linkplain Resource#exists() exists} and register the resource for run-time
* availability accordingly.
* Register that the supplied resource should be made available at runtime.
* <p>If the supplied resource is not a {@link ClassPathResource}, it will
* not be registered.
* @param resource the resource to register
* @throws IllegalArgumentException if the supplied class path resource does
* not {@linkplain Resource#exists() exist}
* @see #registerPattern(String)
* @see ClassPathResource#getAbsolutePath()
*/
public void registerResourceIfNecessary(Resource resource) {
if (resource instanceof ClassPathResource classPathResource && classPathResource.exists()) {
public void registerResource(Resource resource) {
if (resource instanceof ClassPathResource classPathResource) {
Assert.isTrue(classPathResource.exists(), () -> "Resource does not exist: " + classPathResource);
registerPattern(classPathResource.getAbsolutePath());
}
}

View File

@@ -28,6 +28,7 @@ import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.DescriptiveResource;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verifyNoInteractions;
@@ -114,32 +115,33 @@ class ResourceHintsTests {
}
@Test
void registerResourceIfNecessaryWithUnsupportedResourceType() {
void registerResourceWithUnsupportedResourceType() {
DescriptiveResource resource = new DescriptiveResource("bogus");
this.resourceHints.registerResourceIfNecessary(resource);
this.resourceHints.registerResource(resource);
assertThat(this.resourceHints.resourcePatterns()).isEmpty();
}
@Test
void registerResourceIfNecessaryWithNonexistentClassPathResource() {
void registerResourceWithNonexistentClassPathResource() {
ClassPathResource resource = new ClassPathResource("bogus", getClass());
this.resourceHints.registerResourceIfNecessary(resource);
assertThat(this.resourceHints.resourcePatterns()).isEmpty();
assertThatIllegalArgumentException()
.isThrownBy(() -> this.resourceHints.registerResource(resource))
.withMessage("Resource does not exist: %s", resource);
}
@Test
void registerResourceIfNecessaryWithExistingClassPathResource() {
void registerResourceWithExistingClassPathResource() {
String path = "org/springframework/aot/hint/support";
ClassPathResource resource = new ClassPathResource(path);
this.resourceHints.registerResourceIfNecessary(resource);
this.resourceHints.registerResource(resource);
assertThat(this.resourceHints.resourcePatterns()).singleElement().satisfies(patternOf(path));
}
@Test
void registerResourceIfNecessaryWithExistingRelativeClassPathResource() {
void registerResourceWithExistingRelativeClassPathResource() {
String path = "org/springframework/aot/hint/support";
ClassPathResource resource = new ClassPathResource("support", RuntimeHints.class);
this.resourceHints.registerResourceIfNecessary(resource);
this.resourceHints.registerResource(resource);
assertThat(this.resourceHints.resourcePatterns()).singleElement().satisfies(patternOf(path));
}