You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2022/08/08 13:14:30 UTC

[juneau] branch jbFixRestNpe updated: Remove @Rest(fileFinder).

This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch jbFixRestNpe
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/jbFixRestNpe by this push:
     new 6243e45de Remove @Rest(fileFinder).
6243e45de is described below

commit 6243e45de07dd3ba40b0084bab1ce47548e9ef2b
Author: JamesBognar <ja...@salesforce.com>
AuthorDate: Mon Aug 8 09:13:37 2022 -0400

    Remove @Rest(fileFinder).
---
 .../apache/juneau/dto/swagger/ui/SwaggerUI.java    |   6 +-
 .../java/org/apache/juneau/cp/BasicFileFinder.java |  10 --
 .../main/java/org/apache/juneau/cp/FileFinder.java |  18 ---
 .../java/org/apache/juneau/rest/RestContext.java   | 125 +--------------------
 .../java/org/apache/juneau/rest/RestRequest.java   |  13 ---
 .../org/apache/juneau/rest/annotation/Rest.java    |  21 ----
 .../juneau/rest/annotation/RestAnnotation.java     |  20 ----
 .../apache/juneau/rest/arg/RestContextArgs.java    |   2 -
 .../apache/juneau/rest/config/DefaultConfig.java   |   1 -
 .../juneau/rest/staticfile/BasicStaticFiles.java   |  12 +-
 .../java/org/apache/juneau/rest/vars/FileVar.java  |   4 +-
 .../java/org/apache/juneau/rest/widget/Widget.java |   8 +-
 .../java/org/apache/juneau/cp/FileFinder_Test.java |   2 +-
 .../java/org/apache/juneau/rest/Swagger_Test.java  |  11 +-
 .../rest/annotation/RestAnnotation_Test.java       |   5 -
 15 files changed, 18 insertions(+), 240 deletions(-)

diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java
index bc5cc52b3..420edb9c6 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java
@@ -69,13 +69,13 @@ public class SwaggerUI extends ObjectSwap<Swagger,Div> {
 
 		Session s = new Session(beanSession, swagger);
 
-		String css = RESOURCES.getString("files/htdocs/styles/SwaggerUI.css").orElse(null);
+		String css = RESOURCES.getString("files/htdocs/styles/SwaggerUI.css", null).orElse(null);
 		if (css == null)
-			css = RESOURCES.getString("SwaggerUI.css").orElse(null);
+			css = RESOURCES.getString("SwaggerUI.css", null).orElse(null);
 
 		Div outer = div(
 			style(css),
-			script("text/javascript", new String[]{RESOURCES.getString("SwaggerUI.js").orElse(null)}),
+			script("text/javascript", new String[]{RESOURCES.getString("SwaggerUI.js", null).orElse(null)}),
 			header(s)
 		)._class("swagger-ui");
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
index 4f0e79e3e..dd761bf9c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
@@ -102,16 +102,6 @@ public class BasicFileFinder implements FileFinder {
 		return find(name, locale);
 	}
 
-	@Override /* FileFinder */
-	public final Optional<InputStream> getStream(String name) throws IOException {
-		return find(name, null);
-	}
-
-	@Override /* FileFinder */
-	public final Optional<String> getString(String name) throws IOException {
-		return optional(read(find(name, null).orElse(null)));
-	}
-
 	@Override /* FileFinder */
 	public Optional<String> getString(String name, Locale locale) throws IOException {
 		return optional(read(find(name, locale).orElse(null)));
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/FileFinder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/FileFinder.java
index 5507c7741..c14a2859a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/FileFinder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/FileFinder.java
@@ -265,24 +265,6 @@ public interface FileFinder {
 	 */
 	public Optional<InputStream> getStream(String name, Locale locale) throws IOException;
 
-	/**
-	 * Returns the file with the specified name.
-	 *
-	 * @param name The file name.
-	 * @return An input stream to the file if it exists, or <jk>null</jk> if it does not.
-	 * @throws IOException If file could not be read.
-	 */
-	public Optional<InputStream> getStream(String name) throws IOException;
-
-	/**
-	 * Returns the file with the specified name as a string.
-	 *
-	 * @param name The file name.
-	 * @return The contents of the file as a string.  Assumes UTF-8 encoding.
-	 * @throws IOException If file could not be read.
-	 */
-	public Optional<String> getString(String name) throws IOException;
-
 	/**
 	 * Returns the file with the specified name as a string.
 	 *
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 3c4a9294e..f2c0ff357 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -61,7 +61,6 @@ import org.apache.juneau.reflect.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.arg.*;
 import org.apache.juneau.rest.debug.*;
-import org.apache.juneau.rest.filefinder.*;
 import org.apache.juneau.rest.httppart.*;
 import org.apache.juneau.rest.logger.*;
 import org.apache.juneau.rest.processor.*;
@@ -255,7 +254,6 @@ public class RestContext extends Context {
 		private HttpPartSerializer.Creator partSerializer;
 		private HttpPartParser.Creator partParser;
 		private JsonSchemaGenerator.Builder jsonSchemaGenerator;
-		private BeanCreator<FileFinder> fileFinder;
 		private BeanCreator<StaticFiles> staticFiles;
 		private HeaderList.Builder defaultRequestHeaders, defaultResponseHeaders;
 		private NamedAttributeList.Builder defaultRequestAttributes;
@@ -2737,114 +2735,6 @@ public class RestContext extends Context {
 			return v.get();
 		}
 
-		//-----------------------------------------------------------------------------------------------------------------
-		// fileFinder
-		//-----------------------------------------------------------------------------------------------------------------
-
-		/**
-		 * Returns the file finder bean creator.
-		 *
-		 * <p>
-		 * The file finder is used to retrieve localized files from the classpath.
-		 *
-		 * <p>
-		 * Used to retrieve localized files from the classpath for a variety of purposes including:
-		 * <ul>
-		 * 	<li>Resolution of {@link FileVar $F} variable contents.
-		 * </ul>
-		 *
-		 * <p>
-		 * The file finder can be accessed through the following methods:
-		 * <ul class='javatree'>
-		 * 	<li class='jm'>{@link RestContext#getFileFinder()}
-		 * 	<li class='jm'>{@link RestRequest#getFileFinder()}
-		 * </ul>
-		 *
-		 * <p>
-		 * The default file finder is an instance of {@link BasicRestFileFinder}.
-		 * It can overridden via any of the following:
-		 * <ul class='spaced-list'>
-		 * 	<li>Injected via bean store.
-		 * 	<li>{@link RestBean @RestBean}-annotated method:
-		 * 		<p class='bjava'>
-		 * 	<ja>@RestBean</ja> <jk>public</jk> [<jk>static</jk>] FileFinder myMethod(<i>&lt;args&gt;</i>) {...}
-		 * 		</p>
-		 * 		Args can be any injected bean.
-		 * </ul>
-		 *
-		 * @return The file finder bean creator.
-		 */
-		public BeanCreator<FileFinder> fileFinder() {
-			if (fileFinder == null)
-				fileFinder = createFileFinder(beanStore, resource);
-			return fileFinder;
-		}
-
-		/**
-		 * Specifies the file finder for this class.
-		 *
-		 * <p>
-		 * Equivalent to calling:
-		 * <p class='bjava'>
-		 * 	<jv>builder</jv>.fileFinder().type(<jv>value</jv>);
-		 * </p>
-		 *
-		 * @param value The new value.
-		 * @return This object.
-		 */
-		public Builder fileFinder(Class<? extends FileFinder> value) {
-			fileFinder().type(value);
-			return this;
-		}
-
-		/**
-		 * Specifies the file finder for this class.
-		 *
-		 * <p>
-		 * Equivalent to calling:
-		 * <p class='bjava'>
-		 * 	<jv>builder</jv>.fileFinder().impl(<jv>value</jv>);
-		 * </p>
-		 *
-		 * @param value The new value.
-		 * @return This object.
-		 */
-		public Builder fileFinder(FileFinder value) {
-			fileFinder().impl(value);
-			return this;
-		}
-
-		/**
-		 * Instantiates the file finder bean creator.
-		 *
-		 * @param beanStore
-		 * 	The factory used for creating beans and retrieving injected beans.
-		 * @param resource
-		 * 	The REST servlet/bean instance that this context is defined against.
-		 * @return A new file finder bean creator.
-		 */
-		protected BeanCreator<FileFinder> createFileFinder(BeanStore beanStore, Supplier<?> resource) {
-
-			BeanCreator<FileFinder> creator = beanStore.createBean(FileFinder.class).type(BasicRestFileFinder.class);
-
-			// Specify the bean type if its set as a default.
-			defaultClasses()
-				.get(FileFinder.class)
-				.ifPresent(x -> creator.type(x));
-
-			beanStore
-				.getBean(FileFinder.class)
-				.ifPresent(x -> creator.impl(x));
-
-			// Replace with bean from:  @RestBean public [static] FileFinder xxx(<args>)
-			beanStore
-				.createMethodFinder(FileFinder.class)
-				.find(Builder::isRestBeanMethod)
-				.run(x -> creator.impl(x));
-
-			return creator;
-		}
-
 		//-----------------------------------------------------------------------------------------------------------------
 		// staticFiles
 		//-----------------------------------------------------------------------------------------------------------------
@@ -5838,7 +5728,6 @@ public class RestContext extends Context {
 		preCallMethods,
 		postCallMethods;
 
-	private final FileFinder fileFinder;
 	private final StaticFiles staticFiles;
 	private final CallLogger callLogger;
 	private final DebugEnablement debugEnablement;
@@ -5917,8 +5806,8 @@ public class RestContext extends Context {
 			partSerializer = bs.add(HttpPartSerializer.class, builder.partSerializer().create());
 			partParser = bs.add(HttpPartParser.class, builder.partParser().create());
 			jsonSchemaGenerator = bs.add(JsonSchemaGenerator.class, builder.jsonSchemaGenerator().build());
-			fileFinder = bs.add(FileFinder.class, builder.fileFinder().orElse(null));
 			staticFiles = bs.add(StaticFiles.class, builder.staticFiles().orElse(null));
+			bs.add(FileFinder.class, staticFiles);
 			defaultRequestHeaders = bs.add(HeaderList.class, builder.defaultRequestHeaders().build(), "defaultRequestHeaders");
 			defaultResponseHeaders = bs.add(HeaderList.class, builder.defaultResponseHeaders().build(), "defaultResponseHeaders");
 			defaultRequestAttributes = bs.add(NamedAttributeList.class, builder.defaultRequestAttributes().build(), "defaultRequestAttributes");
@@ -6314,17 +6203,6 @@ public class RestContext extends Context {
 		return clientVersionHeader;
 	}
 
-	/**
-	 * Returns the file finder associated with this context.
-	 *
-	 * @return
-	 * 	The file finder for this resource.
-	 * 	<br>Never <jk>null</jk>.
-	 */
-	public FileFinder getFileFinder() {
-		return fileFinder;
-	}
-
 	/**
 	 * Returns the static files associated with this context.
 	 *
@@ -7187,7 +7065,6 @@ public class RestContext extends Context {
 			.append("consumes", consumes)
 			.append("defaultRequestHeaders", defaultRequestHeaders)
 			.append("defaultResponseHeaders", defaultResponseHeaders)
-			.append("fileFinder", fileFinder)
 			.append("restOpArgs", restOpArgs)
 			.append("partParser", partParser)
 			.append("partSerializer", partSerializer)
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
index 837820a5b..df902fd1c 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
@@ -143,7 +143,6 @@ import org.apache.juneau.utils.*;
  * 		</ul>
  * 		<li>Methods for accessing static files:
  * 		<ul class='javatreec'>
- * 			<li class='jm'>{@link RestRequest#getFileFinder() getFileFinder()}
  * 			<li class='jm'>{@link RestRequest#getStaticFiles() getStaticFiles()}
  * 			<li class='jm'>{@link RestRequest#getVarResolverSession() getVarResolverSession()}
  * 		</ul>
@@ -1477,18 +1476,6 @@ public final class RestRequest {
 		return varSession;
 	}
 
-	/**
-	 * Returns the file finder registered on the REST resource context object.
-	 *
-	 * <p>
-	 * Used to retrieve localized files from the classpath for a variety of purposes.
-	 *
-	 * @return The file finder associated with the REST resource object.
-	 */
-	public FileFinder getFileFinder() {
-		return context.getFileFinder();
-	}
-
 	/**
 	 * Returns the static files registered on the REST resource context object.
 	 *
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
index 1000519ab..f3af36fa7 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
@@ -37,7 +37,6 @@ import org.apache.juneau.rest.processor.*;
 import org.apache.juneau.rest.servlet.*;
 import org.apache.juneau.rest.staticfile.*;
 import org.apache.juneau.rest.swagger.*;
-import org.apache.juneau.rest.vars.*;
 import org.apache.juneau.serializer.*;
 
 /**
@@ -711,26 +710,6 @@ public @interface Rest {
 	 */
 	Class<? extends Encoder>[] encoders() default {};
 
-	/**
-	 * File finder.
-	 *
-	 * <p>
-	 * Used to retrieve localized files from the classpath for a variety of purposes including:
-	 * <ul>
-	 * 	<li>Resolution of {@link FileVar $F} variable contents.
-	 * </ul>
-	 *
-	 * <p>
-	 * The file finder can be accessed through the following methods:
-	 * <ul class='javatree'>
-	 * 	<li class='jm'>{@link RestContext#getFileFinder()}
-	 * 	<li class='jm'>{@link RestRequest#getFileFinder()}
-	 * </ul>
-	 *
-	 * @return The annotation value.
-	 */
-	Class<? extends FileFinder> fileFinder() default FileFinder.Void.class;
-
 	/**
 	 * Class-level guards.
 	 *
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
index 501bd8dbe..1b8c09f39 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
@@ -99,7 +99,6 @@ public class RestAnnotation {
 		Class<? extends Encoder>[] encoders = new Class[0];
 		Class<? extends HttpPartParser> partParser = HttpPartParser.Void.class;
 		Class<? extends HttpPartSerializer> partSerializer = HttpPartSerializer.Void.class;
-		Class<? extends FileFinder> fileFinder = FileFinder.Void.class;
 		Class<? extends StaticFiles> staticFiles = StaticFiles.Void.class;
 		Class<? extends ResponseProcessor>[] responseProcessors = new Class[0];
 		Class<? extends CallLogger> callLogger = CallLogger.Void.class;
@@ -375,17 +374,6 @@ public class RestAnnotation {
 			return this;
 		}
 
-		/**
-		 * Sets the {@link Rest#fileFinder()} property on this annotation.
-		 *
-		 * @param value The new value for this property.
-		 * @return This object.
-		 */
-		public Builder fileFinder(Class<? extends FileFinder> value) {
-			this.fileFinder = value;
-			return this;
-		}
-
 		/**
 		 * Sets the {@link Rest#guards()} property on this annotation.
 		 *
@@ -693,7 +681,6 @@ public class RestAnnotation {
 		private final Class<? extends Encoder>[] encoders;
 		private final Class<? extends HttpPartParser> partParser;
 		private final Class<? extends HttpPartSerializer> partSerializer;
-		private final Class<? extends FileFinder> fileFinder;
 		private final Class<? extends StaticFiles> staticFiles;
 		private final Class<? extends ResponseProcessor>[] responseProcessors;
 		private final Class<? extends CallLogger> callLogger;
@@ -735,7 +722,6 @@ public class RestAnnotation {
 			this.defaultResponserHeaders = copyOf(b.defaultResponseHeaders);
 			this.description = copyOf(b.description);
 			this.encoders = copyOf(b.encoders);
-			this.fileFinder = b.fileFinder;
 			this.guards = copyOf(b.guards);
 			this.maxInput = b.maxInput;
 			this.messages = b.messages;
@@ -874,11 +860,6 @@ public class RestAnnotation {
 			return encoders;
 		}
 
-		@Override /* Rest */
-		public Class<? extends FileFinder> fileFinder() {
-			return fileFinder;
-		}
-
 		@Override /* Rest */
 		public Class<? extends RestGuard>[] guards() {
 			return guards;
@@ -1047,7 +1028,6 @@ public class RestAnnotation {
 			string(a.uriRelativity()).map(UriRelativity::valueOf).ifPresent(x -> b.uriRelativity(x));
 			string(a.uriResolution()).map(UriResolution::valueOf).ifPresent(x -> b.uriResolution(x));
 			b.messages().location(string(a.messages()).orElse(null));
-			type(a.fileFinder()).ifPresent(x -> b.fileFinder().type(x));
 			type(a.staticFiles()).ifPresent(x -> b.staticFiles().type(x));
 			string(a.path()).ifPresent(x -> b.path(x));
 			string(a.clientVersionHeader()).ifPresent(x -> b.clientVersionHeader(x));
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/RestContextArgs.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/RestContextArgs.java
index 8cd6f8c19..a7363e8ed 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/RestContextArgs.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/RestContextArgs.java
@@ -69,8 +69,6 @@ public class RestContextArgs extends SimpleRestOperationArg {
 			return new RestContextArgs(x->x.getDebugEnablement());
 		if (paramInfo.isType(EncoderSet.class))
 			return new RestContextArgs(x->x.getEncoders());
-		if (paramInfo.isType(FileFinder.class))
-			return new RestContextArgs(x->x.getFileFinder());
 		if (paramInfo.isType(Logger.class))
 			return new RestContextArgs(x->x.getLogger());
 		if (paramInfo.isType(MethodExecStore.class))
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/config/DefaultConfig.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/config/DefaultConfig.java
index 8f9e0c2f6..888a1b1ca 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/config/DefaultConfig.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/config/DefaultConfig.java
@@ -120,7 +120,6 @@ import org.apache.juneau.oapi.*;
 	beanStore=BeanStore.Void.class,  // Defaults to BeanStore.
 	callLogger=CallLogger.Void.class,  // Defaults to BasicCallLogger.
 	debugEnablement=DebugEnablement.Void.class,  // Defaults to BasicDefaultEnablement.
-	fileFinder=FileFinder.Void.class,  // Defaults to BasicFileFinder.
 	staticFiles=StaticFiles.Void.class,  // Defaults to BasicStaticFiles.
 	swaggerProvider=SwaggerProvider.Void.class,  // Defaults to BasicSwaggerProvider.
 
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/staticfile/BasicStaticFiles.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/staticfile/BasicStaticFiles.java
index 57d4312c6..fad514712 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/staticfile/BasicStaticFiles.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/staticfile/BasicStaticFiles.java
@@ -118,7 +118,7 @@ public class BasicStaticFiles implements StaticFiles {
 	@Override /* StaticFiles */
 	public Optional<HttpResource> resolve(String path, Locale locale) {
 		try {
-			Optional<InputStream> is = getStream(path);
+			Optional<InputStream> is = getStream(path, locale);
 			if (! is.isPresent())
 				return empty();
 			return optional(
@@ -147,16 +147,6 @@ public class BasicStaticFiles implements StaticFiles {
 		return fileFinder.getStream(name, locale);
 	}
 
-	@Override /* FileFinder */
-	public Optional<InputStream> getStream(String name) throws IOException {
-		return fileFinder.getStream(name);
-	}
-
-	@Override /* FileFinder */
-	public Optional<String> getString(String name) throws IOException {
-		return fileFinder.getString(name);
-	}
-
 	@Override /* FileFinder */
 	public Optional<String> getString(String name, Locale locale) throws IOException {
 		return fileFinder.getString(name, locale);
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/FileVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/FileVar.java
index 105633298..7937fb18b 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/FileVar.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/FileVar.java
@@ -24,7 +24,7 @@ import org.apache.juneau.svl.*;
  * The format for this var is <js>"$F{path[,defaultValue]}"</js>.
  *
  * <p>
- * Contents of files are retrieved from the request using {@link RestRequest#getFileFinder()}.
+ * Contents of files are retrieved from the request using {@link RestRequest#getStaticFiles()}.
 
  * <p>
  * Localized resources (based on the locale of the HTTP request) are supported.
@@ -75,7 +75,7 @@ public class FileVar extends DefaultingVar {
 
 		RestRequest req = session.getBean(RestRequest.class).orElseThrow(InternalServerError::new);
 
-		String s = req.getFileFinder().getString(key).orElse(null);
+		String s = req.getStaticFiles().getString(key, null).orElse(null);
 		if (s == null)
 			return null;
 		String subType = FileUtils.getExtension(key);
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/widget/Widget.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/widget/Widget.java
index df9fe2452..d79501a18 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/widget/Widget.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/widget/Widget.java
@@ -134,7 +134,7 @@ public abstract class Widget implements HtmlWidget {
 	 * @return The file finder to used for finding files on the file system.
 	 */
 	protected FileFinder getFileFinder(RestRequest req) {
-		return req.getFileFinder();
+		return req.getStaticFiles();
 	}
 
 	/**
@@ -149,7 +149,7 @@ public abstract class Widget implements HtmlWidget {
 	 */
 	protected String loadScript(RestRequest req, String name) {
 		try {
-			String s = getFileFinder(req).getString(name).orElse(null);
+			String s = getFileFinder(req).getString(name, null).orElse(null);
 			if (s != null)
 				s = s.replaceAll("(?s)\\/\\*(.*?)\\*\\/\\s*", "");
 			return s;
@@ -188,7 +188,7 @@ public abstract class Widget implements HtmlWidget {
 	 */
 	protected String loadStyle(RestRequest req, String name) {
 		try {
-			String s = getFileFinder(req).getString(name).orElse(null);
+			String s = getFileFinder(req).getString(name, null).orElse(null);
 			if (s != null)
 				s = s.replaceAll("(?s)\\/\\*(.*?)\\*\\/\\s*", "");
 			return s;
@@ -227,7 +227,7 @@ public abstract class Widget implements HtmlWidget {
 	 */
 	protected String loadHtml(RestRequest req, String name) {
 		try {
-			String s = getFileFinder(req).getString(name).orElse(null);
+			String s = getFileFinder(req).getString(name, null).orElse(null);
 			if (s != null)
 				s = s.replaceAll("(?s)<!--(.*?)-->\\s*", "");
 			return s;
diff --git a/juneau-utest/src/test/java/org/apache/juneau/cp/FileFinder_Test.java b/juneau-utest/src/test/java/org/apache/juneau/cp/FileFinder_Test.java
index 3892ded9c..9152a2239 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/cp/FileFinder_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/cp/FileFinder_Test.java
@@ -29,7 +29,7 @@ import org.junit.*;
 public class FileFinder_Test {
 
 	private InputStream stream(FileFinder ff, String path) throws Exception {
-		return ff.getStream(path).orElse(null);
+		return ff.getStream(path, null).orElse(null);
 	}
 
 	private InputStream stream(FileFinder ff, String path, Locale locale) throws Exception {
diff --git a/juneau-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java b/juneau-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java
index e70381a5d..9e4aebb42 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java
@@ -35,6 +35,7 @@ import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.annotation.Swagger;
 import org.apache.juneau.rest.mock.*;
 import org.apache.juneau.rest.servlet.*;
+import org.apache.juneau.rest.staticfile.*;
 import org.apache.juneau.rest.swagger.*;
 import org.junit.*;
 
@@ -65,17 +66,17 @@ public class Swagger_Test {
 		return ip.getSwagger(rc, req.getLocale());
 	}
 
-	public static class TestClasspathFileFinder extends BasicFileFinder {
+	public static class TestClasspathFileFinder extends BasicStaticFiles {
 
 		public TestClasspathFileFinder() {
-			super(FileFinder.create().cp(Swagger_Test.class, null, false));
+			super(StaticFiles.create(BeanStore.INSTANCE).cp(Swagger_Test.class, null, false));
 		}
 
-		@Override
-		public Optional<InputStream> find(String name, Locale locale) throws IOException {
+		@Override /* FileFinder */
+		public Optional<InputStream> getStream(String name, Locale locale) throws IOException {
 			if (name.endsWith(".json"))
 				return optional(SwaggerProvider.class.getResourceAsStream("BasicRestInfoProviderTest_swagger.json"));
-			return super.find(name, locale);
+			return super.getStream(name, locale);
 		}
 	}
 
diff --git a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestAnnotation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestAnnotation_Test.java
index 2b548bf34..88e99e931 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestAnnotation_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestAnnotation_Test.java
@@ -66,7 +66,6 @@ public class RestAnnotation_Test {
 		.defaultResponseHeaders("defaultResponseHeaders")
 		.description("description")
 		.encoders(Encoder.class)
-		.fileFinder(FileFinder.class)
 		.guards(RestGuard.class)
 		.maxInput("maxInput")
 		.messages("messages")
@@ -119,7 +118,6 @@ public class RestAnnotation_Test {
 		.defaultResponseHeaders("defaultResponseHeaders")
 		.description("description")
 		.encoders(Encoder.class)
-		.fileFinder(FileFinder.class)
 		.guards(RestGuard.class)
 		.maxInput("maxInput")
 		.messages("messages")
@@ -175,7 +173,6 @@ public class RestAnnotation_Test {
 				+ "description:['description'],"
 				+ "disableContentParam:'disableContentParam',"
 				+ "encoders:['org.apache.juneau.encoders.Encoder'],"
-				+ "fileFinder:'org.apache.juneau.cp.FileFinder',"
 				+ "guards:['org.apache.juneau.rest.guard.RestGuard'],"
 				+ "maxInput:'maxInput',"
 				+ "messages:'messages',"
@@ -273,7 +270,6 @@ public class RestAnnotation_Test {
 		defaultResponseHeaders="defaultResponseHeaders",
 		description="description",
 		encoders=Encoder.class,
-		fileFinder=FileFinder.class,
 		guards=RestGuard.class,
 		maxInput="maxInput",
 		messages="messages",
@@ -328,7 +324,6 @@ public class RestAnnotation_Test {
 		defaultResponseHeaders="defaultResponseHeaders",
 		description="description",
 		encoders=Encoder.class,
-		fileFinder=FileFinder.class,
 		guards=RestGuard.class,
 		maxInput="maxInput",
 		messages="messages",