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 2020/07/20 14:44:45 UTC

[juneau] branch master updated: New org.apache.juneau.cp package.

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 3e508ad  New org.apache.juneau.cp package.
3e508ad is described below

commit 3e508ad32f29583680bdad482778fb2b6934da61
Author: JamesBognar <ja...@salesforce.com>
AuthorDate: Mon Jul 20 10:44:38 2020 -0400

    New org.apache.juneau.cp package.
---
 .../apache/juneau/dto/swagger/ui/SwaggerUI.java    |  4 +-
 .../BasicClasspathResourceFinder.java}             |  8 ++--
 .../{utils => cp}/ClasspathResourceFinder.java     |  9 ++--
 .../{utils => cp}/ClasspathResourceManager.java    | 51 ++++++++++++++++++++--
 .../RecursiveClasspathResourceFinder.java}         |  8 ++--
 .../SimpleClasspathResourceFinder.java}            |  6 +--
 .../juneau/utils/ClasspathResourceFinder.java      |  4 +-
 .../juneau/utils/ClasspathResourceFinderBasic.java |  5 +++
 .../utils/ClasspathResourceFinderRecursive.java    |  5 +++
 .../utils/ClasspathResourceFinderSimple.java       |  5 +++
 .../juneau/utils/ClasspathResourceManager.java     |  3 ++
 .../juneau/rest/BasicRestInfoProviderTest.java     |  4 +-
 .../java/org/apache/juneau/rest/BasicRest.java     |  5 ++-
 .../java/org/apache/juneau/rest/RestContext.java   | 15 ++++---
 .../org/apache/juneau/rest/RestContextBuilder.java |  6 +--
 .../java/org/apache/juneau/rest/RestServlet.java   |  4 +-
 .../org/apache/juneau/rest/StaticFileMapping.java  |  2 +-
 .../java/org/apache/juneau/rest/StaticFiles.java   |  2 +-
 .../org/apache/juneau/rest/annotation/Rest.java    |  6 +--
 .../juneau/rest/annotation/RestConfigApply.java    |  2 +-
 .../java/org/apache/juneau/rest/vars/FileVar.java  |  2 +-
 .../java/org/apache/juneau/rest/widget/Widget.java |  4 +-
 22 files changed, 114 insertions(+), 46 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 837ca4c..10517f0 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
@@ -19,12 +19,12 @@ import java.util.Map;
 
 import org.apache.juneau.*;
 import org.apache.juneau.collections.*;
+import org.apache.juneau.cp.*;
 import org.apache.juneau.dto.html5.*;
 import org.apache.juneau.dto.swagger.*;
 import org.apache.juneau.http.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.transform.*;
-import org.apache.juneau.utils.*;
 
 /**
  * Generates a Swagger-UI interface from a Swagger document.
@@ -70,7 +70,7 @@ public class SwaggerUI extends PojoSwap<Swagger,Div> {
 	public static final String SWAGGERUI_resolveRefsMaxDepth = PREFIX + "resolveRefsMaxDepth.i";
 
 
-	static final ClasspathResourceManager RESOURCES = new ClasspathResourceManager(SwaggerUI.class, ClasspathResourceFinderBasic.INSTANCE, Boolean.getBoolean("RestContext.useClasspathResourceCaching.b"));
+	static final ClasspathResourceManager RESOURCES = new ClasspathResourceManager(SwaggerUI.class, BasicClasspathResourceFinder.INSTANCE, Boolean.getBoolean("RestContext.useClasspathResourceCaching.b"));
 
 	private static final Set<String> STANDARD_METHODS = ASet.of("get", "put", "post", "delete", "options");
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderBasic.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicClasspathResourceFinder.java
similarity index 91%
copy from juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderBasic.java
copy to juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicClasspathResourceFinder.java
index a9b6119..b9fba13 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderBasic.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicClasspathResourceFinder.java
@@ -10,7 +10,7 @@
 // * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
 // * specific language governing permissions and limitations under the License.                                              *
 // ***************************************************************************************************************************
-package org.apache.juneau.utils;
+package org.apache.juneau.cp;
 
 import java.io.*;
 import java.util.*;
@@ -19,16 +19,16 @@ import java.util.*;
  * Utility class for finding resources for a class.
  *
  * <p>
- * Same as {@link ClasspathResourceFinderSimple}, but first searches the working directory for the file before
+ * Same as {@link SimpleClasspathResourceFinder}, but first searches the working directory for the file before
  * looking in the classpath.
  * <br>Path traversals outside the working directory are not allowed for security reasons.
  */
