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 2019/03/31 12:48:34 UTC

[juneau] branch master updated: Rename internal StringUtils.asString() to stringify().

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 1ed6b52  Rename internal StringUtils.asString() to stringify().
1ed6b52 is described below

commit 1ed6b529f357e31677b1e093d76fc63d8cb3df9d
Author: JamesBognar <ja...@apache.org>
AuthorDate: Sun Mar 31 08:48:07 2019 -0400

    Rename internal StringUtils.asString() to stringify().
---
 .../main/java/org/apache/juneau/config/Config.java |   2 +-
 .../apache/juneau/reflection/ClassInfoTest.java    | 181 ++++++++++++++++++++-
 .../org/apache/juneau/dto/swagger/Contact.java     |   4 +-
 .../juneau/dto/swagger/ExternalDocumentation.java  |   2 +-
 .../org/apache/juneau/dto/swagger/HeaderInfo.java  |  12 +-
 .../java/org/apache/juneau/dto/swagger/Info.java   |   8 +-
 .../java/org/apache/juneau/dto/swagger/Items.java  |  10 +-
 .../org/apache/juneau/dto/swagger/License.java     |   2 +-
 .../org/apache/juneau/dto/swagger/Operation.java   |   6 +-
 .../apache/juneau/dto/swagger/ParameterInfo.java   |  16 +-
 .../apache/juneau/dto/swagger/ResponseInfo.java    |   2 +-
 .../org/apache/juneau/dto/swagger/SchemaInfo.java  |  14 +-
 .../apache/juneau/dto/swagger/SecurityScheme.java  |  14 +-
 .../org/apache/juneau/dto/swagger/Swagger.java     |   6 +-
 .../java/org/apache/juneau/dto/swagger/Tag.java    |   4 +-
 .../java/org/apache/juneau/dto/swagger/Xml.java    |   6 +-
 .../src/main/java/org/apache/juneau/BeanMap.java   |   4 +-
 .../main/java/org/apache/juneau/BeanRegistry.java  |   2 +-
 .../juneau/InvalidDataConversionException.java     |   2 +-
 .../src/main/java/org/apache/juneau/ObjectMap.java |   2 +-
 .../main/java/org/apache/juneau/UriResolver.java   |   4 +-
 .../apache/juneau/html/HtmlSerializerSession.java  |   4 +-
 .../org/apache/juneau/internal/ArrayUtils.java     |   2 +-
 .../org/apache/juneau/internal/DelegateMap.java    |   2 +-
 .../org/apache/juneau/internal/StringUtils.java    |  12 +-
 .../org/apache/juneau/internal/SystemUtils.java    |   2 +-
 .../apache/juneau/oapi/OpenApiParserSession.java   |   4 +-
 .../juneau/oapi/OpenApiSerializerSession.java      |  12 +-
 .../org/apache/juneau/pojotools/PojoSearcher.java  |   2 +-
 .../org/apache/juneau/reflection/ClassInfo.java    |  73 ++++-----
 .../main/java/org/apache/juneau/svl/MapVar.java    |   2 +-
 .../apache/juneau/microservice/Microservice.java   |   2 +-
 .../apache/juneau/rest/client/NameValuePairs.java  |   2 +-
 .../org/apache/juneau/rest/client/RestClient.java  |   4 +-
 .../juneau/rest/mock2/MockServletRequest.java      |   6 +-
 .../org/apache/juneau/rest/HtmlDocBuilder.java     |   6 +-
 .../org/apache/juneau/rest/RequestFormData.java    |   4 +-
 .../org/apache/juneau/rest/RequestHeaders.java     |   4 +-
 .../java/org/apache/juneau/rest/RequestQuery.java  |   4 +-
 .../java/org/apache/juneau/rest/RestResponse.java  |   2 +-
 .../juneau/rest/mock/MockServletRequest.java       |   6 +-
 .../juneau/rest/reshandlers/DefaultHandler.java    |   2 +-
 .../juneau/rest/vars/RequestAttributeVar.java      |   2 +-
 43 files changed, 310 insertions(+), 152 deletions(-)

diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
index 92141f3..fe953c0 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
@@ -537,7 +537,7 @@ public final class Config extends Context implements ConfigEventListener, Writab
 
 		String mod = ce == null ? "" : ce.getModifiers();
 
