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 2017/06/03 12:01:13 UTC

[3/3] incubator-juneau git commit: Clean up use of internal utilities.

Clean up use of internal utilities.

Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/3bdc0d85
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/3bdc0d85
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/3bdc0d85

Branch: refs/heads/master
Commit: 3bdc0d85a10acfda791dea7a9abb06a901e8ee3f
Parents: 0ccac12
Author: JamesBognar <ja...@apache.org>
Authored: Sat Jun 3 08:01:05 2017 -0400
Committer: JamesBognar <ja...@apache.org>
Committed: Sat Jun 3 08:01:05 2017 -0400

----------------------------------------------------------------------
 .../test/java/org/apache/juneau/TestUtils.java  | 10 +--
 .../juneau/ini/ConfigFileBuilderTest.java       | 24 ++++----
 .../org/apache/juneau/ini/ConfigFileTest.java   | 17 +++---
 .../juneau/json/JsonParserEdgeCasesTest.java    | 18 +++---
 .../juneau/utils/ByteArrayInOutStreamTest.java  |  5 +-
 .../org/apache/juneau/utils/ClassUtilsTest.java | 11 ++--
 .../org/apache/juneau/utils/IOPipeTest.java     |  4 +-
 .../org/apache/juneau/utils/IOUtilsTest.java    |  4 +-
 .../juneau/utils/StringVarResolverTest.java     | 10 +--
 .../java/org/apache/juneau/BeanContext.java     | 32 ++++------
 .../main/java/org/apache/juneau/BeanMeta.java   |  9 +--
 .../org/apache/juneau/BeanPropertyMeta.java     | 29 ++++-----
 .../java/org/apache/juneau/BeanRegistry.java    | 10 +--
 .../java/org/apache/juneau/BeanSession.java     | 10 +--
 .../main/java/org/apache/juneau/ClassMeta.java  | 35 +++++------
 .../org/apache/juneau/CoreObjectBuilder.java    |  8 +--
 .../juneau/InvalidDataConversionException.java  |  9 +--
 .../main/java/org/apache/juneau/ObjectMap.java  |  5 +-
 .../java/org/apache/juneau/PropertyStore.java   | 18 +++---
 .../org/apache/juneau/dto/ResultSetList.java    |  8 ++-
 .../apache/juneau/dto/jsonschema/Sample.java    |  5 +-
 .../apache/juneau/dto/swagger/HeaderInfo.java   |  7 ++-
 .../org/apache/juneau/dto/swagger/Items.java    |  7 ++-
 .../juneau/dto/swagger/ParameterInfo.java       |  9 +--
 .../juneau/dto/swagger/SecurityScheme.java      |  5 +-
 .../juneau/encoders/EncoderGroupBuilder.java    | 26 +++-----
 .../juneau/html/HtmlDocSerializerSession.java   |  4 +-
 .../apache/juneau/html/HtmlParserSession.java   |  8 +--
 .../java/org/apache/juneau/html/HtmlWriter.java |  5 +-
 .../java/org/apache/juneau/http/Accept.java     |  3 +-
 .../org/apache/juneau/http/AcceptCharset.java   |  1 +
 .../java/org/apache/juneau/ini/ConfigFile.java  |  6 +-
 .../apache/juneau/ini/ConfigFileBuilder.java    |  6 +-
 .../org/apache/juneau/ini/ConfigFileImpl.java   |  7 ++-
 .../java/org/apache/juneau/ini/Section.java     |  8 +--
 .../org/apache/juneau/ini/SectionListener.java  |  6 +-
 .../java/org/apache/juneau/ini/XorEncoder.java  | 11 ++--
 .../org/apache/juneau/internal/ClassUtils.java  | 14 +++--
 .../org/apache/juneau/json/JsonClassMeta.java   |  4 +-
 .../java/org/apache/juneau/json/JsonParser.java |  5 +-
 .../juneau/msgpack/MsgPackInputStream.java      |  5 +-
 .../java/org/apache/juneau/parser/Parser.java   |  6 +-
 .../juneau/parser/ParserGroupBuilder.java       | 12 ++--
 .../org/apache/juneau/parser/ParserSession.java | 31 +++++-----
 .../juneau/plaintext/PlainTextParser.java       |  5 +-
 .../juneau/remoteable/RemoteMethodArg.java      |  8 +--
 .../juneau/remoteable/RemoteableMeta.java       |  5 +-
 .../juneau/remoteable/RemoteableMethodMeta.java |  5 +-
 .../serializer/OutputStreamSerializer.java      |  5 +-
 .../apache/juneau/serializer/Serializer.java    |  8 ++-
 .../serializer/SerializerGroupBuilder.java      | 12 ++--
 .../juneau/serializer/SerializerSession.java    | 14 ++---
 .../org/apache/juneau/svl/DefaultingVar.java    |  4 +-
 .../org/apache/juneau/svl/MultipartVar.java     |  4 +-
 .../apache/juneau/svl/VarResolverBuilder.java   | 12 +---
 .../apache/juneau/svl/VarResolverContext.java   | 14 ++---
 .../transform/AnnotationBeanFilterBuilder.java  |  7 ++-
 .../org/apache/juneau/transform/BeanFilter.java |  7 ++-
 .../juneau/transform/BeanFilterBuilder.java     |  4 +-
 .../org/apache/juneau/transform/PojoSwap.java   | 11 ++--
 .../juneau/transforms/ByteArrayBase64Swap.java  |  7 ++-
 .../apache/juneau/transforms/CalendarSwap.java  |  9 +--
 .../org/apache/juneau/transforms/DateSwap.java  |  9 +--
 .../apache/juneau/transforms/ReaderSwap.java    |  5 +-
 .../transforms/XMLGregorianCalendarSwap.java    |  5 +-
 .../java/org/apache/juneau/uon/UonParser.java   |  5 +-
 .../java/org/apache/juneau/uon/UonUtils.java    |  4 +-
 .../juneau/urlencoding/UrlEncodingParser.java   | 11 ++--
 .../urlencoding/UrlEncodingSerializer.java      | 11 ++--
 .../main/java/org/apache/juneau/utils/Args.java |  7 ++-
 .../java/org/apache/juneau/utils/IOPipe.java    | 24 ++++----
 .../org/apache/juneau/utils/ManifestFile.java   |  7 ++-
 .../org/apache/juneau/utils/MessageBundle.java  |  5 +-
 .../org/apache/juneau/utils/MetadataMap.java    |  5 +-
 .../java/org/apache/juneau/utils/PojoQuery.java |  5 +-
 .../org/apache/juneau/utils/ProcBuilder.java    |  9 ++-
 .../org/apache/juneau/xml/XmlClassMeta.java     | 12 ++--
 .../org/apache/juneau/xml/XmlParserSession.java |  4 +-
 .../apache/juneau/xml/XmlSchemaSerializer.java  |  5 +-
 .../apache/juneau/xml/XmlSerializerSession.java |  7 ++-
 .../java/org/apache/juneau/xml/XmlUtils.java    |  4 +-
 .../juneau/examples/rest/SqlQueryResource.java  |  4 +-
 .../rest/TestMultiPartFormPostsTest.java        |  4 +-
 .../apache/juneau/examples/rest/TestUtils.java  |  7 ++-
 .../juneau/microservice/Microservice.java       |  6 +-
 .../juneau/microservice/RestMicroservice.java   | 18 +++---
 .../resources/LogEntryFormatter.java            |  6 +-
 .../microservice/resources/LogsResource.java    |  6 +-
 .../org/apache/juneau/rest/client/RestCall.java | 14 +++--
 .../juneau/rest/client/RestCallException.java   |  9 +--
 .../apache/juneau/rest/client/RestClient.java   | 11 ++--
 .../juneau/rest/client/RestClientBuilder.java   |  4 +-
 .../juneau/rest/client/RestRequestEntity.java   |  7 ++-
 .../org/apache/juneau/rest/client/SSLOpts.java  |  4 +-
 .../apache/juneau/rest/jaxrs/BaseProvider.java  |  6 +-
 .../rest/test/CharsetEncodingsResource.java     |  5 +-
 .../juneau/rest/test/FormDataResource.java      |  5 +-
 .../apache/juneau/rest/test/GroupsResource.java |  5 +-
 .../juneau/rest/test/NoParserInputResource.java |  9 +--
 .../apache/juneau/rest/test/ParamsResource.java |  7 ++-
 .../juneau/rest/test/ParsersResource.java       | 10 +--
 .../juneau/rest/test/AcceptCharsetTest.java     |  4 +-
 .../juneau/rest/test/CharsetEncodingsTest.java  | 16 ++---
 .../org/apache/juneau/rest/test/ConfigTest.java |  4 +-
 .../apache/juneau/rest/test/ContentTest.java    | 13 ++--
 .../org/apache/juneau/rest/test/GzipTest.java   |  4 +-
 .../juneau/rest/test/RequestBeanProxyTest.java  | 15 ++---
 .../apache/juneau/rest/test/RestUtilsTest.java  | 64 ++++++++++----------
 .../java/org/apache/juneau/rest/CallMethod.java | 22 +++----
 .../juneau/rest/ClientVersionMatcher.java       |  4 +-
 .../org/apache/juneau/rest/ReaderResource.java  |  8 ++-
 .../org/apache/juneau/rest/RequestBody.java     | 11 ++--
 .../org/apache/juneau/rest/RequestFormData.java |  4 +-
 .../org/apache/juneau/rest/RequestHeaders.java  |  7 ++-
 .../org/apache/juneau/rest/RequestQuery.java    |  4 +-
 .../org/apache/juneau/rest/RestCallHandler.java |  4 +-
 .../java/org/apache/juneau/rest/RestConfig.java |  6 +-
 .../org/apache/juneau/rest/RestContext.java     | 45 ++++++++------
 .../apache/juneau/rest/RestInfoProvider.java    |  4 +-
 .../org/apache/juneau/rest/RestRequest.java     |  6 +-
 .../juneau/rest/RestResourceResolver.java       |  7 ++-
 .../org/apache/juneau/rest/StreamResource.java  | 10 +--
 .../juneau/rest/response/RedirectHandler.java   |  5 +-
 .../rest/vars/SerializedRequestAttrVar.java     |  5 +-
 124 files changed, 615 insertions(+), 566 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core-test/src/test/java/org/apache/juneau/TestUtils.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/TestUtils.java b/juneau-core-test/src/test/java/org/apache/juneau/TestUtils.java