-public class ClasspathResourceFinderBasic extends ClasspathResourceFinderSimple {
+public class BasicClasspathResourceFinder extends SimpleClasspathResourceFinder {
 
 	/**
 	 * Reusable instance.
 	 */
-	public static final ClasspathResourceFinderBasic INSTANCE = new ClasspathResourceFinderBasic();
+	public static final BasicClasspathResourceFinder INSTANCE = new BasicClasspathResourceFinder();
 
 	@Override /* ClasspathResourceFinder */
 	public InputStream findResource(Class<?> baseClass, String name, Locale locale) throws IOException {
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/ClasspathResourceFinder.java
similarity index 93%
copy from juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinder.java
copy to juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/ClasspathResourceFinder.java
index db6bd9b..70d747d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/ClasspathResourceFinder.java
@@ -10,8 +10,7 @@
 // * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
 // * specific language governing permissions and limitations under the License.                                              *
 // ***************************************************************************************************************************
-package org.apache.juneau.utils;
-
+package org.apache.juneau.cp;
 
 import java.io.*;
 import java.util.*;
@@ -26,10 +25,10 @@ import java.util.*;
  * <p>
  * The following predefined implementations are provided:
  * <ul>
- * 	<li>{@link ClasspathResourceFinderSimple} - Simple searching of classpath.
- * 	<li>{@link ClasspathResourceFinderBasic} - Same as above, but looks in local JVM working directory if resource
+ * 	<li>{@link SimpleClasspathResourceFinder} - Simple searching of classpath.
+ * 	<li>{@link BasicClasspathResourceFinder} - Same as above, but looks in local JVM working directory if resource
  * 		can't be found on classpath.
- * 	<li>{@link ClasspathResourceFinderRecursive} - Same as above, except if the resource can't be found on the
+ * 	<li>{@link RecursiveClasspathResourceFinder} - Same as above, except if the resource can't be found on the
  * 		classpath relative to the base class, recursively searches up the parent class hierarchy.
  * </ul>
  */
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceManager.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/ClasspathResourceManager.java
similarity index 78%
copy from juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceManager.java
copy to juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/ClasspathResourceManager.java
index 23e7278..1c38674 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceManager.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/ClasspathResourceManager.java
@@ -10,8 +10,9 @@
 // * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
 // * specific language governing permissions and limitations under the License.                                              *
 // ***************************************************************************************************************************
-package org.apache.juneau.utils;
+package org.apache.juneau.cp;
 
+import static org.apache.juneau.internal.IOUtils.*;
 import static org.apache.juneau.internal.ObjectUtils.*;
 
 import java.io.*;
@@ -19,6 +20,7 @@ import java.util.*;
 import java.util.concurrent.*;
 
 import org.apache.juneau.internal.*;
+import org.apache.juneau.parser.*;
 
 /**
  * Class for retrieving and caching resource files from the classpath.
@@ -57,12 +59,12 @@ public final class ClasspathResourceManager {
 	 * Constructor.
 	 *
 	 * <p>
-	 * Uses default {@link ClasspathResourceFinderBasic} for finding resources.
+	 * Uses default {@link BasicClasspathResourceFinder} for finding resources.
 	 *
 	 * @param baseClass The default class to use for retrieving resources from the classpath.
 	 */
 	public ClasspathResourceManager(Class<?> baseClass) {
-		this(baseClass, new ClasspathResourceFinderBasic(), false);
+		this(baseClass, new BasicClasspathResourceFinder(), false);
 	}
 
 	/**
@@ -193,6 +195,49 @@ public final class ClasspathResourceManager {
 		return stringCache.get(key);
 	}
 
+	/**
+	 * Reads the input stream and parses it into a POJO using the specified parser.
+	 *
+	 * @param c The class type of the POJO to create.
+	 * @param parser The parser to use to parse the stream.
+	 * @param name The resource name (e.g. "htdocs/styles.css").
+	 * @param locale
+	 * 	Optional locale.
+	 * 	<br>If <jk>null</jk>, won't look for localized file names.
+	 * @return The parsed resource, or <jk>null</jk> if the resource could not be found.
+	 * @throws IOException Thrown by underlying stream.
+	 * @throws ParseException If stream could not be parsed using the specified parser.
+	 */
+	public <T> T getResource(Class<T> c, Parser parser, String name, Locale locale) throws IOException, ParseException {
+		return getResource(null, c, parser, name, locale);
+	}
+
+	/**
+	 * Same as {@link #getResource(Class, Parser, String, Locale)}, except overrides the class used
+	 * for retrieving the classpath resource.
+	 *
+	 * @param baseClass
+	 * 	Overrides the default class to use for retrieving the classpath resource.
+	 * 	<br>If <jk>null</jk>, uses the REST resource class.
+	 * @param c The class type of the POJO to create.
+	 * @param parser The parser to use to parse the stream.
+	 * @param name The resource name (e.g. "htdocs/styles.css").
+	 * @param locale
+	 * 	Optional locale.
+	 * 	<br>If <jk>null</jk>, won't look for localized file names.
+	 * @return The parsed resource, or <jk>null</jk> if the resource could not be found.
+	 * @throws IOException Thrown by underlying stream.
+	 * @throws ParseException If stream could not be parsed using the specified parser.
+	 */
+	public <T> T getResource(Class<?> baseClass, Class<T> c, Parser parser, String name, Locale locale) throws IOException, ParseException {
+		InputStream is = getStream(baseClass, name, locale);
+		if (is == null)
+			return null;
+		try (Closeable in = parser.isReaderParser() ? new InputStreamReader(is, UTF8) : is) {
+			return parser.parse(in, c);
+		}
+	}
+
 	private class ResourceKey {
 		final String name;
 		final Locale locale;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderRecursive.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/RecursiveClasspathResourceFinder.java
similarity index 87%
copy from juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderRecursive.java
copy to juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/RecursiveClasspathResourceFinder.java
index 79be8e4..52a3e34 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderRecursive.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/RecursiveClasspathResourceFinder.java
@@ -10,20 +10,20 @@
 // * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
 // * specific language governing permissions and limitations under the License.                                              *
 // ***************************************************************************************************************************
-package org.apache.juneau.utils;
+package org.apache.juneau.cp;
 
 import java.io.*;
 import java.util.*;
 
 /**
- * Same as {@link ClasspathResourceFinderBasic} but searches for resources up the parent class hierarchy chain.
+ * Same as {@link BasicClasspathResourceFinder} but searches for resources up the parent class hierarchy chain.
  */
-public class ClasspathResourceFinderRecursive extends ClasspathResourceFinderBasic {
+public class RecursiveClasspathResourceFinder extends BasicClasspathResourceFinder {
 
 	/**
 	 * Reusable instance.
 	 */
-	public static final ClasspathResourceFinderRecursive INSTANCE = new ClasspathResourceFinderRecursive();
+	public static final RecursiveClasspathResourceFinder INSTANCE = new RecursiveClasspathResourceFinder();
 
 	@Override /* ResourceFinder2 */
 	public InputStream findResource(Class<?> baseClass, String name, Locale locale) throws IOException {
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderSimple.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/SimpleClasspathResourceFinder.java
similarity index 96%
copy from juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderSimple.java
copy to juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/SimpleClasspathResourceFinder.java
index eb97c8f..f0f402c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderSimple.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/SimpleClasspathResourceFinder.java
@@ -10,7 +10,7 @@
 // * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
 // * specific language governing permissions and limitations under the License.                                              *
 // ***************************************************************************************************************************
-package org.apache.juneau.utils;
+package org.apache.juneau.cp;
 
 import static org.apache.juneau.internal.FileUtils.*;
 
@@ -34,12 +34,12 @@ import java.util.ResourceBundle.*;
  * 	<li><js>"MyResource.txt"</js>
  * </ol>
  */
-public class ClasspathResourceFinderSimple implements ClasspathResourceFinder {
+public class SimpleClasspathResourceFinder implements ClasspathResourceFinder {
 
 	/**
 	 * Reusable instance.
 	 */
-	public static final ClasspathResourceFinderSimple INSTANCE = new ClasspathResourceFinderSimple();
+	public static final SimpleClasspathResourceFinder INSTANCE = new SimpleClasspathResourceFinder();
 
 	private static final ResourceBundle.Control RB_CONTROL = ResourceBundle.Control.getControl(Control.FORMAT_DEFAULT);
 	private static final List<Locale> ROOT_LOCALE = Arrays.asList(Locale.ROOT);
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinder.java
index db6bd9b..200d782 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinder.java
@@ -12,7 +12,6 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.utils;
 
-
 import java.io.*;
 import java.util.*;
 
@@ -32,7 +31,10 @@ import java.util.*;
  * 	<li>{@link ClasspathResourceFinderRecursive} - Same as above, except if the resource can't be found on the
  * 		classpath relative to the base class, recursively searches up the parent class hierarchy.
  * </ul>
+ *
+ * @deprecated Use {@link org.apache.juneau.cp.ClasspathResourceFinder}.
  */
+@Deprecated
 public interface ClasspathResourceFinder {
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderBasic.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderBasic.java
index a9b6119..75c7ccd 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderBasic.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderBasic.java
@@ -15,6 +15,8 @@ package org.apache.juneau.utils;
 import java.io.*;
 import java.util.*;
 
+import org.apache.juneau.cp.*;
+
 /**
  * Utility class for finding resources for a class.
  *
@@ -22,7 +24,10 @@ import java.util.*;
  * Same as {@link ClasspathResourceFinderSimple}, but first searches the working directory for the file before
  * looking in the classpath.
  * <br>Path traversals outside the working directory are not allowed for security reasons.
+ *
+ * @deprecated Use {@link SimpleClasspathResourceFinder}.
  */
+@Deprecated
 public class ClasspathResourceFinderBasic extends ClasspathResourceFinderSimple {
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderRecursive.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderRecursive.java
index 79be8e4..4d2fde3 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderRecursive.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderRecursive.java
@@ -15,9 +15,14 @@ package org.apache.juneau.utils;
 import java.io.*;
 import java.util.*;
 
+import org.apache.juneau.cp.*;
+
 /**
  * Same as {@link ClasspathResourceFinderBasic} but searches for resources up the parent class hierarchy chain.
+ *
+ * @deprecated Use {@link BasicClasspathResourceFinder}.
  */
+@Deprecated
 public class ClasspathResourceFinderRecursive extends ClasspathResourceFinderBasic {
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderSimple.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderSimple.java
index eb97c8f..696eccf 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderSimple.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceFinderSimple.java
@@ -18,6 +18,8 @@ import java.io.*;
 import java.util.*;
 import java.util.ResourceBundle.*;
 
+import org.apache.juneau.cp.*;
+
 /**
  * Utility class for finding resources for a class.
  *
@@ -33,7 +35,10 @@ import java.util.ResourceBundle.*;
  * 	<li><js>"MyResource_ja.txt"</js>
  * 	<li><js>"MyResource.txt"</js>
  * </ol>
+ *
+ * @deprecated Use {@link SimpleClasspathResourceFinder}.
  */
+@Deprecated
 public class ClasspathResourceFinderSimple implements ClasspathResourceFinder {
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceManager.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceManager.java
index 23e7278..3356576 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceManager.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ClasspathResourceManager.java
@@ -22,7 +22,10 @@ import org.apache.juneau.internal.*;
 
 /**
  * Class for retrieving and caching resource files from the classpath.
+ *
+ * @deprecated Use {@link org.apache.juneau.cp.ClasspathResourceManager}.
  */
+@Deprecated
 public final class ClasspathResourceManager {
 
 	// Maps resource names+locales to found resources.
diff --git a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/BasicRestInfoProviderTest.java b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/BasicRestInfoProviderTest.java
index 2a0673a..a303908 100644
--- a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/BasicRestInfoProviderTest.java
+++ b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/BasicRestInfoProviderTest.java
@@ -26,6 +26,7 @@ import org.apache.juneau.jsonschema.annotation.Schema;
 import org.apache.juneau.xml.*;
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.cp.*;
 import org.apache.juneau.dto.swagger.*;
 import org.apache.juneau.http.annotation.*;
 import org.apache.juneau.http.annotation.Body;
@@ -36,7 +37,6 @@ import org.apache.juneau.http.annotation.Response;
 import org.apache.juneau.http.annotation.Tag;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.mock2.*;
-import org.apache.juneau.utils.*;
 import org.junit.*;
 
 @FixMethodOrder(NAME_ASCENDING)
@@ -60,7 +60,7 @@ public class BasicRestInfoProviderTest {
 		return ip.getSwagger(req);
 	}
 
-	public static class TestClasspathResourceFinder extends ClasspathResourceFinderBasic {
+	public static class TestClasspathResourceFinder extends BasicClasspathResourceFinder {
 		@Override
 		public InputStream findResource(Class<?> baseClass, String name, Locale locale) throws IOException {
 			if (name.endsWith(".json"))
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRest.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRest.java
index 9cc7524..4bcedd0 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRest.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRest.java
@@ -24,12 +24,13 @@ import java.util.logging.*;
 import javax.servlet.*;
 import javax.servlet.http.*;
 
+import org.apache.juneau.cp.*;
+import org.apache.juneau.cp.ClasspathResourceFinder;
 import org.apache.juneau.dto.swagger.*;
 import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.config.*;
-import org.apache.juneau.utils.*;
 import org.apache.juneau.http.exception.*;
 
 /**
@@ -278,7 +279,7 @@ public abstract class BasicRest implements BasicUniversalRest, BasicRestMethods,
 		this.callHandler = new BasicRestCallHandler(context);
 		this.infoProvider = new BasicRestInfoProvider(context);
 		this.callLogger = new BasicRestCallLogger(context);
-		this.resourceFinder = new ClasspathResourceFinderBasic();
+		this.resourceFinder = new BasicClasspathResourceFinder();
 	}
 
 	/**
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 dcbd72f..e765fd8 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
@@ -38,6 +38,9 @@ import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.config.*;
+import org.apache.juneau.cp.*;
+import org.apache.juneau.cp.ClasspathResourceFinder;
+import org.apache.juneau.cp.ClasspathResourceManager;
 import org.apache.juneau.encoders.*;
 import org.apache.juneau.html.*;
 import org.apache.juneau.html.annotation.*;
@@ -775,8 +778,8 @@ public final class RestContext extends BeanContext {
 	 * <ul class='spaced-list'>
 	 * 	<li><b>ID:</b>  {@link org.apache.juneau.rest.RestContext#REST_classpathResourceFinder REST_classpathResourceFinder}
 	 * 	<li><b>Name:</b>  <js>"RestContext.classpathResourceFinder.o"</js>
-	 * 	<li><b>Data type:</b>  {@link org.apache.juneau.utils.ClasspathResourceFinder}
-	 * 	<li><b>Default:</b>  {@link org.apache.juneau.utils.ClasspathResourceFinderBasic}
+	 * 	<li><b>Data type:</b>  {@link org.apache.juneau.cp.ClasspathResourceFinder}
+	 * 	<li><b>Default:</b>  {@link org.apache.juneau.cp.BasicClasspathResourceFinder}
 	 * 	<li><b>Session property:</b>  <jk>false</jk>
 	 * 	<li><b>Annotations:</b>
 	 * 		<ul>
@@ -854,9 +857,9 @@ public final class RestContext extends BeanContext {
 	 *
 	 * <ul class='notes'>
 	 * 	<li>
-	 * 		The default value is {@link ClasspathResourceFinderBasic} which provides basic support for finding localized
+	 * 		The default value is {@link BasicClasspathResourceFinder} which provides basic support for finding localized
 	 * 		resources on the classpath and JVM working directory.
-	 * 		<br>The {@link ClasspathResourceFinderRecursive} is another option that also recursively searches for resources
+	 * 		<br>The {@link RecursiveClasspathResourceFinder} is another option that also recursively searches for resources
 	 * 		up the class-hierarchy.
 	 * 		<br>Each of these classes can be extended to provide customized handling of resource retrieval.
 	 * 	<li>
@@ -864,7 +867,7 @@ public final class RestContext extends BeanContext {
 	 * 		explicitly overridden via this annotation.
 	 * 	<li>
 	 * 		The {@link RestServlet} and {@link BasicRest} classes implement the {@link ClasspathResourceFinder} interface with the same
-	 * 		functionality as {@link ClasspathResourceFinderBasic} that gets used if not overridden by this annotation.
+	 * 		functionality as {@link BasicClasspathResourceFinder} that gets used if not overridden by this annotation.
 	 * 		<br>Subclasses can also alter the behavior by overriding these methods.
 	 * 	<li>
 	 * 		When defined as a class, the implementation must have one of the following constructors:
@@ -3832,7 +3835,7 @@ public final class RestContext extends BeanContext {
 			for (String mimeType : getArrayProperty(REST_mimeTypes, String.class))
 				mimetypesFileTypeMap.addMimeTypes(mimeType);
 
-			Object defaultResourceFinder = resource instanceof ClasspathResourceFinder ? resource : ClasspathResourceFinderBasic.class;
+			Object defaultResourceFinder = resource instanceof ClasspathResourceFinder ? resource : BasicClasspathResourceFinder.class;
 			ClasspathResourceFinder rf = getInstanceProperty(REST_classpathResourceFinder, ClasspathResourceFinder.class, defaultResourceFinder, resourceResolver, this);
 
 			useClasspathResourceCaching = getProperty(REST_useClasspathResourceCaching, boolean.class, true);
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
index 9e95666..05b787b 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
@@ -28,6 +28,7 @@ import javax.servlet.*;
 import org.apache.juneau.*;
 import org.apache.juneau.config.*;
 import org.apache.juneau.config.vars.*;
+import org.apache.juneau.cp.*;
 import org.apache.juneau.encoders.*;
 import org.apache.juneau.html.*;
 import org.apache.juneau.http.*;
@@ -45,7 +46,6 @@ import org.apache.juneau.rest.widget.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.svl.*;
 import org.apache.juneau.svl.vars.*;
-import org.apache.juneau.utils.*;
 
 /**
  * Defines the initial configuration of a <c>RestServlet</c> or <c>@Rest</c> annotated object.
@@ -745,7 +745,7 @@ public class RestContextBuilder extends BeanContextBuilder implements ServletCon
 	 *
 	 * @param value
 	 * 	The new value for this setting.
-	 * 	<br>The default is {@link ClasspathResourceFinderBasic}.
+	 * 	<br>The default is {@link BasicClasspathResourceFinder}.
 	 * @return This object (for method chaining).
 	 */
 	@FluentSetter
@@ -765,7 +765,7 @@ public class RestContextBuilder extends BeanContextBuilder implements ServletCon
 	 *
 	 * @param value
 	 * 	The new value for this setting.
-	 * 	<br>The default is {@link ClasspathResourceFinderBasic}.
+	 * 	<br>The default is {@link BasicClasspathResourceFinder}.
 	 * @return This object (for method chaining).
 	 */
 	@FluentSetter
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
index 1004d8f..40fc98e 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
@@ -31,7 +31,7 @@ import javax.servlet.http.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.reflect.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.utils.*;
+import org.apache.juneau.cp.*;
 import org.apache.juneau.dto.swagger.*;
 import org.apache.juneau.http.exception.*;
 
@@ -101,7 +101,7 @@ public abstract class RestServlet extends HttpServlet implements RestCallHandler
 		callHandler = new BasicRestCallHandler(context);
 		infoProvider = new BasicRestInfoProvider(context);
 		callLogger = new BasicRestCallLogger(context);
-		resourceFinder = new ClasspathResourceFinderBasic();
+		resourceFinder = new BasicClasspathResourceFinder();
 		context.postInit();
 	}
 
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/StaticFileMapping.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/StaticFileMapping.java
index 63691ab..c1e28a4 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/StaticFileMapping.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/StaticFileMapping.java
@@ -20,11 +20,11 @@ import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.collections.*;
+import org.apache.juneau.cp.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.utils.*;
 
 /**
  * Static file mapping.
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/StaticFiles.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/StaticFiles.java
index 35aa3c0..27795c0 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/StaticFiles.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/StaticFiles.java
@@ -17,8 +17,8 @@ import java.util.*;
 
 import javax.activation.*;
 
+import org.apache.juneau.cp.*;
 import org.apache.juneau.internal.*;
-import org.apache.juneau.utils.*;
 
 /**
  * The static file resource resolver for a single {@link StaticFileMapping}.
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 a210eab..2901334 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
@@ -20,10 +20,10 @@ import java.lang.annotation.*;
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.config.*;
+import org.apache.juneau.cp.*;
 import org.apache.juneau.encoders.*;
 import org.apache.juneau.httppart.*;
 import org.apache.juneau.rest.*;
-import org.apache.juneau.utils.*;
 
 /**
  * Used to denote that a class is a REST resource and to associate metadata on it.
@@ -213,13 +213,13 @@ public @interface Rest {
 	 *
 	 * <ul class='notes'>
 	 * 	<li>
-	 * 		The default resource finder if not specified is {@link ClasspathResourceFinderBasic}.
+	 * 		The default resource finder if not specified is {@link BasicClasspathResourceFinder}.
 	 * 	<li>
 	 * 		The resource class itself will be used if it implements the {@link ClasspathResourceFinder} interface and not
 	 * 		explicitly overridden via this annotation.
 	 * 	<li>
 	 * 		The {@link RestServlet} and {@link BasicRest} classes implement the {@link ClasspathResourceFinder} interface with the same
-	 * 		functionality as {@link ClasspathResourceFinderBasic} that gets used if not overridden by this annotation.
+	 * 		functionality as {@link BasicClasspathResourceFinder} that gets used if not overridden by this annotation.
 	 * 		<br>Subclasses can also alter the behavior by overriding this method.
 	 * 	<li>
 	 * 		The implementation must have one of the following constructors:
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestConfigApply.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestConfigApply.java
index fa8afe5..dffced0 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestConfigApply.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestConfigApply.java
@@ -22,6 +22,7 @@ import static org.apache.juneau.internal.ArrayUtils.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.collections.*;
+import org.apache.juneau.cp.*;
 import org.apache.juneau.httppart.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.parser.*;
@@ -31,7 +32,6 @@ import org.apache.juneau.rest.annotation.AnnotationUtils;
 import org.apache.juneau.rest.annotation.Logging;
 import org.apache.juneau.rest.util.*;
 import org.apache.juneau.svl.*;
-import org.apache.juneau.utils.*;
 
 /**
  * Applies {@link Rest} annotations to a {@link PropertyStoreBuilder}.
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 cc3de68..70a04db 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
@@ -12,10 +12,10 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.rest.vars;
 
+import org.apache.juneau.cp.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.svl.*;
-import org.apache.juneau.utils.*;
 
 /**
  * File resource variable resolver
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 300afc2..157d24c 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
@@ -17,7 +17,7 @@ import java.util.*;
 
 import org.apache.juneau.rest.*;
 import org.apache.juneau.svl.*;
-import org.apache.juneau.utils.*;
+import org.apache.juneau.cp.*;
 import org.apache.juneau.html.*;
 
 /**
@@ -39,7 +39,7 @@ import org.apache.juneau.html.*;
  */
 public abstract class Widget implements HtmlWidget {
 
-	private final ClasspathResourceManager rm = new ClasspathResourceManager(getClass(), ClasspathResourceFinderRecursive.INSTANCE, false);
+	private final ClasspathResourceManager rm = new ClasspathResourceManager(getClass(), RecursiveClasspathResourceFinder.INSTANCE, false);
 
 	private static final String SESSION_req = "req";
 	private static final String SESSION_res = "res";