-		String s = asString(value);
+		String s = stringify(value);
 		for (ConfigMod m : ConfigMod.asModifiers(mod)) {
 			if (m == ENCODED) {
 				s = encoder.encode(key, s);
diff --git a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/reflection/ClassInfoTest.java b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/reflection/ClassInfoTest.java
index cf7a431..20cb825 100644
--- a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/reflection/ClassInfoTest.java
+++ b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/reflection/ClassInfoTest.java
@@ -173,6 +173,10 @@ public class ClassInfoTest {
 	@Test
 	public void getDeclaredInterfaces_onType() {
 		check("", aTypeInfo.getDeclaredInterfaces());
+		check("", pTypeInfo.getDeclaredInterfaces());
+		check("", pTypeDimensionalInfo.getDeclaredInterfaces());
+		check("Map", pTypeGenericInfo.getDeclaredInterfaces());
+		check("", pTypeGenericArgInfo.getDeclaredInterfaces());
 	}
 
 	@Test
@@ -301,6 +305,7 @@ public class ClassInfoTest {
 	@Test
 	public void getPublicMethods_onType() throws Exception {
 		check("", aTypeInfo.getPublicMethods());
+		check("", pTypeGenericArgInfo.getPublicMethods());
 	}
 
 	@Test
@@ -341,6 +346,7 @@ public class ClassInfoTest {
 	@Test
 	public void getDeclaredMethods_onType() throws Exception {
 		check("", aTypeInfo.getDeclaredMethods());
+		check("", pTypeGenericArgInfo.getDeclaredMethods());
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -389,6 +395,7 @@ public class ClassInfoTest {
 	@Test
 	public void getFromStringMethod_onType() throws Exception {
 		check(null, aTypeInfo.getFromStringMethod());
+		check(null, pTypeGenericArgInfo.getFromStringMethod());
 	}
 
 	static class DBx {}
@@ -446,6 +453,7 @@ public class ClassInfoTest {
 	@Test
 	public void getStaticCreateMethod_onType() throws Exception {
 		check(null, aTypeInfo.getStaticCreateMethod(DBx.class));
+		check(null, pTypeGenericArgInfo.getStaticCreateMethod(DBx.class));
 	}
 
 	static class DCx {}
@@ -860,6 +868,7 @@ public class ClassInfoTest {
 	@Test
 	public void isDeprecated_onType() {
 		assertFalse(aTypeInfo.isDeprecated());
+		assertFalse(pTypeGenericArgInfo.isDeprecated());
 	}
 
 	@Test
@@ -874,7 +883,7 @@ public class ClassInfoTest {
 		assertTrue(pTypeInfo.isNotDeprecated());
 		assertTrue(pTypeDimensionalInfo.isNotDeprecated());
 		assertTrue(pTypeGenericInfo.isNotDeprecated());
-		assertFalse(pTypeGenericArgInfo.isNotDeprecated());
+		assertTrue(pTypeGenericArgInfo.isNotDeprecated());
 	}
 
 	@Test
@@ -905,6 +914,7 @@ public class ClassInfoTest {
 	@Test
 	public void isNotPublic_onType() {
 		assertFalse(aTypeInfo.isNotPublic());
+		assertTrue(pTypeGenericArgInfo.isNotPublic());
 	}
 
 	@Test
@@ -916,6 +926,7 @@ public class ClassInfoTest {
 	@Test
 	public void isStatic_onType() {
 		assertFalse(aTypeInfo.isStatic());
+		assertFalse(pTypeGenericArgInfo.isStatic());
 	}
 
 	@Test
@@ -930,18 +941,19 @@ public class ClassInfoTest {
 		assertTrue(pTypeInfo.isNotStatic());
 		assertTrue(pTypeDimensionalInfo.isNotStatic());
 		assertTrue(pTypeGenericInfo.isNotStatic());
-		assertFalse(pTypeGenericArgInfo.isNotStatic());
+		assertTrue(pTypeGenericArgInfo.isNotStatic());
 	}
 
 	@Test
 	public void isAbstract() {
 		assertTrue(hAbstractPublic.isAbstract());
-		assertFalse(hPublic.isAbstract());
+		assertFalse(pTypeGenericArgInfo.isAbstract());
 	}
 
 	@Test
 	public void isAbstract_onType() {
 		assertFalse(aTypeInfo.isAbstract());
+		assertFalse(aTypeInfo.isAbstract());
 	}
 
 	@Test
@@ -956,7 +968,7 @@ public class ClassInfoTest {
 		assertFalse(pTypeInfo.isNotAbstract());
 		assertFalse(pTypeDimensionalInfo.isNotAbstract());
 		assertFalse(pTypeGenericInfo.isNotAbstract());
-		assertFalse(pTypeGenericArgInfo.isNotAbstract());
+		assertTrue(pTypeGenericArgInfo.isNotAbstract());
 	}
 
 	@Test
@@ -987,6 +999,7 @@ public class ClassInfoTest {
 	@Test
 	public void isNotMemberClass_onType() {
 		assertFalse(aTypeInfo.isNotMemberClass());
+		assertTrue(pTypeGenericArgInfo.isNotMemberClass());
 	}
 
 	@Test
@@ -1007,6 +1020,42 @@ public class ClassInfoTest {
 	}
 
 	@Test
+	public void isLocalClass() {
+		class F implements Function<Object,String>{
+			@Override
+			public String apply(Object t) {
+				return null;
+			}
+		}
+		assertFalse(aClass.isLocalClass());
+		assertTrue(of(F.class).isLocalClass());
+	}
+
+	@Test
+	public void isLocalClass_type() {
+		assertFalse(aTypeInfo.isLocalClass());
+		assertFalse(pTypeGenericArgInfo.isLocalClass());
+	}
+
+	@Test
+	public void isNotLocalClass() {
+		class F implements Function<Object,String>{
+			@Override
+			public String apply(Object t) {
+				return null;
+			}
+		}
+		assertTrue(aClass.isNotLocalClass());
+		assertFalse(of(F.class).isNotLocalClass());
+	}
+
+	@Test
+	public void isNotLocalClass_type() {
+		assertTrue(aTypeInfo.isNotLocalClass());
+		assertTrue(pTypeGenericArgInfo.isNotLocalClass());
+	}
+
+	@Test
 	public void isVisible_public() {
 		assertTrue(hPublic.isVisible(Visibility.PUBLIC));
 		assertFalse(hProtected.isVisible(Visibility.PUBLIC));
@@ -1057,6 +1106,7 @@ public class ClassInfoTest {
 	@Test
 	public void isPrimitive_onType() {
 		assertFalse(aTypeInfo.isPrimitive());
+		assertFalse(pTypeGenericArgInfo.isPrimitive());
 	}
 
 	@Test
@@ -1071,7 +1121,7 @@ public class ClassInfoTest {
 		assertTrue(pTypeInfo.isNotPrimitive());
 		assertTrue(pTypeDimensionalInfo.isNotPrimitive());
 		assertTrue(pTypeGenericInfo.isNotPrimitive());
-		assertFalse(pTypeGenericArgInfo.isNotPrimitive());
+		assertTrue(pTypeGenericArgInfo.isNotPrimitive());
 	}
 
 	@Test
@@ -1083,6 +1133,7 @@ public class ClassInfoTest {
 	@Test
 	public void isInterface_onType() {
 		assertFalse(aTypeInfo.isInterface());
+		assertFalse(pTypeGenericArgInfo.isInterface());
 	}
 
 	@Test
@@ -1918,19 +1969,49 @@ public class ClassInfoTest {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@SuppressWarnings("serial")
-	public static class MA extends HashMap<String,Object> {}
-	ClassInfo ma = of(MA.class);
+	public static class MA extends HashMap<String,Integer> {}
+	@SuppressWarnings("serial")
+	public static class MB extends MA {}
+	@SuppressWarnings("serial")
+	public static class MC<K,E> extends HashMap<K,E> {}
+	@SuppressWarnings("serial")
+	public static class MD extends MC<String,Integer> {}
+	@SuppressWarnings("serial")
+	public static class ME extends HashMap<String,HashMap<String,Integer>> {}
+	@SuppressWarnings("serial")
+	public static class MF extends HashMap<String,String[]> {}
+	@SuppressWarnings("serial")
+	public static class MG extends HashMap<String,HashMap<String,Integer>[]> {}
+	@SuppressWarnings({ "serial", "rawtypes" })
+	public static class MH extends HashMap<String,LinkedList[]> {}
+	@SuppressWarnings({ "serial"})
+	public static class MI<X> extends HashMap<String,X[]> {}
+	@SuppressWarnings({ "serial"})
+	public static class MJ<X extends Number> extends HashMap<String,X> {}
+	public class MK {}
+	@SuppressWarnings({ "serial"})
+	public class ML extends HashMap<String,MK> {}
+	public static class MM {
+		@SuppressWarnings({ "serial"})
+		public class MN extends HashMap<String,MM> {}
+	}
+
+
+	ClassInfo ma=of(MA.class), mb=of(MB.class), mc=of(MC.class), md=of(MD.class), me=of(ME.class), mf=of(MF.class), mg=of(MG.class), mh=of(MH.class), mi=of(MI.class), mj=of(MJ.class), ml=of(ML.class), mn=of(MM.MN.class);
 
 	@Test
 	public void getParameterType_simpleMap() {
 		check("String", ma.getParameterType(0, HashMap.class));
-		check("Object", ma.getParameterType(1, HashMap.class));
+		check("Integer", ma.getParameterType(1, HashMap.class));
+		check("String", mb.getParameterType(0, HashMap.class));
+		check("Integer", mb.getParameterType(1, HashMap.class));
 	}
 
 	@Test
 	public void getParameterType_outOfBounds() {
 		try {
 			ma.getParameterType(2, HashMap.class);
+			fail();
 		} catch (IllegalArgumentException e) {
 			assertEquals("Invalid type index. index=2, argsLength=2", e.getMessage());
 		}
@@ -1940,11 +2021,95 @@ public class ClassInfoTest {
 	public void getParameterType_notASubclass() {
 		try {
 			aClass.getParameterType(2, HashMap.class);
+			fail();
 		} catch (IllegalArgumentException e) {
 			assertEquals("Class 'AClass' is not a subclass of parameterized type 'HashMap'", e.getMessage());
 		}
 	}
 
+	@Test
+	public void getParameterType_nullParameterizedType() {
+		try {
+			aClass.getParameterType(2, null);
+			fail();
+		} catch (IllegalArgumentException e) {
+			assertEquals("Parameterized type cannot be null", e.getMessage());
+		}
+	}
+
+	@Test
+	public void getParameterType_notParamerizedType() {
+		try {
+			mb.getParameterType(2, MA.class);
+			fail();
+		} catch (IllegalArgumentException e) {
+			assertEquals("Class 'MA' is not a parameterized type", e.getMessage());
+		}
+	}
+
+	@Test
+	public void getParameterType_unresolvedTypes() {
+		try {
+			mc.getParameterType(1, HashMap.class);
+			fail();
+		} catch (Exception e) {
+			assertEquals("Could not resolve variable 'E' to a type.", e.getMessage());
+		}
+	}
+
+	@Test
+	public void getParameterType_resolvedTypes() {
+		check("Integer", md.getParameterType(1, HashMap.class));
+	}
+
+	@Test
+	public void getParameterType_parameterizedTypeVariable() {
+		check("HashMap", me.getParameterType(1, HashMap.class));
+	}
+
+	@Test
+	public void getParameterType_arrayParameterType() {
+		check("String[]", mf.getParameterType(1, HashMap.class));
+	}
+
+	@Test
+	public void getParameterType_genericArrayTypeParameter() {
+		check("HashMap[]", mg.getParameterType(1, HashMap.class));
+	}
+
+	@Test
+	public void getParameterType_genericArrayTypeParameterWithoutTypes() {
+		check("LinkedList[]", mh.getParameterType(1, HashMap.class));
+	}
+
+	@Test
+	public void getParameterType_unresolvedGenericArrayType() {
+		try {
+			mi.getParameterType(1, HashMap.class);
+		} catch (Exception e) {
+			assertEquals("Could not resolve variable 'X[]' to a type.", e.getMessage());
+		}
+	}
+
+	@Test
+	public void getParameterType_wildcardType() {
+		try {
+			mj.getParameterType(1, HashMap.class);
+		} catch (Exception e) {
+			assertEquals("Could not resolve variable 'X' to a type.", e.getMessage());
+		}
+	}
+
+	@Test
+	public void getParameterType_innerType() {
+		check("MK", ml.getParameterType(1, HashMap.class));
+	}
+
+	@Test
+	public void getParameterType_nestedType() {
+		check("MM", mn.getParameterType(1, HashMap.class));
+	}
+
 	//-----------------------------------------------------------------------------------------------------------------
 	// Other
 	//-----------------------------------------------------------------------------------------------------------------
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Contact.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Contact.java
index aef70ee..b4f9457 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Contact.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Contact.java
@@ -124,7 +124,7 @@ public class Contact extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Contact name(Object value) {
-		return setName(asString(value));
+		return setName(stringify(value));
 	}
 
 	/**
@@ -212,7 +212,7 @@ public class Contact extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Contact email(Object value) {
-		return setEmail(asString(value));
+		return setEmail(stringify(value));
 	}
 
 	/**
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ExternalDocumentation.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ExternalDocumentation.java
index cd925de..ab3873b 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ExternalDocumentation.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ExternalDocumentation.java
@@ -122,7 +122,7 @@ public class ExternalDocumentation extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public ExternalDocumentation description(Object value) {
-		return setDescription(asString(value));
+		return setDescription(stringify(value));
 	}
 
 	/**
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java
index 7a23745..5122ebf 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java
@@ -170,7 +170,7 @@ public class HeaderInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public HeaderInfo description(Object value) {
-		return setDescription(asString(value));
+		return setDescription(stringify(value));
 	}
 
 	/**
@@ -229,7 +229,7 @@ public class HeaderInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public HeaderInfo type(Object value) {
-		return setType(asString(value));
+		return setType(stringify(value));
 	}
 
 	/**
@@ -280,7 +280,7 @@ public class HeaderInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public HeaderInfo format(Object value) {
-		return setFormat(asString(value));
+		return setFormat(stringify(value));
 	}
 
 	/**
@@ -382,7 +382,7 @@ public class HeaderInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public HeaderInfo collectionFormat(Object value) {
-		return setCollectionFormat(asString(value));
+		return setCollectionFormat(stringify(value));
 	}
 
 	/**
@@ -764,7 +764,7 @@ public class HeaderInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public HeaderInfo pattern(Object value) {
-		return setPattern(asString(value));
+		return setPattern(stringify(value));
 	}
 
 	/**
@@ -1049,7 +1049,7 @@ public class HeaderInfo extends SwaggerElement {
 	 */
 	@BeanProperty("$ref")
 	public HeaderInfo setRef(Object value) {
-		ref = StringUtils.asString(value);
+		ref = StringUtils.stringify(value);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Info.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Info.java
index 3d2e7b2..3979280 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Info.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Info.java
@@ -150,7 +150,7 @@ public class Info extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Info title(Object value) {
-		return setTitle(asString(value));
+		return setTitle(stringify(value));
 	}
 
 	/**
@@ -193,7 +193,7 @@ public class Info extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Info description(Object value) {
-		return setDescription(asString(value));
+		return setDescription(stringify(value));
 	}
 
 	/**
@@ -234,7 +234,7 @@ public class Info extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Info termsOfService(Object value) {
-		return setTermsOfService(asString(value));
+		return setTermsOfService(stringify(value));
 	}
 
 	/**
@@ -373,7 +373,7 @@ public class Info extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Info version(Object value) {
-		return setVersion(asString(value));
+		return setVersion(stringify(value));
 	}
 
 
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Items.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Items.java
index 9ccce68..115dd98 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Items.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Items.java
@@ -196,7 +196,7 @@ public class Items extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Items type(Object value) {
-		return setType(asString(value));
+		return setType(stringify(value));
 	}
 
 	/**
@@ -247,7 +247,7 @@ public class Items extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Items format(Object value) {
-		return setFormat(asString(value));
+		return setFormat(stringify(value));
 	}
 
 	/**
@@ -358,7 +358,7 @@ public class Items extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Items collectionFormat(Object value) {
-		return setCollectionFormat(asString(value));
+		return setCollectionFormat(stringify(value));
 	}
 
 	/**
@@ -742,7 +742,7 @@ public class Items extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Items pattern(Object value) {
-		return setPattern(asString(value));
+		return setPattern(stringify(value));
 	}
 
 	/**
@@ -1027,7 +1027,7 @@ public class Items extends SwaggerElement {
 	 */
 	@BeanProperty("$ref")
 	public Items setRef(Object value) {
-		ref = StringUtils.asString(value);
+		ref = StringUtils.stringify(value);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/License.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/License.java
index 4c8c88b..53b8118 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/License.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/License.java
@@ -121,7 +121,7 @@ public class License extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public License name(Object value) {
-		return setName(asString(value));
+		return setName(stringify(value));
 	}
 
 	/**
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Operation.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Operation.java
index cb98a58..59028e5 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Operation.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Operation.java
@@ -320,7 +320,7 @@ public class Operation extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Operation summary(Object value) {
-		return setSummary(asString(value));
+		return setSummary(stringify(value));
 	}
 
 	/**
@@ -363,7 +363,7 @@ public class Operation extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Operation description(Object value) {
-		return setDescription(asString(value));
+		return setDescription(stringify(value));
 	}
 
 	/**
@@ -459,7 +459,7 @@ public class Operation extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Operation operationId(Object value) {
-		return setOperationId(asString(value));
+		return setOperationId(stringify(value));
 	}
 
 	/**
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ParameterInfo.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ParameterInfo.java
index c089c2b..55c7ed1 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ParameterInfo.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ParameterInfo.java
@@ -323,7 +323,7 @@ public class ParameterInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public ParameterInfo name(Object value) {
-		return setName(asString(value));
+		return setName(stringify(value));
 	}
 
 	/**
@@ -387,7 +387,7 @@ public class ParameterInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public ParameterInfo in(Object value) {
-		return setIn(asString(value));
+		return setIn(stringify(value));
 	}
 
 	/**
@@ -432,7 +432,7 @@ public class ParameterInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public ParameterInfo description(Object value) {
-		return setDescription(asString(value));
+		return setDescription(stringify(value));
 	}
 
 	/**
@@ -601,7 +601,7 @@ public class ParameterInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public ParameterInfo type(Object value) {
-		return setType(asString(value));
+		return setType(stringify(value));
 	}
 
 	/**
@@ -650,7 +650,7 @@ public class ParameterInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public ParameterInfo format(Object value) {
-		return setFormat(asString(value));
+		return setFormat(stringify(value));
 	}
 
 	/**
@@ -818,7 +818,7 @@ public class ParameterInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public ParameterInfo collectionFormat(Object value) {
-		return setCollectionFormat(asString(value));
+		return setCollectionFormat(stringify(value));
 	}
 
 	/**
@@ -1175,7 +1175,7 @@ public class ParameterInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public ParameterInfo pattern(Object value) {
-		return setPattern(asString(value));
+		return setPattern(stringify(value));
 	}
 
 	/**
@@ -1456,7 +1456,7 @@ public class ParameterInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public ParameterInfo example(Object value) {
-		example = StringUtils.asString(value);
+		example = StringUtils.stringify(value);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ResponseInfo.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ResponseInfo.java
index 2c4a96b..84891e1 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ResponseInfo.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ResponseInfo.java
@@ -175,7 +175,7 @@ public class ResponseInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public ResponseInfo description(Object value) {
-		return setDescription(asString(value));
+		return setDescription(stringify(value));
 	}
 
 	/**
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SchemaInfo.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SchemaInfo.java
index 273d407..00160e5 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SchemaInfo.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SchemaInfo.java
@@ -217,7 +217,7 @@ public class SchemaInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public SchemaInfo format(Object value) {
-		return setFormat(asString(value));
+		return setFormat(stringify(value));
 	}
 
 	/**
@@ -252,7 +252,7 @@ public class SchemaInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public SchemaInfo title(Object value) {
-		return setTitle(asString(value));
+		return setTitle(stringify(value));
 	}
 
 	/**
@@ -288,7 +288,7 @@ public class SchemaInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public SchemaInfo description(Object value) {
-		return setDescription(asString(value));
+		return setDescription(stringify(value));
 	}
 
 	/**
@@ -609,7 +609,7 @@ public class SchemaInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public SchemaInfo pattern(Object value) {
-		return setPattern(asString(value));
+		return setPattern(stringify(value));
 	}
 
 	/**
@@ -978,7 +978,7 @@ public class SchemaInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public SchemaInfo type(Object value) {
-		return setType(asString(value));
+		return setType(stringify(value));
 	}
 
 	/**
@@ -1211,7 +1211,7 @@ public class SchemaInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public SchemaInfo discriminator(Object value) {
-		return setDiscriminator(asString(value));
+		return setDiscriminator(stringify(value));
 	}
 
 	/**
@@ -1398,7 +1398,7 @@ public class SchemaInfo extends SwaggerElement {
 	 */
 	@BeanProperty("$ref")
 	public SchemaInfo setRef(Object value) {
-		ref = StringUtils.asString(value);
+		ref = StringUtils.stringify(value);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java
index 768fcc4..41cde37 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java
@@ -175,7 +175,7 @@ public class SecurityScheme extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public SecurityScheme type(Object value) {
-		return setType(asString(value));
+		return setType(stringify(value));
 	}
 
 	/**
@@ -216,7 +216,7 @@ public class SecurityScheme extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public SecurityScheme description(Object value) {
-		return setDescription(asString(value));
+		return setDescription(stringify(value));
 	}
 
 	/**
@@ -257,7 +257,7 @@ public class SecurityScheme extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public SecurityScheme name(Object value) {
-		return setName(asString(value));
+		return setName(stringify(value));
 	}
 
 	/**
@@ -308,7 +308,7 @@ public class SecurityScheme extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public SecurityScheme in(Object value) {
-		return setIn(asString(value));
+		return setIn(stringify(value));
 	}
 
 	/**
@@ -363,7 +363,7 @@ public class SecurityScheme extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public SecurityScheme flow(Object value) {
-		return setFlow(asString(value));
+		return setFlow(stringify(value));
 	}
 
 	/**
@@ -406,7 +406,7 @@ public class SecurityScheme extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public SecurityScheme authorizationUrl(Object value) {
-		return setAuthorizationUrl(asString(value));
+		return setAuthorizationUrl(stringify(value));
 	}
 
 	/**
@@ -449,7 +449,7 @@ public class SecurityScheme extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public SecurityScheme tokenUrl(Object value) {
-		return setTokenUrl(asString(value));
+		return setTokenUrl(stringify(value));
 	}
 
 	/**
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Swagger.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Swagger.java
index b74934f..d5c50d5 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Swagger.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Swagger.java
@@ -205,7 +205,7 @@ public class Swagger extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Swagger swagger(Object value) {
-		return setSwagger(asString(value));
+		return setSwagger(stringify(value));
 	}
 
 	/**
@@ -309,7 +309,7 @@ public class Swagger extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Swagger host(Object value) {
-		return setHost(asString(value));
+		return setHost(stringify(value));
 	}
 
 	/**
@@ -356,7 +356,7 @@ public class Swagger extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Swagger basePath(Object value) {
-		return setBasePath(asString(value));
+		return setBasePath(stringify(value));
 	}
 
 	/**
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Tag.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Tag.java
index d754e72..446130f 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Tag.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Tag.java
@@ -126,7 +126,7 @@ public class Tag extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Tag name(Object value) {
-		return setName(asString(value));
+		return setName(stringify(value));
 	}
 
 	/**
@@ -168,7 +168,7 @@ public class Tag extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Tag description(Object value) {
-		return setDescription(asString(value));
+		return setDescription(stringify(value));
 	}
 
 	/**
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Xml.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Xml.java
index 44b54a7..d459013 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Xml.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Xml.java
@@ -146,7 +146,7 @@ public class Xml extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Xml name(Object value) {
-		return setName(asString(value));
+		return setName(stringify(value));
 	}
 
 	/**
@@ -187,7 +187,7 @@ public class Xml extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Xml namespace(Object value) {
-		return setNamespace(asString(value));
+		return setNamespace(stringify(value));
 	}
 
 	/**
@@ -228,7 +228,7 @@ public class Xml extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Xml prefix(Object value) {
-		return setPrefix(asString(value));
+		return setPrefix(stringify(value));
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMap.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMap.java
index 22d71b3..d286e9d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMap.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMap.java
@@ -294,7 +294,7 @@ public class BeanMap<T> extends AbstractMap<String,Object> implements Delegate<T
 	 */
 	@Override /* Map */
 	public Object get(Object property) {
-		String pName = asString(property);
+		String pName = stringify(property);
 		BeanPropertyMeta p = getPropertyMeta(pName);
 		if (p == null)
 			return null;
@@ -311,7 +311,7 @@ public class BeanMap<T> extends AbstractMap<String,Object> implements Delegate<T
 	 * @return The raw property value.
 	 */
 	public Object getRaw(Object property) {
-		String pName = asString(property);
+		String pName = stringify(property);
 		BeanPropertyMeta p = getPropertyMeta(pName);
 		if (p == null)
 			return null;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanRegistry.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanRegistry.java
index cfb2c0c..f0946c2 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanRegistry.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanRegistry.java
@@ -77,7 +77,7 @@ public class BeanRegistry {
 				} else if (ci.isChildOf(Map.class)) {
 					Map<?,?> m = castOrCreate(Map.class, c);
 					for (Map.Entry<?,?> e : m.entrySet()) {
-						String typeName = asString(e.getKey());
+						String typeName = stringify(e.getKey());
 						Object v = e.getValue();
 						ClassMeta<?> val = null;
 						if (v instanceof Type)
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/InvalidDataConversionException.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/InvalidDataConversionException.java
index 7834ed8..933187b 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/InvalidDataConversionException.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/InvalidDataConversionException.java
@@ -56,7 +56,7 @@ public final class InvalidDataConversionException extends FormattedRuntimeExcept
 	 * @param value The value being converted.
 	 */
 	public InvalidDataConversionException(Object value, ClassMeta<?> toType, Exception cause) {
-		this(cause, "Invalid data conversion from type ''{0}'' to type ''{1}''.  Value={2}.", name(value), asString(toType), value(value));
+		this(cause, "Invalid data conversion from type ''{0}'' to type ''{1}''.  Value={2}.", name(value), stringify(toType), value(value));
 	}
 
 	private static String value(Object o) {
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ObjectMap.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ObjectMap.java
index b7940c8..7f47ebb 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ObjectMap.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ObjectMap.java
@@ -818,7 +818,7 @@ public class ObjectMap extends LinkedHashMap<String,Object> {
 		else if (s instanceof Object[])
 			r = ArrayUtils.toStringArray(Arrays.asList((Object[])s));
 		else
-			r = split(asString(s));
+			r = split(stringify(s));
 		return (r.length == 0 ? def : r);
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/UriResolver.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/UriResolver.java
index 48b5252..bcc2205 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/UriResolver.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/UriResolver.java
@@ -103,7 +103,7 @@ public class UriResolver {
 	}
 
 	private String resolve(Object uri, UriResolution res) {
-		String s = asString(uri);
+		String s = stringify(uri);
 		if (isAbsoluteUri(s))
 			return hasDotSegments(s) && res != NONE ? normalize(s) : s;
 		if (res == ROOT_RELATIVE && startsWith(s, '/'))
@@ -147,7 +147,7 @@ public class UriResolver {
 	public Appendable append(Appendable a, Object o) {
 
 		try {
-			String uri = asString(o);
+			String uri = stringify(o);
 			uri = nullIfEmpty(uri);
 			boolean needsNormalize = hasDotSegments(uri) && resolution != null;
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
index 2f96943..cd53fa0 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
@@ -422,7 +422,7 @@ public class HtmlSerializerSession extends XmlSerializerSession {
 				out.attr("style", style);
 			out.cTag();
 			if (link != null)
-				out.oTag(i+3, "a").attrUri("href", link.replace("{#}", asString(value))).cTag();
+				out.oTag(i+3, "a").attrUri("href", link.replace("{#}", stringify(value))).cTag();
 			ContentResult cr = serializeAnything(out, key, keyType, null, null, 2, false);
 			if (link != null)
 				out.eTag("a");
@@ -649,7 +649,7 @@ public class HtmlSerializerSession extends XmlSerializerSession {
 				if (! isDc)
 					out.cTag();
 				if (link != null)
-					out.oTag(i+2, "a").attrUri("href", link.replace("{#}", asString(o))).cTag();
+					out.oTag(i+2, "a").attrUri("href", link.replace("{#}", stringify(o))).cTag();
 				ContentResult cr = serializeAnything(out, o, eType.getElementType(), name, null, 1, false);
 				if (link != null)
 					out.eTag("a");
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ArrayUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ArrayUtils.java
index 9f6e62c..a90d7ef 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ArrayUtils.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ArrayUtils.java
@@ -451,7 +451,7 @@ public final class ArrayUtils {
 		String[] r = new String[c.size()];
 		int i = 0;
 		for (Object o : c)
-			r[i++] = asString(o);
+			r[i++] = stringify(o);
 		return r;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DelegateMap.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DelegateMap.java
index daaf02c..1ab4755 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DelegateMap.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DelegateMap.java
@@ -36,7 +36,7 @@ public class DelegateMap<T extends Map> extends ObjectMap implements Delegate<T>
 	public DelegateMap(T m, BeanSession session) {
 		this.classMeta = session.getClassMetaForObject(m);
 		for (Map.Entry e : (Set<Map.Entry>)m.entrySet())
-			put(StringUtils.asString(e.getKey()), e.getValue());
+			put(StringUtils.stringify(e.getKey()), e.getValue());
 	}
 
 	@Override /* Delegate */
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
index 6b255f5..40876bf 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
@@ -485,7 +485,7 @@ public final class StringUtils {
 		for (int i = 0; i < tokens.length; i++) {
 			if (i > 0)
 				sb.append(d);
-			sb.append(escapeChars(asString(tokens[i]), as));
+			sb.append(escapeChars(stringify(tokens[i]), as));
 		}
 		return sb;
 	}
@@ -541,7 +541,7 @@ public final class StringUtils {
 		AsciiSet as = getEscapeSet(d);
 		StringBuilder sb = new StringBuilder();
 		for (Iterator<?> iter = tokens.iterator(); iter.hasNext();) {
-			sb.append(escapeChars(asString(iter.next()), as));
+			sb.append(escapeChars(stringify(iter.next()), as));
 			if (iter.hasNext())
 				sb.append(d);
 		}
@@ -1574,7 +1574,7 @@ public final class StringUtils {
 	 * @param o The object to convert to a string.
 	 * @return The object converted to a string, or <jk>null</jk> if the object was null.
 	 */
-	public static String asString(Object o) {
+	public static String stringify(Object o) {
 		return (o == null ? null : o.toString());
 	}
 
@@ -1584,14 +1584,14 @@ public final class StringUtils {
 	 * @param o The array of objects to convert to strings.
 	 * @return A new array of objects converted to strings.
 	 */
-	public static String[] asStrings(Object...o) {
+	public static String[] stringifyAll(Object...o) {
 		if (o == null)
 			return null;
 		if (o instanceof String[])
 			return (String[])o;
 		String[] s = new String[o.length];
 		for (int i = 0; i < o.length; i++)
-			s[i] = asString(o[i]);
+			s[i] = stringify(o[i]);
 		return s;
 	}
 
@@ -1815,7 +1815,7 @@ public final class StringUtils {
 	public static String urlEncodePath(Object o) {
 		if (o == null)
 			return null;
-		String s = asString(o);
+		String s = stringify(o);
 
 		boolean needsEncode = false;
 		for (int i = 0; i < s.length() && ! needsEncode; i++)
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/SystemUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/SystemUtils.java
index 7964f7c..ce47e20 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/SystemUtils.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/SystemUtils.java
@@ -79,7 +79,7 @@ public class SystemUtils {
 	public static void setProperty(String key, Object value, boolean overwrite) {
 		if (value != null) {
 			if (System.getProperty(key) == null || overwrite)
-				System.setProperty(key, StringUtils.asString(value));
+				System.setProperty(key, StringUtils.stringify(value));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserSession.java
index 418d388..da52292 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserSession.java
@@ -192,14 +192,14 @@ public class OpenApiParserSession extends UonParserSession {
 							for (Map.Entry<String,Object> e : parse(partType, DEFAULT_SCHEMA, in, CM_ObjectMap).entrySet()) {
 								String key = e.getKey();
 								BeanPropertyMeta bpm = m.getPropertyMeta(key);
-								m.put(key, parse(partType, schema.getProperty(key), asString(e.getValue()), bpm == null ? object() : bpm.getClassMeta()));
+								m.put(key, parse(partType, schema.getProperty(key), stringify(e.getValue()), bpm == null ? object() : bpm.getClassMeta()));
 							}
 							return m.getBean();
 						}
 						Map<String,Object> m = (Map<String,Object>)type.newInstance();
 						for (Map.Entry<String,Object> e : parse(partType, DEFAULT_SCHEMA, in, CM_ObjectMap).entrySet()) {
 							String key = e.getKey();
-							m.put(key, parse(partType, schema.getProperty(key), asString(e.getValue()), object()));
+							m.put(key, parse(partType, schema.getProperty(key), stringify(e.getValue()), object()));
 						}
 						return (T)m;
 					} catch (Exception e1) {
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerSession.java
index 3d81424..a45ae07 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerSession.java
@@ -167,25 +167,25 @@ public class OpenApiSerializerSession extends UonSerializerSession {
 				if (f == HttpPartSchema.Format.UON)
 					out = super.serialize(partType, null, value);
 				else
-					out = asString(toType(value, CM_Boolean));
+					out = stringify(toType(value, CM_Boolean));
 
 			} else if (t == INTEGER) {
 
 				if (f == HttpPartSchema.Format.UON)
 					out = super.serialize(partType, null, value);
 				else if (f == INT64)
-					out = asString(toType(value, CM_Long));
+					out = stringify(toType(value, CM_Long));
 				else
-					out = asString(toType(value, CM_Integer));
+					out = stringify(toType(value, CM_Integer));
 
 			} else if (t == NUMBER) {
 
 				if (f == HttpPartSchema.Format.UON)
 					out = super.serialize(partType, null, value);
 				else if (f == DOUBLE)
-					out = asString(toType(value, CM_Double));
+					out = stringify(toType(value, CM_Double));
 				else
-					out = asString(toType(value, CM_Float));
+					out = stringify(toType(value, CM_Float));
 
 			} else if (t == OBJECT) {
 
@@ -229,7 +229,7 @@ public class OpenApiSerializerSession extends UonSerializerSession {
 			}
 		} else {
 			for (Map.Entry e : (Set<Map.Entry>)((Map)o).entrySet())
-				m.put(asString(e.getKey()), toObject(partType, e.getValue(), s.getProperty(asString(e.getKey()))));
+				m.put(stringify(e.getKey()), toObject(partType, e.getValue(), s.getProperty(stringify(e.getKey()))));
 		}
 		if (isSortMaps())
 			return sort(m);
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/pojotools/PojoSearcher.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/pojotools/PojoSearcher.java
index 1abeffe..739e416 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/pojotools/PojoSearcher.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/pojotools/PojoSearcher.java
@@ -99,7 +99,7 @@ public final class PojoSearcher implements PojoTool<SearchArgs> {
 		RowMatcher(BeanSession bs, Map query) {
 			this.bs = bs;
 			for (Map.Entry e : (Set<Map.Entry>)query.entrySet())
-				entryMatchers.put(asString(e.getKey()), new ColumnMatcher(bs, asString(e.getValue())));
+				entryMatchers.put(stringify(e.getKey()), new ColumnMatcher(bs, stringify(e.getValue())));
 		}
 
 		boolean matches(Object o) {
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflection/ClassInfo.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflection/ClassInfo.java
index 1c87e9b..a1eb6ad 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflection/ClassInfo.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflection/ClassInfo.java
@@ -13,7 +13,6 @@
 package org.apache.juneau.reflection;
 
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.ThrowableUtils.*;
 import static org.apache.juneau.reflection.ClassFlags.*;
 import static org.apache.juneau.internal.CollectionUtils.*;
 
@@ -1142,7 +1141,7 @@ public final class ClassInfo {
 	 * @return <jk>true</jk> if this class doesn't have the {@link Deprecated @Deprecated} annotation on it.
 	 */
 	public boolean isNotDeprecated() {
-		return c != null && ! c.isAnnotationPresent(Deprecated.class);
+		return c == null || ! c.isAnnotationPresent(Deprecated.class);
 	}
 
 	/**
@@ -1160,7 +1159,7 @@ public final class ClassInfo {
 	 * @return <jk>true</jk> if this class is not public.
 	 */
 	public boolean isNotPublic() {
-		return c != null && ! Modifier.isPublic(c.getModifiers());
+		return c == null || ! Modifier.isPublic(c.getModifiers());
 	}
 
 	/**
@@ -1184,7 +1183,7 @@ public final class ClassInfo {
 	 * @return <jk>true</jk> if this class is not static.
 	 */
 	public boolean isNotStatic() {
-		return c != null && ! Modifier.isStatic(c.getModifiers());
+		return c == null || ! Modifier.isStatic(c.getModifiers());
 	}
 
 	/**
@@ -1208,7 +1207,7 @@ public final class ClassInfo {
 	 * @return <jk>true</jk> if this class is not abstract.
 	 */
 	public boolean isNotAbstract() {
-		return c != null && ! Modifier.isAbstract(c.getModifiers());
+		return c == null || ! Modifier.isAbstract(c.getModifiers());
 	}
 
 	/**
@@ -1226,7 +1225,7 @@ public final class ClassInfo {
 	 * @return <jk>true</jk> if this class is a member class.
 	 */
 	public boolean isNotMemberClass() {
-		return c != null && ! c.isMemberClass();
+		return c == null || ! c.isMemberClass();
 	}
 
 	/**
@@ -1253,7 +1252,7 @@ public final class ClassInfo {
 	 * @return <jk>true</jk> if this class is a local class.
 	 */
 	public boolean isNotLocalClass() {
-		return c != null && ! c.isLocalClass();
+		return c == null || ! c.isLocalClass();
 	}
 
 	/**
@@ -1281,7 +1280,7 @@ public final class ClassInfo {
 	 * @return <jk>true</jk> if this is not a primitive class.
 	 */
 	public boolean isNotPrimitive() {
-		return c != null && ! c.isPrimitive();
+		return c == null || ! c.isPrimitive();
 	}
 
 	/**
@@ -1680,10 +1679,9 @@ public final class ClassInfo {
 	 * @param pt The parameterized type class containing the parameterized type to resolve (e.g. <code>HashMap</code>).
 	 * @return The resolved real class.
 	 */
-	@SuppressWarnings("null")
 	public Class<?> getParameterType(int index, Class<?> pt) {
 		if (pt == null)
-			return null;
+			throw new FormattedIllegalArgumentException("Parameterized type cannot be null");
 
 		// We need to make up a mapping of type names.
 		Map<Type,Type> typeMap = new HashMap<>();
@@ -1692,20 +1690,19 @@ public final class ClassInfo {
 			extractTypes(typeMap, cc);
 			cc = cc.getSuperclass();
 			if (cc == null)
-				illegalArg("Class ''{0}'' is not a subclass of parameterized type ''{1}''", c.getSimpleName(), pt.getSimpleName());
+				throw new FormattedIllegalArgumentException("Class ''{0}'' is not a subclass of parameterized type ''{1}''", c.getSimpleName(), pt.getSimpleName());
 		}
 
 		Type gsc = cc.getGenericSuperclass();
 
-		// Not actually a parameterized type.
 		if (! (gsc instanceof ParameterizedType))
-			return Object.class;
+			throw new FormattedIllegalArgumentException("Class ''{0}'' is not a parameterized type", pt.getSimpleName());
 
-		ParameterizedType opt = (ParameterizedType)gsc;
-		Type[] actualTypeArguments = opt.getActualTypeArguments();
-		if (index >= actualTypeArguments.length)
-			illegalArg("Invalid type index. index={0}, argsLength={1}", index, actualTypeArguments.length);
-		Type actualType = opt.getActualTypeArguments()[index];
+		ParameterizedType cpt = (ParameterizedType)gsc;
+		Type[] atArgs = cpt.getActualTypeArguments();
+		if (index >= atArgs.length)
+			throw new FormattedIllegalArgumentException("Invalid type index. index={0}, argsLength={1}", index, atArgs.length);
+		Type actualType = cpt.getActualTypeArguments()[index];
 
 		if (typeMap.containsKey(actualType))
 			actualType = typeMap.get(actualType);
@@ -1714,37 +1711,33 @@ public final class ClassInfo {
 			return (Class<?>)actualType;
 
 		} else if (actualType instanceof GenericArrayType) {
-			Class<?> cmpntType = (Class<?>)((GenericArrayType)actualType).getGenericComponentType();
-			return Array.newInstance(cmpntType, 0).getClass();
-
+			Type gct = ((GenericArrayType)actualType).getGenericComponentType();
+			if (gct instanceof ParameterizedType)
+				return Array.newInstance((Class<?>)((ParameterizedType)gct).getRawType(), 0).getClass();
 		} else if (actualType instanceof TypeVariable) {
 			TypeVariable<?> typeVariable = (TypeVariable<?>)actualType;
 			List<Class<?>> nestedOuterTypes = new LinkedList<>();
 			for (Class<?> ec = cc.getEnclosingClass(); ec != null; ec = ec.getEnclosingClass()) {
-				try {
-					Class<?> outerClass = cc.getClass();
-					nestedOuterTypes.add(outerClass);
-					Map<Type,Type> outerTypeMap = new HashMap<>();
-					extractTypes(outerTypeMap, outerClass);
-					for (Map.Entry<Type,Type> entry : outerTypeMap.entrySet()) {
-						Type key = entry.getKey(), value = entry.getValue();
-						if (key instanceof TypeVariable) {
-							TypeVariable<?> keyType = (TypeVariable<?>)key;
-							if (keyType.getName().equals(typeVariable.getName()) && isInnerClass(keyType.getGenericDeclaration(), typeVariable.getGenericDeclaration())) {
-								if (value instanceof Class)
-									return (Class<?>)value;
-								typeVariable = (TypeVariable<?>)entry.getValue();
-							}
+				Class<?> outerClass = cc.getClass();
+				nestedOuterTypes.add(outerClass);
+				Map<Type,Type> outerTypeMap = new HashMap<>();
+				extractTypes(outerTypeMap, outerClass);
+				for (Map.Entry<Type,Type> entry : outerTypeMap.entrySet()) {
+					Type key = entry.getKey(), value = entry.getValue();
+					if (key instanceof TypeVariable) {
+						TypeVariable<?> keyType = (TypeVariable<?>)key;
+						if (keyType.getName().equals(typeVariable.getName()) && isInnerClass(keyType.getGenericDeclaration(), typeVariable.getGenericDeclaration())) {
+							if (value instanceof Class)
+								return (Class<?>)value;
+							typeVariable = (TypeVariable<?>)entry.getValue();
 						}
 					}
-				} catch (Exception e) {
-					throw new RuntimeException(e);
 				}
 			}
-			throw new FormattedRuntimeException("Could not resolve type: {0}", actualType);
-		} else {
-			throw new FormattedRuntimeException("Invalid type found in resolveParameterType: {0}", actualType);
+		} else if (actualType instanceof ParameterizedType) {
+			return (Class<?>)((ParameterizedType)actualType).getRawType();
 		}
+		throw new FormattedIllegalArgumentException("Could not resolve variable ''{0}'' to a type.", actualType.getTypeName());
 	}
 
 	private static boolean isInnerClass(GenericDeclaration od, GenericDeclaration id) {
diff --git a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MapVar.java b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MapVar.java
index 07b5c0d..06e53dc 100644
--- a/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MapVar.java
+++ b/juneau-core/juneau-svl/src/main/java/org/apache/juneau/svl/MapVar.java
@@ -45,6 +45,6 @@ public abstract class MapVar extends DefaultingVar {
 
 	@Override /* Var */
 	public String resolve(VarResolverSession session, String varVal) {
-		return asString(m.get(varVal));
+		return stringify(m.get(varVal));
 	}
 }
diff --git a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/Microservice.java b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/Microservice.java
index 4ecb6d3..b160d1b 100755
--- a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/Microservice.java
+++ b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/Microservice.java
@@ -627,7 +627,7 @@ public class Microservice implements ConfigEventListener {
 		List<String> l = new ArrayList<>();
 		l.add(command);
 		for (Object a : args)
-			l.add(asString(a));
+			l.add(stringify(a));
 		Args args2 = new Args(l.toArray(new String[l.size()]));
 		try (Scanner in = new Scanner(input); PrintWriter out = new PrintWriter(sw)) {
 			executeCommand(args2, in, out);
diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/NameValuePairs.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/NameValuePairs.java
index f2324ab..8126846 100644
--- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/NameValuePairs.java
+++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/NameValuePairs.java
@@ -65,7 +65,7 @@ public final class NameValuePairs extends LinkedList<NameValuePair> {
 	 * @return This object (for method chaining).
 	 */
 	public NameValuePairs append(String name, Object value) {
-		super.add(new BasicNameValuePair(name, asString(value)));
+		super.add(new BasicNameValuePair(name, stringify(value)));
 		return this;
 	}
 
diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
index 91b9943..b7b4918 100644
--- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
+++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
@@ -1276,7 +1276,7 @@ public class RestClient extends BeanContext implements Closeable {
 	public <T> T getRrpcInterface(final Class<T> interfaceClass, Object restUrl, final Serializer serializer, final Parser parser) {
 
 		if (restUrl == null) {
-			RemoteInterfaceMeta rm = new RemoteInterfaceMeta(interfaceClass, asString(restUrl));
+			RemoteInterfaceMeta rm = new RemoteInterfaceMeta(interfaceClass, stringify(restUrl));
 			String path = rm.getPath();
 			if (path.indexOf("://") == -1) {
 				if (rootUrl == null)
@@ -1286,7 +1286,7 @@ public class RestClient extends BeanContext implements Closeable {
 			restUrl = path;
 		}
 
-		final String restUrl2 = asString(restUrl);
+		final String restUrl2 = stringify(restUrl);
 
 		try {
 			return (T)Proxy.newProxyInstance(
diff --git a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletRequest.java b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletRequest.java
index 59fbbf6..780608c 100644
--- a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletRequest.java
+++ b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletRequest.java
@@ -1027,7 +1027,7 @@ public class MockServletRequest implements HttpServletRequest, MockHttpRequest {
 		if (value == null)
 			headerMap.remove(name);
 		else
-			headerMap.put(name, new String[] {asString(value)});
+			headerMap.put(name, new String[] {stringify(value)});
 		return this;
 	}
 
@@ -1088,7 +1088,7 @@ public class MockServletRequest implements HttpServletRequest, MockHttpRequest {
 	public MockServletRequest formData(String key, Object value) {
 		if (formDataMap == null)
 			formDataMap = new LinkedHashMap<>();
-		String s = asString(value);
+		String s = stringify(value);
 		String[] existing = formDataMap.get(key);
 		if (existing == null)
 			existing = new String[]{s};
@@ -1109,7 +1109,7 @@ public class MockServletRequest implements HttpServletRequest, MockHttpRequest {
 	public MockServletRequest query(String key, Object value) {
 		if (queryData == null)
 			queryData = new LinkedHashMap<>();
-		String s = asString(value);
+		String s = stringify(value);
 		String[] existing = queryData.get(key);
 		if (existing == null)
 			existing = new String[]{s};
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/HtmlDocBuilder.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/HtmlDocBuilder.java
index 1ad2775..a7426fa 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/HtmlDocBuilder.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/HtmlDocBuilder.java
@@ -484,7 +484,7 @@ public class HtmlDocBuilder {
 	private static String[] resolveLinks(Object[] value, String[] prev) {
 		List<String> list = new ArrayList<>();
 		for (Object v : value) {
-			String s = asString(v);
+			String s = stringify(v);
 			if ("INHERIT".equals(s)) {
 				list.addAll(Arrays.asList(prev));
 			} else if (s.indexOf('[') != -1 && INDEXED_LINK_PATTERN.matcher(s).matches()) {
@@ -504,7 +504,7 @@ public class HtmlDocBuilder {
 	private static String[] resolveSet(Object[] value, String[] prev) {
 		Set<String> set = new HashSet<>();
 		for (Object v : value) {
-			String s = asString(v);
+			String s = stringify(v);
 			if ("INHERIT".equals(s)) {
 				if (prev != null)
 					set.addAll(Arrays.asList(prev));
@@ -520,7 +520,7 @@ public class HtmlDocBuilder {
 	private static String[] resolveList(Object[] value, String[] prev) {
 		Set<String> set = new LinkedHashSet<>();
 		for (Object v : value) {
-			String s = asString(v);
+			String s = stringify(v);
 			if ("INHERIT".equals(s)) {
 				if (prev != null)
 					set.addAll(Arrays.asList(prev));
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestFormData.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestFormData.java
index fa66f1c..22e81b7 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestFormData.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestFormData.java
@@ -83,7 +83,7 @@ public class RequestFormData extends LinkedHashMap<String,String[]> {
 				Object value = e.getValue();
 				String[] v = get(key);
 				if (v == null || v.length == 0 || StringUtils.isEmpty(v[0]))
-					put(key, asStrings(value));
+					put(key, stringifyAll(value));
 			}
 		}
 		return this;
@@ -114,7 +114,7 @@ public class RequestFormData extends LinkedHashMap<String,String[]> {
 	 * @param value The parameter value.
 	 */
 	public void put(String name, Object value) {
-		super.put(name, asStrings(value));
+		super.put(name, stringifyAll(value));
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
index 3f1ab0e..7d400ee 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
@@ -79,7 +79,7 @@ public class RequestHeaders extends TreeMap<String,String[]> {
 				Object value = e.getValue();
 				String[] v = get(key);
 				if (v == null || v.length == 0 || StringUtils.isEmpty(v[0]))
-					put(key, asStrings(value));
+					put(key, stringifyAll(value));
 			}
 		}
 		return this;
@@ -217,7 +217,7 @@ public class RequestHeaders extends TreeMap<String,String[]> {
 	 * @param value The header value.
 	 */
 	public void put(String name, Object value) {
-		super.put(name, asStrings(value));
+		super.put(name, stringifyAll(value));
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestQuery.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestQuery.java
index 3397bb6..78c1465 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestQuery.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestQuery.java
@@ -85,7 +85,7 @@ public final class RequestQuery extends LinkedHashMap<String,String[]> {
 				Object value = e.getValue();
 				String[] v = get(key);
 				if (v == null || v.length == 0 || StringUtils.isEmpty(v[0]))
-					put(key, asStrings(value));
+					put(key, stringifyAll(value));
 			}
 		}
 		return this;
@@ -124,7 +124,7 @@ public final class RequestQuery extends LinkedHashMap<String,String[]> {
 		if (value == null)
 			put(name, null);
 		else
-			put(name, asStrings(value));
+			put(name, stringifyAll(value));
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
index 536cae5..def364a 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
@@ -79,7 +79,7 @@ public final class RestResponse extends HttpServletResponseWrapper {
 		this.request = req;
 
 		for (Map.Entry<String,Object> e : context.getDefaultResponseHeaders().entrySet())
-			setHeader(e.getKey(), asString(e.getValue()));
+			setHeader(e.getKey(), stringify(e.getValue()));
 
 		try {
 			String passThroughHeaders = req.getHeader("x-response-headers");
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
index c70c81d..2019ae6 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
@@ -971,7 +971,7 @@ public class MockServletRequest implements HttpServletRequest, MockHttpRequest {
 	 */
 	@Override /* MockHttpRequest */
 	public MockServletRequest header(String name, Object value) {
-		this.headerMap.put(name, new String[] {asString(value)});
+		this.headerMap.put(name, new String[] {stringify(value)});
 		return this;
 	}
 
@@ -1029,7 +1029,7 @@ public class MockServletRequest implements HttpServletRequest, MockHttpRequest {
 	public MockServletRequest formData(String key, Object value) {
 		if (formDataMap == null)
 			formDataMap = new LinkedHashMap<>();
-		String s = asString(value);
+		String s = stringify(value);
 		String[] existing = formDataMap.get(key);
 		if (existing == null)
 			existing = new String[]{s};
@@ -1050,7 +1050,7 @@ public class MockServletRequest implements HttpServletRequest, MockHttpRequest {
 	public MockServletRequest query(String key, Object value) {
 		if (queryData == null)
 			queryData = new LinkedHashMap<>();
-		String s = asString(value);
+		String s = stringify(value);
 		String[] existing = queryData.get(key);
 		if (existing == null)
 			existing = new String[]{s};
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/reshandlers/DefaultHandler.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/reshandlers/DefaultHandler.java
index 08e5c4a..77f683c 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/reshandlers/DefaultHandler.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/reshandlers/DefaultHandler.java
@@ -90,7 +90,7 @@ public class DefaultHandler implements ResponseHandler {
 					if ("*".equals(n) && ho instanceof Map) {
 						@SuppressWarnings("rawtypes") Map m = (Map)ho;
 						for (Object key : m.keySet()) {
-							String k = asString(key);
+							String k = stringify(key);
 							Object v = m.get(key);
 							HttpPartSchema s = hm.getSchema().getProperty(k);
 							res.setHeader(new HttpPart(k, RESPONSE_HEADER, s, hm.getSerializer(req.getPartSerializer()), req.getSerializerSessionArgs(), v));
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestAttributeVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestAttributeVar.java
index 0a17661..86c77ac 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestAttributeVar.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestAttributeVar.java
@@ -80,6 +80,6 @@ public class RequestAttributeVar extends MultipartResolvingVar {
 	@Override /* Parameter */
 	public String resolve(VarResolverSession session, String key) {
 		RestRequest req = session.getSessionObject(RestRequest.class, SESSION_req, true);
-		return asString(req.getAttribute(key));
+		return stringify(req.getAttribute(key));
 	}
 }
\ No newline at end of file