index c53e3bf..13ff54f 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/TestUtils.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/TestUtils.java
@@ -12,6 +12,9 @@
 // ***************************************************************************************************************************
 package org.apache.juneau;
 
+import static org.apache.juneau.internal.StringUtils.*;
+import static org.apache.juneau.internal.IOUtils.*;
+
 import java.io.*;
 import java.lang.reflect.*;
 import java.text.*;
@@ -24,7 +27,6 @@ import javax.xml.transform.dom.*;
 import javax.xml.transform.stream.*;
 import javax.xml.validation.*;
 
-import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.transforms.*;
@@ -259,7 +261,7 @@ public class TestUtils {
 		if (is == null) {
 			is = new FileInputStream(path);
 		}
-		String e = IOUtils.read(is);
+		String e = read(is);
 		e = e.replaceAll("\r", "");
 		if (path.endsWith(".xml")) {
 			e = e.replaceAll("(?s)\\<\\!\\-\\-(.*)\\-\\-\\>\\s*", "");
@@ -281,7 +283,7 @@ public class TestUtils {
 
 	public static void debugOut(Object o) {
 		try {
-			System.err.println(StringUtils.decodeHex(JsonSerializer.DEFAULT_LAX.serialize(o))); // NOT DEBUG
+			System.err.println(decodeHex(JsonSerializer.DEFAULT_LAX.serialize(o))); // NOT DEBUG
 		} catch (SerializeException e) {
 			e.printStackTrace();
 		}
@@ -442,7 +444,7 @@ public class TestUtils {
 		if (o instanceof String)
 			return (String)o;
 		if (o instanceof byte[])
-			return new String((byte[])o, IOUtils.UTF8);
+			return new String((byte[])o, UTF8);
 		return o.toString();
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileBuilderTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileBuilderTest.java b/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileBuilderTest.java
index 3d34086..b0d4e2e 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileBuilderTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileBuilderTest.java
@@ -14,10 +14,12 @@ package org.apache.juneau.ini;
 
 import static org.apache.juneau.TestUtils.*;
 import static org.junit.Assert.*;
+import static org.apache.juneau.internal.FileUtils.*;
+import static org.apache.juneau.internal.StringUtils.*;
+import static org.apache.juneau.internal.IOUtils.*;
 
 import java.io.*;
 
-import org.apache.juneau.internal.*;
 import org.apache.juneau.svl.*;
 import org.junit.*;
 
@@ -29,14 +31,14 @@ public class ConfigFileBuilderTest {
 
 	@BeforeClass
 	public static void setup() {
-		tempDir = new File(System.getProperty("java.io.tmpdir"), StringUtils.generateUUID(12));
-		FileUtils.mkdirs(tempDir, true);
+		tempDir = new File(System.getProperty("java.io.tmpdir"), generateUUID(12));
+		mkdirs(tempDir, true);
 		TEMP_DIR = new String[]{tempDir.getAbsolutePath()};
 	}
 
 	@AfterClass
 	public static void teardown() {
-		FileUtils.delete(tempDir);
+		delete(tempDir);
 	}
 
 	/**
@@ -55,7 +57,7 @@ public class ConfigFileBuilderTest {
 		assertTrue(f.exists());
 
 		cf.save();
-		assertTextEquals("[Test]|A = a|", IOUtils.read(f));
+		assertTextEquals("[Test]|A = a|", read(f));
 
 		cf = b1.build("TestGet.cfg");
 		assertObjectEquals("{'default':{},Test:{A:'a'}}", cf);
@@ -64,7 +66,7 @@ public class ConfigFileBuilderTest {
 		cf = b1.build(new StringReader(("[Test]"+NL+"A = a"+NL)));
 		assertObjectEquals("{'default':{},Test:{A:'a'}}", cf);
 
-		b1.charset(IOUtils.UTF8);
+		b1.charset(UTF8);
 		cf = b1.build("TestGet.cfg");
 		assertObjectEquals("{'default':{},Test:{A:'a'}}", cf);
 	}
@@ -95,8 +97,8 @@ public class ConfigFileBuilderTest {
 
 		f = new File(tempDir, "TestGet.cfg");
 		String NL = System.getProperty("line.separator");
-		IOUtils.write(f, new StringReader("[Test]"+NL+"A = b"+NL));
-		FileUtils.modifyTimestamp(f);
+		write(f, new StringReader("[Test]"+NL+"A = b"+NL));
+		modifyTimestamp(f);
 
 		cf.loadIfModified();
 		assertEquals("b", cf.getString("Test/A"));
@@ -178,16 +180,16 @@ public class ConfigFileBuilderTest {
 
 		ConfigFileBuilder.main(new String[]{"createBatchEnvFile", "-configFile", configFile.getAbsolutePath(), "-envFile", envFile.getAbsolutePath()});
 		String expected = "rem c1|rem c2|rem c3||set x1 = 1|set x2 = true|set x3 = null|rem c4|set s1_k1 = 1|rem c5 foo=bar|set s1_k2 = true|set s1_k3 = null|";
-		String actual = IOUtils.read(envFile);
+		String actual = read(envFile);
 		assertTextEquals(expected, actual);
 
 		ConfigFileBuilder.main(new String[]{"createShellEnvFile", "-configFile", configFile.getAbsolutePath(), "-envFile", envFile.getAbsolutePath()});
 		expected = "# c1|# c2|# c3||export x1=\"1\"|export x2=\"true\"|export x3=\"null\"|# c4|export s1_k1=\"1\"|# c5 foo=bar|export s1_k2=\"true\"|export s1_k3=\"null\"|";
-		actual = IOUtils.read(envFile);
+		actual = read(envFile);
 		assertTextEquals(expected, actual);
 
 		ConfigFileBuilder.main(new String[]{"setVals", "-configFile", configFile.getAbsolutePath(), "-vals", "x1=2", "s1/k1=2", "s2/k1=3"});
-		FileUtils.modifyTimestamp(configFile);
+		modifyTimestamp(configFile);
 		cf.loadIfModified();
 		assertObjectEquals("{'default':{x1:'2',x2:'true',x3:'null'},s1:{k1:'2',k2:'true',k3:'null'},s2:{k1:'3'}}", cf);
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileTest.java b/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileTest.java
index c4b77b3..683d2fc 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileTest.java
@@ -14,6 +14,8 @@ package org.apache.juneau.ini;
 
 import static org.apache.juneau.TestUtils.*;
 import static org.junit.Assert.*;
+import static org.apache.juneau.internal.IOUtils.*;
+import static org.apache.juneau.internal.FileUtils.*;
 
 import java.io.*;
 import java.net.*;
@@ -22,7 +24,6 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.svl.*;
@@ -442,14 +443,14 @@ public class ConfigFileTest {
 		assertTrue(cfw.isEncoded("s1/foo"));
 		cf.save();
 		String expected = "[s1]||foo* = {AwwJVhwUQFZEMg==}|";
-		String actual = IOUtils.read(new FileReader(f));
+		String actual = read(new FileReader(f));
 		assertTextEquals(expected, actual);
 		cf.load();
 		assertEquals("mypassword", cf.getString("s1/foo"));
 		assertEquals("mypassword", cfw.getString("s1/foo"));
 
-		IOUtils.write(f, new StringReader("[s1]\nfoo* = mypassword2\n"));
-		FileUtils.modifyTimestamp(f);
+		write(f, new StringReader("[s1]\nfoo* = mypassword2\n"));
+		modifyTimestamp(f);
 		cf.loadIfModified();
 		assertTrue(cf.isEncoded("s1/foo"));
 		assertEquals("mypassword2", cf.getString("s1/foo"));
@@ -602,8 +603,8 @@ public class ConfigFileTest {
 	@Test
 	public void testListeners() throws Exception {
 		ConfigFile[] cff = {
-			configFileBuilder.build(FileUtils.createTempFile("ConfigFileTest.cfg")).addLines(null, "a1=1").addLines("B", "b1=1"),
-			configFileBuilder.build(FileUtils.createTempFile("ConfigFileTest.cfg")).addLines(null, "a1=1").addLines("B", "b1=1").getResolving(VarResolver.DEFAULT)
+			configFileBuilder.build(createTempFile("ConfigFileTest.cfg")).addLines(null, "a1=1").addLines("B", "b1=1"),
+			configFileBuilder.build(createTempFile("ConfigFileTest.cfg")).addLines(null, "a1=1").addLines("B", "b1=1").getResolving(VarResolver.DEFAULT)
 		};
 
 		for (ConfigFile cf : cff) {
@@ -2123,7 +2124,7 @@ public class ConfigFileTest {
 
 		assertTextEquals("a = a,|\tb,|\tc|[A]|a = a,|\tb,|\tc|", cf);
 		cf.save();
-		assertTextEquals("a = a,|\tb,|\tc|[A]|a = a,|\tb,|\tc|", IOUtils.read(f));
+		assertTextEquals("a = a,|\tb,|\tc|[A]|a = a,|\tb,|\tc|", read(f));
 
 		cf.load();
 		assertEquals("a,\nb,\nc", cf.getString("a"));
@@ -2146,7 +2147,7 @@ public class ConfigFileTest {
 
 		assertTextEquals("a = a,\\u0023b,\\u003Dc|[A]|a = a,\\u0023b,\\u003Dc|", cf);
 		cf.save();
-		assertTextEquals("a = a,\\u0023b,\\u003Dc|[A]|a = a,\\u0023b,\\u003Dc|", IOUtils.read(f));
+		assertTextEquals("a = a,\\u0023b,\\u003Dc|[A]|a = a,\\u0023b,\\u003Dc|", read(f));
 
 		cf.load();
 		assertEquals("a,#b,=c", cf.getString("a"));

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core-test/src/test/java/org/apache/juneau/json/JsonParserEdgeCasesTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/json/JsonParserEdgeCasesTest.java b/juneau-core-test/src/test/java/org/apache/juneau/json/JsonParserEdgeCasesTest.java
index 0f6316f..b5ab64b 100644
--- a/juneau-core-test/src/test/java/org/apache/juneau/json/JsonParserEdgeCasesTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/json/JsonParserEdgeCasesTest.java
@@ -12,12 +12,14 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.json;
 
+import static org.apache.juneau.internal.StringUtils.*;
+import static org.apache.juneau.internal.IOUtils.*;
+
 import static org.junit.Assert.*;
 
 import java.io.*;
 import java.util.*;
 
-import org.apache.juneau.internal.*;
 import org.apache.juneau.parser.*;
 import org.junit.*;
 import org.junit.runner.*;
@@ -30,7 +32,7 @@ public class JsonParserEdgeCasesTest {
 	@Parameterized.Parameters
 	public static Collection<Object[]> getPairs() {
 		return Arrays.asList(new Object[][] {
-			{ 0, "is_structure_500_nested_arrays", StringUtils.repeat(500, "[") + StringUtils.repeat(500, "]"), null },
+			{ 0, "is_structure_500_nested_arrays", repeat(500, "[") + repeat(500, "]"), null },
 			{ 1, "ix_object_key_lone_2nd_surrogate", "7B225C7544464141223A307D"/*{"buDFAA":0}*/, null },
 			{ 2, "ix_string_1st_surrogate_but_2nd_missing", "5B225C7544414441225D"/*["buDADA"]*/, null },
 			{ 3, "ix_string_1st_valid_surrogate_2nd_invalid", "5B225C75443838385C7531323334225D"/*["buD888bu1234"]*/, null },
@@ -187,8 +189,8 @@ public class JsonParserEdgeCasesTest {
 			{ 154, "n_structure_unclosed_array_unfinished_false", "[ true, fals", "Unrecognized syntax" },
 			{ 155, "n_structure_unclosed_array_unfinished_true", "[ false, tru", "Unrecognized syntax" },
 			{ 156, "n_structure_unclosed_object", "{\"asd\":\"asd\"", "Could not find '}'" },
-			{ 157, "ns_structure_100000_opening_arrays", StringUtils.repeat(100000, "["), "Depth too deep" },
-			{ 158, "ns_structure_open_array_object", StringUtils.repeat(50000, "[{\"\":"), "Depth too deep" },
+			{ 157, "ns_structure_100000_opening_arrays", repeat(100000, "["), "Depth too deep" },
+			{ 158, "ns_structure_open_array_object", repeat(50000, "[{\"\":"), "Depth too deep" },
 			{ 159, "nx_array_a_invalid_utf8", "5B61E55D"/*[a[fffd]]*/, null },
 			{ 160, "nx_array_invalid_utf8", "5BFF5D"/*[[fffd]]*/, null },
 			{ 161, "nx_array_newlines_unclosed", "5B2261222C0A340A2C312C"/*["a",[a]4[a],1,*/, null },
@@ -358,8 +360,8 @@ public class JsonParserEdgeCasesTest {
 
 	public JsonParserEdgeCasesTest(Integer testNum, String name, String json, String errorText) throws Exception {
 		this.name = name;
-		this.json = name.charAt(1) == 'x' ? StringUtils.fromHex(json) : json;
-		this.jsonReadable = name.charAt(1) == 'x' ? StringUtils.fromHexToUTF8(json) : json;
+		this.json = name.charAt(1) == 'x' ? fromHex(json) : json;
+		this.jsonReadable = name.charAt(1) == 'x' ? fromHexToUTF8(json) : json;
 		this.expected = name.charAt(0);
 		this.errorText = errorText;
 	}
@@ -455,9 +457,9 @@ public class JsonParserEdgeCasesTest {
 				String contents = specials.get(n);
 				if (contents == null) {
 					if (n.charAt(1) == 'x')
-						contents = '"' + StringUtils.toHex(IOUtils.readBytes(fc)) + '"' + "/*" + StringUtils.decodeHex(IOUtils.read(fc)).replaceAll("\\\\u", "bu") + "*/";
+						contents = '"' + toHex(readBytes(fc)) + '"' + "/*" + decodeHex(read(fc)).replaceAll("\\\\u", "bu") + "*/";
 					else
-						contents = '"' + IOUtils.read(fc).replaceAll("\"", "\\\\\"").trim() + '"';
+						contents = '"' + read(fc).replaceAll("\"", "\\\\\"").trim() + '"';
 				}
 				String errorText = errors.get(n);
 				if (errorText != null)

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core-test/src/test/java/org/apache/juneau/utils/ByteArrayInOutStreamTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/utils/ByteArrayInOutStreamTest.java b/juneau-core-test/src/test/java/org/apache/juneau/utils/ByteArrayInOutStreamTest.java
index 0a72c16..bd82240 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/utils/ByteArrayInOutStreamTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/utils/ByteArrayInOutStreamTest.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.utils;
 
 import static org.junit.Assert.*;
+import static org.apache.juneau.internal.IOUtils.*;
 
 import java.io.*;
 
@@ -27,9 +28,9 @@ public class ByteArrayInOutStreamTest {
 	//====================================================================================================
 	@Test
 	public void testBasic() throws Exception {
-		InputStream is = new ByteArrayInputStream("foobar".getBytes(IOUtils.UTF8));
+		InputStream is = new ByteArrayInputStream("foobar".getBytes(UTF8));
 		ByteArrayInOutStream baios = new ByteArrayInOutStream();
 		IOPipe.create(is, baios).run();
-		assertEquals("foobar", IOUtils.read(baios.getInputStream()));
+		assertEquals("foobar", read(baios.getInputStream()));
 	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core-test/src/test/java/org/apache/juneau/utils/ClassUtilsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/utils/ClassUtilsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/utils/ClassUtilsTest.java
index 8b5ad42..c333fa7 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/utils/ClassUtilsTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/utils/ClassUtilsTest.java
@@ -19,7 +19,6 @@ import static org.junit.Assert.*;
 
 import java.lang.annotation.*;
 
-import org.apache.juneau.internal.*;
 import org.junit.*;
 
 @SuppressWarnings("javadoc")
@@ -159,11 +158,11 @@ public class ClassUtilsTest {
 	// getMethodAnnotation
 	//====================================================================================================
 	@Test
-	public void getMethodAnnotation() throws Exception {
-		assertEquals("a1", ClassUtils.getMethodAnnotation(TestAnnotation.class, CI3.class.getMethod("a1")).value());
-		assertEquals("a2b", ClassUtils.getMethodAnnotation(TestAnnotation.class, CI3.class.getMethod("a2")).value());
-		assertEquals("a3", ClassUtils.getMethodAnnotation(TestAnnotation.class, CI3.class.getMethod("a3", CharSequence.class)).value());
-		assertEquals("a4", ClassUtils.getMethodAnnotation(TestAnnotation.class, CI3.class.getMethod("a4")).value());
+	public void getMethodAnnotations() throws Exception {
+		assertEquals("a1", getMethodAnnotation(TestAnnotation.class, CI3.class.getMethod("a1")).value());
+		assertEquals("a2b", getMethodAnnotation(TestAnnotation.class, CI3.class.getMethod("a2")).value());
+		assertEquals("a3", getMethodAnnotation(TestAnnotation.class, CI3.class.getMethod("a3", CharSequence.class)).value());
+		assertEquals("a4", getMethodAnnotation(TestAnnotation.class, CI3.class.getMethod("a4")).value());
 	}
 	
 	public static interface CI1 {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core-test/src/test/java/org/apache/juneau/utils/IOPipeTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/utils/IOPipeTest.java b/juneau-core-test/src/test/java/org/apache/juneau/utils/IOPipeTest.java
index 7399ca2..de82158 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/utils/IOPipeTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/utils/IOPipeTest.java
@@ -13,10 +13,10 @@
 package org.apache.juneau.utils;
 
 import static org.junit.Assert.*;
+import static org.apache.juneau.internal.IOUtils.*;
 
 import java.io.*;
 
-import org.apache.juneau.internal.*;
 import org.apache.juneau.utils.IOPipe.*;
 import org.junit.*;
 
@@ -186,7 +186,7 @@ public class IOPipeTest {
 
 		@Override /* Object */
 		public String toString() {
-			return new String(this.toByteArray(), IOUtils.UTF8);
+			return new String(this.toByteArray(), UTF8);
 		}
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core-test/src/test/java/org/apache/juneau/utils/IOUtilsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/utils/IOUtilsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/utils/IOUtilsTest.java
index 0e63e18..11477af 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/utils/IOUtilsTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/utils/IOUtilsTest.java
@@ -13,10 +13,10 @@
 package org.apache.juneau.utils;
 
 import static org.junit.Assert.*;
+import static org.apache.juneau.internal.IOUtils.*;
 
 import java.io.*;
 
-import org.apache.juneau.internal.*;
 import org.junit.*;
 
 @SuppressWarnings("javadoc")
@@ -98,7 +98,7 @@ public class IOUtilsTest {
 
 		@Override /* Object */
 		public String toString() {
-			return new String(this.toByteArray(), IOUtils.UTF8);
+			return new String(this.toByteArray(), UTF8);
 		}
 	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core-test/src/test/java/org/apache/juneau/utils/StringVarResolverTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/utils/StringVarResolverTest.java b/juneau-core-test/src/test/java/org/apache/juneau/utils/StringVarResolverTest.java
index 122dbd6..14d9ed5 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/utils/StringVarResolverTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/utils/StringVarResolverTest.java
@@ -13,8 +13,8 @@
 package org.apache.juneau.utils;
 
 import static org.junit.Assert.*;
+import static org.apache.juneau.internal.StringUtils.*;
 
-import org.apache.juneau.internal.*;
 import org.apache.juneau.svl.*;
 import org.junit.*;
 
@@ -183,7 +183,7 @@ public class StringVarResolverTest {
 		String t;
 
 		t = "$E{PATH}";
-		assertFalse(StringUtils.isEmpty(VarResolver.DEFAULT.resolve(t)));
+		assertFalse(isEmpty(VarResolver.DEFAULT.resolve(t)));
 	}
 
 	//====================================================================================================
@@ -208,7 +208,7 @@ public class StringVarResolverTest {
 		}
 		@Override /* MultipartVar */
 		public String resolve(VarResolverSession session, String[] args) {
-			return StringUtils.join(args, '+');
+			return join(args, '+');
 		}
 	}
 
@@ -225,8 +225,8 @@ public class StringVarResolverTest {
 			try {
 				vrb.vars(c);
 				fail();
-			} catch (IllegalArgumentException e) {
-				assertEquals("Invalid var name.  Must consist of only uppercase and lowercase ASCII letters.", e.getLocalizedMessage());
+			} catch (RuntimeException e) {
+				// OK.
 			}
 		}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanContext.java b/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
index 69fd415..b4d07f9 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
@@ -877,30 +877,22 @@ public class BeanContext extends Context {
 		notBeanPackagePrefixes = l2.toArray(new String[l2.size()]);
 
 		LinkedList<BeanFilter> lbf = new LinkedList<BeanFilter>();
-		try {
-			for (Class<?> c : pm.get(BEAN_beanFilters, Class[].class, new Class[0])) {
-				if (isParentClass(BeanFilter.class, c))
-					lbf.add((BeanFilter)c.newInstance());
-				else if (isParentClass(BeanFilterBuilder.class, c))
-					lbf.add(((BeanFilterBuilder)c.newInstance()).build());
-				else
-					lbf.add(new InterfaceBeanFilterBuilder(c).build());
-			}
-		} catch (Exception e) {
-			throw new RuntimeException(e);
+		for (Class<?> c : pm.get(BEAN_beanFilters, Class[].class, new Class[0])) {
+			if (isParentClass(BeanFilter.class, c))
+				lbf.add(newInstance(BeanFilter.class, c));
+			else if (isParentClass(BeanFilterBuilder.class, c))
+				lbf.add(newInstance(BeanFilterBuilder.class, c).build());
+			else
+				lbf.add(new InterfaceBeanFilterBuilder(c).build());
 		}
 		beanFilters = lbf.toArray(new BeanFilter[0]);
 
 		LinkedList<PojoSwap<?,?>> lpf = new LinkedList<PojoSwap<?,?>>();
-		try {
-			for (Class<?> c : pm.get(BEAN_pojoSwaps, Class[].class, new Class[0])) {
-				if (isParentClass(PojoSwap.class, c))
-					lpf.add((PojoSwap<?,?>)c.newInstance());
-				else
-					lpf.addAll(SurrogateSwap.findPojoSwaps(c));
-			}
-		} catch (Exception e) {
-			throw new RuntimeException(e);
+		for (Class<?> c : pm.get(BEAN_pojoSwaps, Class[].class, new Class[0])) {
+			if (isParentClass(PojoSwap.class, c))
+				lpf.add(newInstance(PojoSwap.class, c));
+			else
+				lpf.addAll(SurrogateSwap.findPojoSwaps(c));
 		}
 		pojoSwaps = lpf.toArray(new PojoSwap[0]);
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/BeanMeta.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanMeta.java b/juneau-core/src/main/java/org/apache/juneau/BeanMeta.java
index be80772..bcbf705 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanMeta.java
@@ -14,6 +14,8 @@ package org.apache.juneau;
 
 import static org.apache.juneau.Visibility.*;
 import static org.apache.juneau.internal.ClassUtils.*;
+import static org.apache.juneau.internal.ReflectionUtils.*;
+import static org.apache.juneau.internal.StringUtils.*;
 
 import java.beans.*;
 import java.io.*;
@@ -21,7 +23,6 @@ import java.lang.reflect.*;
 import java.util.*;
 
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.internal.*;
 import org.apache.juneau.transform.*;
 import org.apache.juneau.utils.*;
 
@@ -174,7 +175,7 @@ public class BeanMeta<T> {
 				}
 				this.beanRegistry = new BeanRegistry(ctx, null, bdClasses.toArray(new Class<?>[bdClasses.size()]));
 
-				for (Bean b : ReflectionUtils.findAnnotationsParentFirst(Bean.class, classMeta.innerClass))
+				for (Bean b : findAnnotationsParentFirst(Bean.class, classMeta.innerClass))
 					if (! b.typePropertyName().isEmpty())
 						typePropertyName = b.typePropertyName();
 				if (typePropertyName == null)
@@ -210,7 +211,7 @@ public class BeanMeta<T> {
 						if (constructor != null)
 							throw new BeanRuntimeException(c, "Multiple instances of '@BeanConstructor' found.");
 						constructor = (Constructor<T>)x;
-						constructorArgs = StringUtils.split(x.getAnnotation(BeanConstructor.class).properties(), ',');
+						constructorArgs = split(x.getAnnotation(BeanConstructor.class).properties(), ',');
 						if (constructorArgs.length != x.getParameterTypes().length)
 							throw new BeanRuntimeException(c, "Number of properties defined in '@BeanConstructor' annotation does not match number of parameters in constructor.");
 						if (! setAccessible(constructor))
@@ -394,7 +395,7 @@ public class BeanMeta<T> {
 			} catch (BeanRuntimeException e) {
 				throw e;
 			} catch (Exception e) {
-				return "Exception:  " + StringUtils.getStackTrace(e);
+				return "Exception:  " + getStackTrace(e);
 			}
 
 			return null;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java b/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
index e520799..c8af40e 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
@@ -16,6 +16,8 @@ import static org.apache.juneau.Visibility.*;
 import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.internal.CollectionUtils.*;
 import static org.apache.juneau.internal.ReflectionUtils.*;
+import static org.apache.juneau.internal.StringUtils.*;
+import static org.apache.juneau.internal.ArrayUtils.*;
 
 import java.lang.annotation.*;
 import java.lang.reflect.*;
@@ -126,7 +128,7 @@ public class BeanPropertyMeta {
 				if (p != null) {
 					swap = getPropertyPojoSwap(p);
 					if (! p.properties().isEmpty())
-						properties = StringUtils.split(p.properties(), ',');
+						properties = split(p.properties(), ',');
 					bdClasses.addAll(Arrays.asList(p.beanDictionary()));
 				}
 			}
@@ -140,7 +142,7 @@ public class BeanPropertyMeta {
 					if (swap == null)
 						swap = getPropertyPojoSwap(p);
 					if (properties != null && ! p.properties().isEmpty())
-						properties = StringUtils.split(p.properties(), ',');
+						properties = split(p.properties(), ',');
 					bdClasses.addAll(Arrays.asList(p.beanDictionary()));
 				}
 			}
@@ -154,7 +156,7 @@ public class BeanPropertyMeta {
 					if (swap == null)
 						swap = getPropertyPojoSwap(p);
 					if (properties != null && ! p.properties().isEmpty())
-						properties = StringUtils.split(p.properties(), ',');
+						properties = split(p.properties(), ',');
 					bdClasses.addAll(Arrays.asList(p.beanDictionary()));
 				}
 			}
@@ -219,18 +221,13 @@ public class BeanPropertyMeta {
 			return new BeanPropertyMeta(this);
 		}
 
-		private PojoSwap getPropertyPojoSwap(BeanProperty p) throws Exception {
+		private static PojoSwap getPropertyPojoSwap(BeanProperty p) throws Exception {
 			Class<?> c = p.swap();
 			if (c == Null.class)
 				return null;
-			try {
-				if (isParentClass(PojoSwap.class, c)) {
-					return (PojoSwap)c.newInstance();
-				}
-				throw new RuntimeException("TODO - Surrogate swaps not yet supported.");
-			} catch (Exception e) {
-				throw new BeanRuntimeException(this.beanMeta.c, "Could not instantiate PojoSwap ''{0}'' for bean property ''{1}''", c.getName(), this.name).initCause(e);
-			}
+			if (isParentClass(PojoSwap.class, c))
+				return newInstance(PojoSwap.class, c);
+			throw new RuntimeException("TODO - Surrogate swaps not yet supported.");
 		}
 
 		BeanPropertyMeta.Builder setGetter(Method getter) {
@@ -548,7 +545,7 @@ public class BeanPropertyMeta {
 						}
 					} else {
 						if (propMap == null) {
-							propMap = (Map)propertyClass.newInstance();
+							propMap = newInstance(Map.class, propertyClass);
 							invokeSetter(bean, pName, propMap);
 						} else {
 							propMap.clear();
@@ -603,7 +600,7 @@ public class BeanPropertyMeta {
 						propList.clear();
 					} else {
 						if (propList == null) {
-							propList = (Collection)propertyClass.newInstance();
+							propList = newInstance(Collection.class, propertyClass);
 							invokeSetter(bean, pName, propList);
 						} else {
 							propList.clear();
@@ -717,7 +714,7 @@ public class BeanPropertyMeta {
 	 * @throws InvocationTargetException Thrown by method invocation.
 	 */
 	protected void setArray(Object bean, List l) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
-		Object array = ArrayUtils.toArray(l, this.rawTypeMeta.getElementType().getInnerClass());
+		Object array = toArray(l, this.rawTypeMeta.getElementType().getInnerClass());
 		invokeSetter(bean, name, array);
 	}
 
@@ -785,7 +782,7 @@ public class BeanPropertyMeta {
 
 					// Copy any existing array values into the temporary list.
 					Object oldArray = invokeGetter(bean, pName);
-					ArrayUtils.copyToList(oldArray, l);
+					copyToList(oldArray, l);
 				}
 
 				// Add new entry to our array.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/BeanRegistry.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanRegistry.java b/juneau-core/src/main/java/org/apache/juneau/BeanRegistry.java
index f966565..c644ec0 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanRegistry.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanRegistry.java
@@ -12,6 +12,8 @@
 // ***************************************************************************************************************************
 package org.apache.juneau;
 
+import static org.apache.juneau.internal.ClassUtils.*;
+
 import java.lang.reflect.*;
 import java.util.*;
 import java.util.concurrent.*;
@@ -57,17 +59,17 @@ public class BeanRegistry {
 	private void addClass(Class<?> c) {
 		try {
 			if (c != null) {
-				if (ClassUtils.isParentClass(Collection.class, c)) {
+				if (isParentClass(Collection.class, c)) {
 					@SuppressWarnings("rawtypes")
-					Collection cc = (Collection)c.newInstance();
+					Collection cc = newInstance(Collection.class, c);
 					for (Object o : cc) {
 						if (o instanceof Class)
 							addClass((Class<?>)o);
 						else
 							throw new BeanRuntimeException("Collection class ''{0}'' passed to BeanRegistry does not contain Class objects.", c.getName());
 					}
-				} else if (ClassUtils.isParentClass(Map.class, c)) {
-					Map<?,?> m = (Map<?,?>)c.newInstance();
+				} else if (isParentClass(Map.class, c)) {
+					Map<?,?> m = newInstance(Map.class, c);
 					for (Map.Entry<?,?> e : m.entrySet()) {
 						String typeName = StringUtils.toString(e.getKey());
 						Object v = e.getValue();

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/BeanSession.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanSession.java b/juneau-core/src/main/java/org/apache/juneau/BeanSession.java
index 1a2baca..81557dc 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanSession.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanSession.java
@@ -15,13 +15,13 @@ package org.apache.juneau;
 import static org.apache.juneau.BeanContext.*;
 import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.internal.ThrowableUtils.*;
+import static org.apache.juneau.internal.StringUtils.*;
 
 import java.lang.reflect.*;
 import java.util.*;
 import java.util.concurrent.atomic.*;
 
 import org.apache.juneau.http.*;
-import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
@@ -482,7 +482,7 @@ public class BeanSession extends Session {
 					return (T)toArray(type, (Collection)value);
 				else if (vt.isArray())
 					return (T)toArray(type, Arrays.asList((Object[])value));
-				else if (StringUtils.startsWith(value.toString(), '['))
+				else if (startsWith(value.toString(), '['))
 					return (T)toArray(type, new ObjectList(value.toString()).setBeanSession(this));
 			}
 
@@ -550,7 +550,7 @@ public class BeanSession extends Session {
 					if (JsonSerializer.DEFAULT_LAX != null)
 						return (T)JsonSerializer.DEFAULT_LAX.serialize(value);
 				} else if (vt.isClass()) {
-					return (T)ClassUtils.getReadableClassName((Class<?>)value);
+					return (T)getReadableClassName((Class<?>)value);
 				}
 				return (T)value.toString();
 			}
@@ -584,7 +584,7 @@ public class BeanSession extends Session {
 					String typeName = m2.getString(getBeanTypePropertyName(type));
 					if (typeName != null) {
 						ClassMeta cm = type.getBeanRegistry().getClassMeta(typeName);
-						if (cm != null && ClassUtils.isParentClass(type.innerClass, cm.innerClass))
+						if (cm != null && isParentClass(type.innerClass, cm.innerClass))
 							return (T)m2.cast(cm);
 					}
 				}
@@ -1030,7 +1030,7 @@ public class BeanSession extends Session {
 	public boolean close() throws BeanRuntimeException {
 		if (super.close()) {
 			if (debug && hasWarnings())
-				throw new BeanRuntimeException("Warnings occurred in session: \n" + StringUtils.join(getWarnings(), "\n"));
+				throw new BeanRuntimeException("Warnings occurred in session: \n" + join(getWarnings(), "\n"));
 			return true;
 		}
 		return false;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java b/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
index e560080..8313709 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
@@ -14,6 +14,7 @@ package org.apache.juneau;
 
 import static org.apache.juneau.ClassMeta.ClassCategory.*;
 import static org.apache.juneau.internal.ClassUtils.*;
+import static org.apache.juneau.internal.ReflectionUtils.*;
 
 import java.io.*;
 import java.lang.reflect.*;
@@ -501,7 +502,7 @@ public final class ClassMeta<T> implements Type {
 							swapConstructor = cs;
 						else if (cc != NUMBER && (Number.class.isAssignableFrom(arg) || (arg.isPrimitive() && (arg == int.class || arg == short.class || arg == long.class || arg == float.class || arg == double.class)))) {
 							numberConstructor = cs;
-							numberConstructorType = ClassUtils.getWrapperIfPrimitive(arg);
+							numberConstructorType = getWrapperIfPrimitive(arg);
 						}
 					}
 				}
@@ -545,9 +546,9 @@ public final class ClassMeta<T> implements Type {
 
 			for (Method m : c.getMethods())
 				if (isPublic(m) && isNotDeprecated(m))
-					publicMethods.put(ClassUtils.getMethodSignature(m), m);
+					publicMethods.put(getMethodSignature(m), m);
 
-			Map<Class<?>,Remoteable> remoteableMap = ReflectionUtils.findAnnotationsMap(Remoteable.class, c);
+			Map<Class<?>,Remoteable> remoteableMap = findAnnotationsMap(Remoteable.class, c);
 			if (! remoteableMap.isEmpty()) {
 				Map.Entry<Class<?>,Remoteable> e = remoteableMap.entrySet().iterator().next();  // Grab the first one.
 				Class<?> ic = e.getKey();
@@ -558,7 +559,7 @@ public final class ClassMeta<T> implements Type {
 					if (isPublic(m)) {
 						RemoteMethod rm = m.getAnnotation(RemoteMethod.class);
 						if (rm != null || ! "ANNOTATED".equals(expose)) {
-							String path = "NAME".equals(methodPaths) ? m.getName() : ClassUtils.getMethodSignature(m);
+							String path = "NAME".equals(methodPaths) ? m.getName() : getMethodSignature(m);
 							remoteableMethods.put(path, m);
 						}
 					}
@@ -677,7 +678,7 @@ public final class ClassMeta<T> implements Type {
 
 		private BeanFilter findBeanFilter() {
 			try {
-				Map<Class<?>,Bean> ba = ReflectionUtils.findAnnotationsMap(Bean.class, innerClass);
+				Map<Class<?>,Bean> ba = findAnnotationsMap(Bean.class, innerClass);
 				if (! ba.isEmpty())
 					return new AnnotationBeanFilterBuilder(innerClass, ba).build();
 			} catch (Exception e) {
@@ -687,20 +688,16 @@ public final class ClassMeta<T> implements Type {
 		}
 
 		private PojoSwap<T,?> findPojoSwap() {
-			try {
-				Pojo p = innerClass.getAnnotation(Pojo.class);
-				if (p != null) {
-					Class<?> c = p.swap();
-					if (c != Null.class) {
-						if (ClassUtils.isParentClass(PojoSwap.class, c))
-							return (PojoSwap<T,?>)c.newInstance();
-						throw new RuntimeException("TODO - Surrogate classes not yet supported.");
-					}
+			Pojo p = innerClass.getAnnotation(Pojo.class);
+			if (p != null) {
+				Class<?> c = p.swap();
+				if (c != Null.class) {
+					if (isParentClass(PojoSwap.class, c))
+						return ClassUtils.newInstance(PojoSwap.class, c);
+					throw new RuntimeException("TODO - Surrogate classes not yet supported.");
 				}
-				return null;
-			} catch (Exception e) {
-				throw new RuntimeException(e);
 			}
+			return null;
 		}
 
 		private ClassMeta<?> findClassMeta(Class<?> c) {
@@ -1612,7 +1609,7 @@ public final class ClassMeta<T> implements Type {
 	 */
 	public boolean isInstance(Object o) {
 		if (o != null)
-			return ClassUtils.isParentClass(this.innerClass, o.getClass());
+			return isParentClass(this.innerClass, o.getClass());
 		return false;
 	}
 
@@ -1622,7 +1619,7 @@ public final class ClassMeta<T> implements Type {
 	 * @return The readable name for this class.
 	 */
 	public String getReadableName() {
-		return ClassUtils.getReadableClassName(this.innerClass);
+		return getReadableClassName(this.innerClass);
 	}
 
 	private static class LocaleAsString {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/CoreObjectBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/CoreObjectBuilder.java b/juneau-core/src/main/java/org/apache/juneau/CoreObjectBuilder.java
index f566a92..f1fb525 100644
--- a/juneau-core/src/main/java/org/apache/juneau/CoreObjectBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/CoreObjectBuilder.java
@@ -13,6 +13,7 @@
 package org.apache.juneau;
 
 import static org.apache.juneau.BeanContext.*;
+import static org.apache.juneau.internal.ClassUtils.*;
 
 import java.beans.*;
 import java.io.*;
@@ -74,12 +75,9 @@ public abstract class CoreObjectBuilder {
 	 * @param c The subclass of {@link CoreObject} to instantiate.
 	 * @return A new object using the settings defined in this builder.
 	 */
+	@SuppressWarnings("unchecked")
 	public <T extends CoreObject> T build(Class<T> c) {
-		try {
-			return c.getConstructor(PropertyStore.class).newInstance(propertyStore);
-		} catch (Exception e) {
-			throw new RuntimeException(e);
-		}
+		return (T)newInstance(CoreObject.class, c, propertyStore);
 	}
 
 	//--------------------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/InvalidDataConversionException.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/InvalidDataConversionException.java b/juneau-core/src/main/java/org/apache/juneau/InvalidDataConversionException.java
index 1336fb0..2b4a0a1 100644
--- a/juneau-core/src/main/java/org/apache/juneau/InvalidDataConversionException.java
+++ b/juneau-core/src/main/java/org/apache/juneau/InvalidDataConversionException.java
@@ -12,9 +12,10 @@
 // ***************************************************************************************************************************
 package org.apache.juneau;
 
+import static org.apache.juneau.internal.ClassUtils.*;
+
 import java.text.*;
 
-import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 
 /**
@@ -32,7 +33,7 @@ public final class InvalidDataConversionException extends RuntimeException {
 	 * @param value The value being converted.
 	 */
 	public InvalidDataConversionException(Object value, Class<?> toType, Exception cause) {
-		super(MessageFormat.format("Invalid data conversion from type ''{0}'' to type ''{1}''.  Value={2}.", ClassUtils.getReadableClassNameForObject(value), ClassUtils.getReadableClassName(toType), getValue(value)), cause);
+		super(MessageFormat.format("Invalid data conversion from type ''{0}'' to type ''{1}''.  Value={2}.", getReadableClassNameForObject(value), getReadableClassName(toType), getValue(value)), cause);
 	}
 
 	/**
@@ -41,12 +42,12 @@ public final class InvalidDataConversionException extends RuntimeException {
 	 * @param value The value being converted.
 	 */
 	public InvalidDataConversionException(Object value, ClassMeta<?> toType, Exception cause) {
-		super(MessageFormat.format("Invalid data conversion from type ''{0}'' to type ''{1}''.  Value={2}.", ClassUtils.getReadableClassNameForObject(value), toType.toString(), getValue(value)), cause);
+		super(MessageFormat.format("Invalid data conversion from type ''{0}'' to type ''{1}''.  Value={2}.", getReadableClassNameForObject(value), toType.toString(), getValue(value)), cause);
 	}
 
 	private static String getValue(Object o) {
 		if (o instanceof Class)
-			return "'" + ClassUtils.getReadableClassName((Class<?>)o) + "'";
+			return "'" + getReadableClassName((Class<?>)o) + "'";
 		return JsonSerializer.DEFAULT_LAX == null ? "'" + o.toString() + "'" : JsonSerializer.DEFAULT_LAX.toString(o);
 	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java b/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java
index 1cfccb7..8b057ed 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java
@@ -13,6 +13,7 @@
 package org.apache.juneau;
 
 import static org.apache.juneau.internal.ClassUtils.*;
+import static org.apache.juneau.internal.StringUtils.*;
 
 import java.io.*;
 import java.util.*;
@@ -591,7 +592,7 @@ public class ObjectMap extends LinkedHashMap<String,Object> {
 	 */
 	public String[] getStringArray(String key) {
 		String s = get(String.class, key);
-		return (s == null ? new String[0] : StringUtils.split(s, ','));
+		return (s == null ? new String[0] : split(s, ','));
 	}
 
 	/**
@@ -603,7 +604,7 @@ public class ObjectMap extends LinkedHashMap<String,Object> {
 	 */
 	public String[] getStringArray(String key, String[] def) {
 		String s = get(String.class, key);
-		String[] r = (s == null ? new String[0] : StringUtils.split(s, ','));
+		String[] r = (s == null ? new String[0] : split(s, ','));
 		return (r.length == 0 ? def : r);
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/PropertyStore.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/PropertyStore.java b/juneau-core/src/main/java/org/apache/juneau/PropertyStore.java
index 91af225..dc5f064 100644
--- a/juneau-core/src/main/java/org/apache/juneau/PropertyStore.java
+++ b/juneau-core/src/main/java/org/apache/juneau/PropertyStore.java
@@ -13,6 +13,8 @@
 package org.apache.juneau;
 
 import static org.apache.juneau.BeanContext.*;
+import static org.apache.juneau.internal.ClassUtils.*;
+import static org.apache.juneau.internal.StringUtils.*;
 
 import java.lang.reflect.*;
 import java.util.*;
@@ -556,7 +558,7 @@ public final class PropertyStore {
 					ConcurrentHashMap<Class<? extends Context>, Context> cacheForThisConfig = globalContextCache.get(key);
 
 					if (! cacheForThisConfig.containsKey(c))
-						cacheForThisConfig.putIfAbsent(c, c.getConstructor(PropertyStore.class).newInstance(this));
+						cacheForThisConfig.putIfAbsent(c, newInstance(c, c, this));
 
 					contexts.put(c, cacheForThisConfig.get(c));
 				}
@@ -634,7 +636,7 @@ public final class PropertyStore {
 			if (pm != null)
 				return pm.get(name, type, def);
 			String s = System.getProperty(name);
-			if ((! StringUtils.isEmpty(s)) && isBeanSessionAvailable())
+			if ((! isEmpty(s)) && isBeanSessionAvailable())
 				return getBeanSession().convertToType(s, type);
 			return def;
 		} finally {
@@ -1074,19 +1076,19 @@ public final class PropertyStore {
 		}
 
 		void add(Object val) {
-			throw new ConfigException("Cannot add value {0} ({1}) to property ''{2}'' ({3}).", JsonSerializer.DEFAULT_LAX.toString(val), ClassUtils.getReadableClassNameForObject(val), name, type);
+			throw new ConfigException("Cannot add value {0} ({1}) to property ''{2}'' ({3}).", JsonSerializer.DEFAULT_LAX.toString(val), getReadableClassNameForObject(val), name, type);
 		}
 
 		void remove(Object val) {
-			throw new ConfigException("Cannot remove value {0} ({1}) from property ''{2}'' ({3}).", JsonSerializer.DEFAULT_LAX.toString(val), ClassUtils.getReadableClassNameForObject(val), name, type);
+			throw new ConfigException("Cannot remove value {0} ({1}) from property ''{2}'' ({3}).", JsonSerializer.DEFAULT_LAX.toString(val), getReadableClassNameForObject(val), name, type);
 		}
 
 		void put(Object val) {
-			throw new ConfigException("Cannot put value {0} ({1}) to property ''{2}'' ({3}).", JsonSerializer.DEFAULT_LAX.toString(val), ClassUtils.getReadableClassNameForObject(val), name, type);
+			throw new ConfigException("Cannot put value {0} ({1}) to property ''{2}'' ({3}).", JsonSerializer.DEFAULT_LAX.toString(val), getReadableClassNameForObject(val), name, type);
 		}
 
 		void put(Object key, Object val) {
-			throw new ConfigException("Cannot put value {0}({1})->{2}({3}) to property ''{4}'' ({5}).", JsonSerializer.DEFAULT_LAX.toString(key), ClassUtils.getReadableClassNameForObject(key), JsonSerializer.DEFAULT_LAX.toString(val), ClassUtils.getReadableClassNameForObject(val), name, type);
+			throw new ConfigException("Cannot put value {0}({1})->{2}({3}) to property ''{4}'' ({5}).", JsonSerializer.DEFAULT_LAX.toString(key), getReadableClassNameForObject(key), JsonSerializer.DEFAULT_LAX.toString(val), getReadableClassNameForObject(val), name, type);
 		}
 
 		protected Object value() {
@@ -1363,8 +1365,8 @@ public final class PropertyStore {
 		if (o == null)
 			return null;
 		if (o instanceof Class)
-			return ClassUtils.getReadableClassName((Class<?>)o);
-		return ClassUtils.getReadableClassName(o.getClass());
+			return getReadableClassName((Class<?>)o);
+		return getReadableClassName(o.getClass());
 	}
 
 	@Override /* Object */

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/dto/ResultSetList.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/ResultSetList.java b/juneau-core/src/main/java/org/apache/juneau/dto/ResultSetList.java
index d33afec..4f99c0d 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/ResultSetList.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/ResultSetList.java
@@ -12,6 +12,8 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.dto;
 
+import static org.apache.juneau.internal.IOUtils.*;
+
 import java.sql.*;
 import java.util.*;
 
@@ -90,11 +92,11 @@ public final class ResultSetList extends LinkedList<Map<String,Object>> {
 					Clob c = rs.getClob(col);
 					return "clob["+c.length()+"]";
 				case Types.LONGVARBINARY:
-					return "longvarbinary["+IOUtils.count(rs.getBinaryStream(col))+"]";
+					return "longvarbinary["+count(rs.getBinaryStream(col))+"]";
 				case Types.LONGVARCHAR:
-					return "longvarchar["+IOUtils.count(rs.getAsciiStream(col))+"]";
+					return "longvarchar["+count(rs.getAsciiStream(col))+"]";
 				case Types.LONGNVARCHAR:
-					return "longnvarchar["+IOUtils.count(rs.getCharacterStream(col))+"]";
+					return "longnvarchar["+count(rs.getCharacterStream(col))+"]";
 				case Types.TIMESTAMP:
 					return rs.getTimestamp(col);  // Oracle returns com.oracle.TIMESTAMP objects from getObject() which isn't a Timestamp.
 				default:

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/Sample.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/Sample.java b/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/Sample.java
index a9aa605..728cf18 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/Sample.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/Sample.java
@@ -12,10 +12,11 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.dto.jsonschema;
 
+import static org.apache.juneau.internal.IOUtils.*;
+
 import java.io.*;
 import java.net.*;
 
-import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 
 @SuppressWarnings("serial")
@@ -30,7 +31,7 @@ class Sample {
 			public Schema load(URI uri) {
 				Reader r = null;
 				try {
-					r = new InputStreamReader(uri.toURL().openStream(), IOUtils.UTF8);
+					r = new InputStreamReader(uri.toURL().openStream(), UTF8);
 					Schema s = JsonParser.DEFAULT.parse(r, Schema.class);
 					return s;
 				} catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java
index e9ff2d7..434598b 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java
@@ -12,10 +12,11 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.dto.swagger;
 
+import static org.apache.juneau.internal.ArrayUtils.*;
+
 import java.util.*;
 
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 
 /**
@@ -126,7 +127,7 @@ public class HeaderInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public HeaderInfo setType(String type) {
-		if (isStrict() && ! ArrayUtils.contains(type, VALID_TYPES))
+		if (isStrict() && ! contains(type, VALID_TYPES))
 			throw new RuntimeException("Invalid value passed in to setType(String).  Value='"+type+"', valid values=" + JsonSerializer.DEFAULT_LAX.toString(VALID_TYPES));
 		this.type = type;
 		return this;
@@ -252,7 +253,7 @@ public class HeaderInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public HeaderInfo setCollectionFormat(String collectionFormat) {
-		if (isStrict() && ! ArrayUtils.contains(collectionFormat, VALID_COLLECTION_FORMATS))
+		if (isStrict() && ! contains(collectionFormat, VALID_COLLECTION_FORMATS))
 			throw new RuntimeException("Invalid value passed in to setCollectionFormat(String).  Value='"+collectionFormat+"', valid values=" + JsonSerializer.DEFAULT_LAX.toString(VALID_COLLECTION_FORMATS));
 		this.collectionFormat = collectionFormat;
 		return this;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Items.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Items.java b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Items.java
index 2f178f3..ca63e71 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Items.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Items.java
@@ -12,10 +12,11 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.dto.swagger;
 
+import static org.apache.juneau.internal.ArrayUtils.*;
+
 import java.util.*;
 
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 
 /**
@@ -91,7 +92,7 @@ public class Items extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Items setType(String type) {
-		if (isStrict() && ! ArrayUtils.contains(type, VALID_TYPES))
+		if (isStrict() && ! contains(type, VALID_TYPES))
 			throw new RuntimeException("Invalid value passed in to setType(String).  Value='"+type+"', valid values=" + JsonSerializer.DEFAULT_LAX.toString(VALID_TYPES));
 		this.type = type;
 		return this;
@@ -217,7 +218,7 @@ public class Items extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Items setCollectionFormat(String collectionFormat) {
-		if (isStrict() && ! ArrayUtils.contains(collectionFormat, VALID_COLLECTION_FORMATS))
+		if (isStrict() && ! contains(collectionFormat, VALID_COLLECTION_FORMATS))
 			throw new RuntimeException("Invalid value passed in to setCollectionFormat(String).  Value='"+collectionFormat+"', valid values=" + JsonSerializer.DEFAULT_LAX.toString(VALID_COLLECTION_FORMATS));
 		this.collectionFormat = collectionFormat;
 		return this;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/dto/swagger/ParameterInfo.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/ParameterInfo.java b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/ParameterInfo.java
index 868e398..692ad34 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/ParameterInfo.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/ParameterInfo.java
@@ -12,10 +12,11 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.dto.swagger;
 
+import static org.apache.juneau.internal.ArrayUtils.*;
+
 import java.util.*;
 
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 
 /**
@@ -162,7 +163,7 @@ public class ParameterInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public ParameterInfo setIn(String in) {
-		if (isStrict() && ! ArrayUtils.contains(in, VALID_IN))
+		if (isStrict() && ! contains(in, VALID_IN))
 			throw new RuntimeException("Invalid value passed in to setIn(String).  Value='"+in+"', valid values=" + JsonSerializer.DEFAULT_LAX.toString(VALID_IN));
 		this.in = in;
 		if ("path".equals(in))
@@ -316,7 +317,7 @@ public class ParameterInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public ParameterInfo setType(String type) {
-		if (isStrict() && ! ArrayUtils.contains(type, VALID_TYPES))
+		if (isStrict() && ! contains(type, VALID_TYPES))
 			throw new RuntimeException("Invalid value passed in to setType(String).  Value='"+type+"', valid values=" + JsonSerializer.DEFAULT_LAX.toString(VALID_TYPES));
 		this.type = type;
 		return this;
@@ -486,7 +487,7 @@ public class ParameterInfo extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public ParameterInfo setCollectionFormat(String collectionFormat) {
-		if (isStrict() && ! ArrayUtils.contains(collectionFormat, VALID_COLLECTION_FORMATS))
+		if (isStrict() && ! contains(collectionFormat, VALID_COLLECTION_FORMATS))
 			throw new RuntimeException("Invalid value passed in to setCollectionFormat(String).  Value='"+collectionFormat+"', valid values=" + JsonSerializer.DEFAULT_LAX.toString(VALID_COLLECTION_FORMATS));
 		this.collectionFormat = collectionFormat;
 		return this;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java
index 5af2fb1..8856db2 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java
@@ -12,10 +12,11 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.dto.swagger;
 
+import static org.apache.juneau.internal.ArrayUtils.*;
+
 import java.util.*;
 
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 
 /**
@@ -101,7 +102,7 @@ public class SecurityScheme extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public SecurityScheme setType(String type) {
-		if (isStrict() && ! ArrayUtils.contains(type, VALID_TYPES))
+		if (isStrict() && ! contains(type, VALID_TYPES))
 			throw new RuntimeException("Invalid value passed in to setType(String).  Value='"+type+"', valid values=" + JsonSerializer.DEFAULT_LAX.toString(VALID_TYPES));
 		this.type = type;
 		return this;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/encoders/EncoderGroupBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/encoders/EncoderGroupBuilder.java b/juneau-core/src/main/java/org/apache/juneau/encoders/EncoderGroupBuilder.java
index be4546b..4f4de06 100644
--- a/juneau-core/src/main/java/org/apache/juneau/encoders/EncoderGroupBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/encoders/EncoderGroupBuilder.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.encoders;
 
 import static org.apache.juneau.internal.CollectionUtils.*;
+import static org.apache.juneau.internal.ClassUtils.*;
 
 import java.util.*;
 
@@ -46,13 +47,8 @@ public class EncoderGroupBuilder {
 	 * @return This object (for method chaining).
 	 */
 	public EncoderGroupBuilder append(Class<?>...e) {
-		for (int i = e.length-1; i >= 0; i--) {
-			try {
-				encoders.add((Encoder)((Class<?>)e[i]).newInstance());
-			} catch (Exception x) {
-				throw new RuntimeException(x);
-			}
-		}
+		for (int i = e.length-1; i >= 0; i--)
+			encoders.add(newInstance(Encoder.class, e[i]));
 		return this;
 	}
 
@@ -96,17 +92,11 @@ public class EncoderGroupBuilder {
 	 *
 	 * @return A new {@link EncoderGroup} object.
 	 */
-	@SuppressWarnings("unchecked")
 	public EncoderGroup build() {
-		try {
-			List<Encoder> l = new ArrayList<Encoder>();
-			for (Object e : encoders) {
-				l.add(e instanceof Class ? ((Class<? extends Encoder>)e).getConstructor().newInstance() : (Encoder)e);
-			}
-			Collections.reverse(l);
-			return new EncoderGroup(l.toArray(new Encoder[l.size()]));
-		} catch (Exception x) {
-			throw new RuntimeException("Could not instantiate encoder.", x);
-		}
+		List<Encoder> l = new ArrayList<Encoder>();
+		for (Object e : encoders)
+			l.add(e instanceof Class ? newInstance(Encoder.class, (Class<?>)e) : (Encoder)e);
+		Collections.reverse(l);
+		return new EncoderGroup(l.toArray(new Encoder[l.size()]));
 	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
index 5490265..c9c69b7 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
@@ -13,13 +13,13 @@
 package org.apache.juneau.html;
 
 import static org.apache.juneau.html.HtmlDocSerializerContext.*;
+import static org.apache.juneau.internal.StringUtils.*;
 
 import java.lang.reflect.*;
 import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.http.*;
-import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.serializer.*;
 
@@ -69,7 +69,7 @@ public final class HtmlDocSerializerSession extends HtmlSerializerSession {
 			text = op.getString(HTMLDOC_text, ctx.text);
 			links = new LinkedHashMap(op.getMap(HTMLDOC_links, ctx.links));
 			cssUrl = op.getString(HTMLDOC_cssUrl, ctx.cssUrl);
-			cssImports = StringUtils.split(op.getString(HTMLDOC_cssImports, null), ',');
+			cssImports = split(op.getString(HTMLDOC_cssImports, null), ',');
 			nowrap = op.getBoolean(HTMLDOC_cssUrl, ctx.nowrap);
 		}
 	}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/html/HtmlParserSession.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlParserSession.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlParserSession.java
index 2bf5e25..092aa0c 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlParserSession.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlParserSession.java
@@ -14,6 +14,7 @@ package org.apache.juneau.html;
 
 import static javax.xml.stream.XMLStreamConstants.*;
 import static org.apache.juneau.html.HtmlTag.*;
+import static org.apache.juneau.internal.StringUtils.*;
 
 import java.io.*;
 import java.lang.reflect.*;
@@ -23,7 +24,6 @@ import javax.xml.stream.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.http.*;
-import org.apache.juneau.internal.*;
 import org.apache.juneau.xml.*;
 
 /**
@@ -93,7 +93,7 @@ public final class HtmlParserSession extends XmlParserSession {
 			if (et == START_ELEMENT) {
 				if (characters != null) {
 					if (sb.length() == 0)
-						characters = StringUtils.trimStart(characters);
+						characters = trimStart(characters);
 					sb.append(characters);
 					characters = null;
 				}
@@ -135,9 +135,9 @@ public final class HtmlParserSession extends XmlParserSession {
 			} else if (et == END_ELEMENT) {
 				if (characters != null) {
 					if (sb.length() == 0)
-						characters = StringUtils.trimStart(characters);
+						characters = trimStart(characters);
 					if (depth == 0)
-						characters = StringUtils.trimEnd(characters);
+						characters = trimEnd(characters);
 					sb.append(characters);
 					characters = null;
 				}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/html/HtmlWriter.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlWriter.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlWriter.java
index 0ea9ccf..d8648b4 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlWriter.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlWriter.java
@@ -12,10 +12,11 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.html;
 
+import static org.apache.juneau.internal.StringUtils.*;
+
 import java.io.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.internal.*;
 import org.apache.juneau.xml.*;
 
 /**
@@ -89,7 +90,7 @@ public class HtmlWriter extends XmlWriter {
 				else if (test == ' ')
 					append("<sp> </sp>");
 				else
-					append("<sp>&#x").append(StringUtils.toHex(test)).append(";</sp>");
+					append("<sp>&#x").append(toHex(test)).append(";</sp>");
 			}
 			else if (Character.isISOControl(test))
 				append("&#" + (int) test + ";");

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/http/Accept.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/http/Accept.java b/juneau-core/src/main/java/org/apache/juneau/http/Accept.java
index c30d76b..9fa6971 100644
--- a/juneau-core/src/main/java/org/apache/juneau/http/Accept.java
+++ b/juneau-core/src/main/java/org/apache/juneau/http/Accept.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.http;
 
 import static org.apache.juneau.http.Constants.*;
+import static org.apache.juneau.internal.StringUtils.*;
 
 import java.util.*;
 
@@ -232,6 +233,6 @@ public final class Accept {
 
 	@Override /* Object */
 	public String toString() {
-		return StringUtils.join(mediaRanges, ',');
+		return join(mediaRanges, ',');
 	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/http/AcceptCharset.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/http/AcceptCharset.java b/juneau-core/src/main/java/org/apache/juneau/http/AcceptCharset.java
index 28964fd..d208291 100644
--- a/juneau-core/src/main/java/org/apache/juneau/http/AcceptCharset.java
+++ b/juneau-core/src/main/java/org/apache/juneau/http/AcceptCharset.java
@@ -16,6 +16,7 @@ import static org.apache.juneau.http.Constants.*;
 
 import org.apache.juneau.internal.*;
 
+
 /**
  * Represents a parsed <l>Accept-Charset</l> HTTP request header.
  * <p>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFile.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFile.java b/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFile.java
index da2e09f..d2a7e6a 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFile.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFile.java
@@ -16,6 +16,8 @@ import static java.lang.reflect.Modifier.*;
 import static org.apache.juneau.ini.ConfigFileFormat.*;
 import static org.apache.juneau.ini.ConfigUtils.*;
 import static org.apache.juneau.internal.ThrowableUtils.*;
+import static org.apache.juneau.internal.StringUtils.*;
+import static org.apache.juneau.internal.ArrayUtils.*;
 
 import java.beans.*;
 import java.io.*;
@@ -461,7 +463,7 @@ public abstract class ConfigFile implements Map<String,Section> {
 		String s = getString(key);
 		if (s == null)
 			return def;
-		String[] r = StringUtils.isEmpty(s) ? new String[0] : StringUtils.split(s, ',');
+		String[] r = StringUtils.isEmpty(s) ? new String[0] : split(s, ',');
 		return r.length == 0 ? def : r;
 	}
 
@@ -607,7 +609,7 @@ public abstract class ConfigFile implements Map<String,Section> {
 				int mod = m.getModifiers();
 				if (isPublic(mod) && (!isStatic(mod)) && m.getName().startsWith("set") && m.getParameterTypes().length == 1) {
 					Class<?> pt = m.getParameterTypes()[0];
-					if (permittedPropertyTypes == null || permittedPropertyTypes.length == 0 || ArrayUtils.contains(pt, permittedPropertyTypes)) {
+					if (permittedPropertyTypes == null || permittedPropertyTypes.length == 0 || contains(pt, permittedPropertyTypes)) {
 						String propName = Introspector.decapitalize(m.getName().substring(3));
 						Object value = getObject(sectionName, propName, pt);
 						if (value != null) {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileBuilder.java b/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileBuilder.java
index 67a1693..0f50328 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileBuilder.java
@@ -13,12 +13,12 @@
 package org.apache.juneau.ini;
 
 import static org.apache.juneau.ini.ConfigFileFormat.*;
+import static org.apache.juneau.internal.FileUtils.*;
 
 import java.io.*;
 import java.nio.charset.*;
 import java.util.*;
 
-import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
@@ -188,7 +188,7 @@ public class ConfigFileBuilder {
 		File f = new File(path);
 		if (f.isAbsolute()) {
 			if (createIfNotExists)
-				FileUtils.create(f);
+				create(f);
 			if (f.exists())
 				return f;
 			throw new FileNotFoundException("Could not find config file '"+path+"'");
@@ -206,7 +206,7 @@ public class ConfigFileBuilder {
 
 		if (createIfNotExists) {
 			f = new File(searchPaths.get(0).getAbsolutePath() + "/" + path);
-			FileUtils.create(f);
+			create(f);
 			return f;
 		}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileImpl.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileImpl.java b/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileImpl.java
index dc784b5..0e08db2 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileImpl.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileImpl.java
@@ -14,6 +14,7 @@ package org.apache.juneau.ini;
 
 import static org.apache.juneau.ini.ConfigUtils.*;
 import static org.apache.juneau.internal.ThrowableUtils.*;
+import static org.apache.juneau.internal.StringUtils.*;
 
 import java.io.*;
 import java.lang.reflect.*;
@@ -161,7 +162,7 @@ public final class ConfigFileImpl extends ConfigFile {
 							section.addLines(null, lines.toArray(new String[lines.size()]));
 							lines.clear();
 							canAppend = false;
-							String sn = StringUtils.replaceUnicodeSequences(line.substring(line.indexOf('[')+1, line.indexOf(']')).trim());
+							String sn = replaceUnicodeSequences(line.substring(line.indexOf('[')+1, line.indexOf(']')).trim());
 							section = getSection(sn, true).addHeaderComments(section.removeTrailingComments());
 						} else {
 							char c = line.isEmpty() ? 0 : line.charAt(0);
@@ -219,7 +220,7 @@ public final class ConfigFileImpl extends ConfigFile {
 		if (isSimpleType(type))
 			return (T)pBeanSession.convertToType(s, (Class<?>)type);
 
-		char s1 = StringUtils.charAt(s, 0);
+		char s1 = charAt(s, 0);
 		if (s1 != '[' && s1 != '{' && ! "null".equals(s))
 			s = '\'' + s + '\'';
 
@@ -774,7 +775,7 @@ public final class ConfigFileImpl extends ConfigFile {
 	}
 
 	private static void addChange(Set<String> changes, String section, String key, String oldVal, String newVal) {
-		if (! StringUtils.isEquals(oldVal, newVal))
+		if (! isEquals(oldVal, newVal))
 			changes.add(getFullKey(section, key));
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/ini/Section.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ini/Section.java b/juneau-core/src/main/java/org/apache/juneau/ini/Section.java
index 8a53d3a..04a516c 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ini/Section.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ini/Section.java
@@ -14,13 +14,13 @@ package org.apache.juneau.ini;
 
 import static org.apache.juneau.ini.ConfigFileFormat.*;
 import static org.apache.juneau.ini.ConfigUtils.*;
+import static org.apache.juneau.internal.StringUtils.*;
 
 import java.io.*;
 import java.util.*;
 import java.util.concurrent.locks.*;
 
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.internal.*;
 
 /**
  * Defines a section in a config file.
@@ -476,8 +476,8 @@ public class Section implements Map<String,String> {
 					this.lines.add(line);
 				else if (isAssignment(line)) {
 					// Key/value pairs are stored as either ">key" or "*key";
-					String key = StringUtils.replaceUnicodeSequences(line.substring(0, line.indexOf('=')).trim());
-					String val = StringUtils.replaceUnicodeSequences(line.substring(line.indexOf('=')+1).trim());
+					String key = replaceUnicodeSequences(line.substring(0, line.indexOf('=')).trim());
+					String val = replaceUnicodeSequences(line.substring(line.indexOf('=')+1).trim());
 					boolean encoded = key.length() > 1 && key.endsWith("*");
 					if (encoded) {
 						key = key.substring(0, key.lastIndexOf('*'));
@@ -566,7 +566,7 @@ public class Section implements Map<String,String> {
 
 	private void addChange(Set<String> changes, String key, String oldVal, String newVal) {
 		if (changes != null)
-			if (! StringUtils.isEquals(oldVal, newVal))
+			if (! isEquals(oldVal, newVal))
 				changes.add(getFullKey(name, key));
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/ini/SectionListener.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ini/SectionListener.java b/juneau-core/src/main/java/org/apache/juneau/ini/SectionListener.java
index 7ceef7a..4c6c1e4 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ini/SectionListener.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ini/SectionListener.java
@@ -12,9 +12,9 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.ini;
 
-import java.util.*;
+import static org.apache.juneau.internal.StringUtils.*;
 
-import org.apache.juneau.internal.*;
+import java.util.*;
 
 /**
  * Listener that can be used to listen for change events for a specific section in a config file.
@@ -32,7 +32,7 @@ public class SectionListener extends ConfigFileListener {
 	 * @param section The name of the section in the config file to listen to.
 	 */
 	public SectionListener(String section) {
-		isDefault = StringUtils.isEmpty(section);
+		isDefault = isEmpty(section);
 		prefix = isDefault ? null : (section + '/');
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/ini/XorEncoder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ini/XorEncoder.java b/juneau-core/src/main/java/org/apache/juneau/ini/XorEncoder.java
index b844d13..ae2c0db 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ini/XorEncoder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ini/XorEncoder.java
@@ -12,7 +12,8 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.ini;
 
-import org.apache.juneau.internal.*;
+import static org.apache.juneau.internal.StringUtils.*;
+import static org.apache.juneau.internal.IOUtils.*;
 
 /**
  * Simply XOR+Base64 encoder for obscuring passwords and other sensitive data in INI config files.
@@ -28,21 +29,21 @@ public final class XorEncoder implements Encoder {
 
 	@Override /* Encoder */
 	public String encode(String fieldName, String in) {
-		byte[] b = in.getBytes(IOUtils.UTF8);
+		byte[] b = in.getBytes(UTF8);
 		for (int i = 0; i < b.length; i++) {
 				int j = i % key.length();
 			b[i] = (byte)(b[i] ^ key.charAt(j));
 		}
-		return StringUtils.base64Encode(b);
+		return base64Encode(b);
 	}
 
 	@Override /* Encoder */
 	public String decode(String fieldName, String in) {
-		byte[] b = StringUtils.base64Decode(in);
+		byte[] b = base64Decode(in);
 		for (int i = 0; i < b.length; i++) {
 			int j = i % key.length();
 			b[i] = (byte)(b[i] ^ key.charAt(j));
 	}
-		return new String(b, IOUtils.UTF8);
+		return new String(b, UTF8);
 	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/internal/ClassUtils.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/internal/ClassUtils.java b/juneau-core/src/main/java/org/apache/juneau/internal/ClassUtils.java
index f3163d3..ef46ffc 100644
--- a/juneau-core/src/main/java/org/apache/juneau/internal/ClassUtils.java
+++ b/juneau-core/src/main/java/org/apache/juneau/internal/ClassUtils.java
@@ -743,20 +743,22 @@ public final class ClassUtils {
 	/**
 	 * Creates an instance of the specified class without throwing exceptions.
 	 *
-	 * @param c The class to instantiate.
+	 * @param c The class to cast to.
+	 * @param c2 The class to instantiate.
 	 * @param args The arguments to pass to the constructor.
 	 * @return The new class instance, or <jk>null</jk> if the class was <jk>null</jk>.
 	 * @throws RuntimeException if constructor could not be found or called.
 	 */
-	public static <T> T newInstance(Class<T> c, Object...args) {
-		if (c == null)
+	@SuppressWarnings("unchecked")
+	public static <T> T newInstance(Class<T> c, Class<?> c2, Object...args) {
+		if (c2 == null)
 			return null;
 		try {
 			if (args.length == 0)
-				return c.newInstance();
-			return c.getConstructor(getClasses(args)).newInstance(args);
+				return (T)c2.newInstance();
+			return (T)c2.getConstructor(getClasses(args)).newInstance(args);
 		} catch (Exception e) {
-			throw new RuntimeException(e);
+			throw new RuntimeException("Could not instantiate class " + c.getName(), e);
 		}
 	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3bdc0d85/juneau-core/src/main/java/org/apache/juneau/json/JsonClassMeta.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/json/JsonClassMeta.java b/juneau-core/src/main/java/org/apache/juneau/json/JsonClassMeta.java
index 0dff9ba..b274365 100644
--- a/juneau-core/src/main/java/org/apache/juneau/json/JsonClassMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/json/JsonClassMeta.java
@@ -12,6 +12,8 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.json;
 
+import static org.apache.juneau.internal.StringUtils.*;
+
 import org.apache.juneau.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.json.annotation.*;
@@ -33,7 +35,7 @@ public class JsonClassMeta extends ClassMetaExtended {
 		super(cm);
 		this.json = ReflectionUtils.getAnnotation(Json.class, getInnerClass());
 		if (json != null) {
-			wrapperAttr = StringUtils.nullIfEmpty(json.wrapperAttr());
+			wrapperAttr = nullIfEmpty(json.wrapperAttr());
 		} else {
 			wrapperAttr = null;
 		}