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 872ba15  Remove unnecessary methods from ClassUtils.
872ba15 is described below

commit 872ba15031b97b0a5af7f4e09e058c5012fa0be8
Author: JamesBognar <[email protected]>
AuthorDate: Fri Sep 6 12:32:41 2019 -0400

    Remove unnecessary methods from ClassUtils.
---
 .../src/test/java/org/apache/juneau/ValueTest.java |  5 +-
 .../juneau/httppart/HttpPartSchemaTest_Body.java   |  6 +-
 .../httppart/HttpPartSchemaTest_FormData.java      |  6 +-
 .../juneau/httppart/HttpPartSchemaTest_Header.java |  5 +-
 .../juneau/httppart/HttpPartSchemaTest_Path.java   |  5 +-
 .../juneau/httppart/HttpPartSchemaTest_Query.java  |  5 +-
 .../HttpPartSchemaTest_ResponseHeader.java         |  5 +-
 .../apache/juneau/reflection/MethodInfoTest.java   |  2 +-
 .../main/java/org/apache/juneau/BeanContext.java   | 14 ++--
 .../src/main/java/org/apache/juneau/BeanMeta.java  |  7 +-
 .../java/org/apache/juneau/BeanPropertyMeta.java   | 28 ++++----
 .../main/java/org/apache/juneau/BeanRegistry.java  |  2 +-
 .../src/main/java/org/apache/juneau/ClassMeta.java | 14 ++--
 .../main/java/org/apache/juneau/ContextCache.java  |  2 +-
 .../main/java/org/apache/juneau/PropertyStore.java |  7 +-
 .../src/main/java/org/apache/juneau/Session.java   |  3 +-
 .../src/main/java/org/apache/juneau/Value.java     |  6 +-
 .../juneau/httppart/HttpPartSchemaBuilder.java     |  5 +-
 .../juneau/httppart/bean/RequestBeanMeta.java      |  4 +-
 .../juneau/httppart/bean/ResponseBeanMeta.java     |  2 +-
 .../org/apache/juneau/internal/ArrayUtils.java     |  5 +-
 .../org/apache/juneau/internal/ClassUtils.java     | 78 ++--------------------
 .../java/org/apache/juneau/internal/HttpUtils.java |  4 +-
 .../java/org/apache/juneau/reflect/MethodInfo.java | 14 ++++
 .../java/org/apache/juneau/reflect/Mutaters.java   |  5 +-
 .../apache/juneau/remote/RemoteInterfaceMeta.java  |  4 +-
 .../juneau/serializer/SerializerSession.java       |  4 +-
 .../org/apache/juneau/svl/VarResolverContext.java  |  2 +-
 .../apache/juneau/transform/BeanFilterBuilder.java |  5 +-
 .../org/apache/juneau/transform/BuilderSwap.java   | 13 ++--
 .../transform/InterfaceBeanFilterBuilder.java      |  5 +-
 .../java/org/apache/juneau/transform/PojoSwap.java | 12 ++--
 .../org/apache/juneau/transform/SurrogateSwap.java |  4 +-
 .../java/org/apache/juneau/utils/MetadataMap.java  |  5 +-
 .../microservice/jetty/JettyMicroservice.java      |  6 +-
 .../juneau/rest/client/RestCallException.java      |  5 +-
 .../org/apache/juneau/rest/client/RestClient.java  |  5 +-
 .../rest/client/remote/RemoteMethodMeta.java       |  3 +-
 .../rest/client/remote/RemoteResourceMeta.java     |  4 +-
 .../apache/juneau/rest/BasicRestInfoProvider.java  |  9 ++-
 .../java/org/apache/juneau/rest/RestContext.java   |  3 +-
 .../org/apache/juneau/rest/RestContextBuilder.java |  5 +-
 .../juneau/rest/RestMethodContextBuilder.java      |  4 +-
 .../java/org/apache/juneau/rest/RestServlet.java   |  3 +-
 .../org/apache/juneau/rest/SwaggerGenerator.java   |  5 +-
 45 files changed, 129 insertions(+), 216 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ValueTest.java 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ValueTest.java
index 988742b..7c21027 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ValueTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ValueTest.java
@@ -13,11 +13,10 @@
 package org.apache.juneau;
 
 import static org.junit.Assert.*;
-import static org.apache.juneau.internal.ClassUtils.*;
-
 import java.lang.reflect.*;
 import java.util.*;
 
+import org.apache.juneau.reflect.*;
 import org.junit.*;
 
 /**
@@ -60,6 +59,6 @@ public class ValueTest {
        @Test
        public void testOnParameterType() throws Exception {
                Type t = Value.getParameterType(C.class.getMethod("m1", 
Value.class), 0);
-               assertEquals("List<Integer>", getClassInfo(t).getShortName());
+               assertEquals("List<Integer>", ClassInfo.of(t).getShortName());
        }
 }
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Body.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Body.java
index 223daed..9aa6d4a 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Body.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Body.java
@@ -16,8 +16,6 @@ import static org.junit.Assert.*;
 
 import static org.apache.juneau.testutils.TestUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.ClassUtils.*;
-
 import org.apache.juneau.*;
 import org.apache.juneau.http.annotation.*;
 import org.apache.juneau.jsonschema.annotation.Items;
@@ -74,7 +72,7 @@ public class HttpPartSchemaTest_Body {
 
        @Test
        public void a03_basic_onParameter() throws Exception {
-               ParamInfo mpi = getMethodInfo(A03.class.getMethod("a", 
String.class)).getParam(0);
+               ParamInfo mpi = MethodInfo.of(A03.class.getMethod("a", 
String.class)).getParam(0);
                HttpPartSchema s = HttpPartSchema.create().apply(Body.class, 
mpi).noValidate().build();
                assertTrue(s.isRequired());
        }
@@ -95,7 +93,7 @@ public class HttpPartSchemaTest_Body {
 
        @Test
        public void a04_basic_onParameterAndClass() throws Exception {
-               ParamInfo mpi = getMethodInfo(A04.class.getMethod("a", 
A02.class)).getParam(0);
+               ParamInfo mpi = MethodInfo.of(A04.class.getMethod("a", 
A02.class)).getParam(0);
                HttpPartSchema s = HttpPartSchema.create().apply(Body.class, 
mpi).noValidate().build();
                assertTrue(s.isRequired());
        }
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_FormData.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_FormData.java
index 6c0c14a..853864c 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_FormData.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_FormData.java
@@ -16,8 +16,6 @@ import static org.junit.Assert.*;
 
 import static org.apache.juneau.testutils.TestUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.ClassUtils.*;
-
 import org.apache.juneau.*;
 import org.apache.juneau.http.annotation.*;
 import org.apache.juneau.jsonschema.annotation.Items;
@@ -136,7 +134,7 @@ public class HttpPartSchemaTest_FormData {
 
        @Test
        public void a03_basic_onParameter() throws Exception {
-               ParamInfo mpi = getMethodInfo(A03.class.getMethod("a", 
String.class)).getParam(0);
+               ParamInfo mpi = MethodInfo.of(A03.class.getMethod("a", 
String.class)).getParam(0);
                HttpPartSchema s = 
HttpPartSchema.create().apply(FormData.class, mpi).noValidate().build();
                assertEquals("x", s.getName());
                assertEquals(HttpPartSchema.Type.NUMBER, s.getType());
@@ -193,7 +191,7 @@ public class HttpPartSchemaTest_FormData {
 
        @Test
        public void a04_basic_onParameterAndClass() throws Exception {
-               ParamInfo mpi = getMethodInfo(A04.class.getMethod("a", 
A01.class)).getParam(0);
+               ParamInfo mpi = MethodInfo.of(A04.class.getMethod("a", 
A01.class)).getParam(0);
                HttpPartSchema s = 
HttpPartSchema.create().apply(FormData.class, mpi).noValidate().build();
                assertEquals("y", s.getName());
                assertEquals(HttpPartSchema.Type.INTEGER, s.getType());
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Header.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Header.java
index a8a40d9..0a04701 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Header.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Header.java
@@ -15,7 +15,6 @@ package org.apache.juneau.httppart;
 import static org.junit.Assert.*;
 import static org.junit.Assert.assertEquals;
 import static org.apache.juneau.testutils.TestUtils.*;
-import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
 
 import org.apache.juneau.*;
@@ -136,7 +135,7 @@ public class HttpPartSchemaTest_Header {
 
        @Test
        public void a03_basic_onParameter() throws Exception {
-               ParamInfo mpi = getMethodInfo(A03.class.getMethod("a", 
String.class)).getParam(0);
+               ParamInfo mpi = MethodInfo.of(A03.class.getMethod("a", 
String.class)).getParam(0);
                HttpPartSchema s = HttpPartSchema.create().apply(Header.class, 
mpi).noValidate().build();
                assertEquals("x", s.getName());
                assertEquals(HttpPartSchema.Type.NUMBER, s.getType());
@@ -193,7 +192,7 @@ public class HttpPartSchemaTest_Header {
 
        @Test
        public void a04_basic_onParameterAndClass() throws Exception {
-               ParamInfo mpi = getMethodInfo(A04.class.getMethod("a", 
A01.class)).getParam(0);
+               ParamInfo mpi = MethodInfo.of(A04.class.getMethod("a", 
A01.class)).getParam(0);
                HttpPartSchema s = HttpPartSchema.create().apply(Header.class, 
mpi).noValidate().build();
                assertEquals("y", s.getName());
                assertEquals(HttpPartSchema.Type.INTEGER, s.getType());
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Path.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Path.java
index 67fc14a..04baf09 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Path.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Path.java
@@ -15,7 +15,6 @@ package org.apache.juneau.httppart;
 import static org.junit.Assert.*;
 import static org.junit.Assert.assertEquals;
 import static org.apache.juneau.testutils.TestUtils.*;
-import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
 
 import org.apache.juneau.*;
@@ -118,7 +117,7 @@ public class HttpPartSchemaTest_Path {
 
        @Test
        public void a03_basic_onParameter() throws Exception {
-               ParamInfo mpi = getMethodInfo(A03.class.getMethod("a", 
String.class)).getParam(0);
+               ParamInfo mpi = MethodInfo.of(A03.class.getMethod("a", 
String.class)).getParam(0);
                HttpPartSchema s = HttpPartSchema.create().apply(Path.class, 
mpi).noValidate().build();
                assertEquals("x", s.getName());
                assertEquals(HttpPartSchema.Type.NUMBER, s.getType());
@@ -163,7 +162,7 @@ public class HttpPartSchemaTest_Path {
 
        @Test
        public void a04_basic_onParameterAndClass() throws Exception {
-               ParamInfo mpi = getMethodInfo(A04.class.getMethod("a", 
A01.class)).getParam(0);
+               ParamInfo mpi = MethodInfo.of(A04.class.getMethod("a", 
A01.class)).getParam(0);
                HttpPartSchema s = HttpPartSchema.create().apply(Path.class, 
mpi).noValidate().build();
                assertEquals("y", s.getName());
                assertEquals(HttpPartSchema.Type.INTEGER, s.getType());
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Query.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Query.java
index 8c5e750..a7a0d75 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Query.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Query.java
@@ -15,7 +15,6 @@ package org.apache.juneau.httppart;
 import static org.junit.Assert.*;
 import static org.junit.Assert.assertEquals;
 import static org.apache.juneau.testutils.TestUtils.*;
-import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
 
 import org.apache.juneau.*;
@@ -136,7 +135,7 @@ public class HttpPartSchemaTest_Query {
 
        @Test
        public void a03_basic_onParameter() throws Exception {
-               ParamInfo mpi = getMethodInfo(A03.class.getMethod("a", 
String.class)).getParam(0);
+               ParamInfo mpi = MethodInfo.of(A03.class.getMethod("a", 
String.class)).getParam(0);
                HttpPartSchema s = HttpPartSchema.create().apply(Query.class, 
mpi).noValidate().build();
                assertEquals("x", s.getName());
                assertEquals(HttpPartSchema.Type.NUMBER, s.getType());
@@ -193,7 +192,7 @@ public class HttpPartSchemaTest_Query {
 
        @Test
        public void a04_basic_onParameterAndClass() throws Exception {
-               ParamInfo mpi = getMethodInfo(A04.class.getMethod("a", 
A01.class)).getParam(0);
+               ParamInfo mpi = MethodInfo.of(A04.class.getMethod("a", 
A01.class)).getParam(0);
                HttpPartSchema s = HttpPartSchema.create().apply(Query.class, 
mpi).noValidate().build();
                assertEquals("y", s.getName());
                assertEquals(HttpPartSchema.Type.INTEGER, s.getType());
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_ResponseHeader.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_ResponseHeader.java
index 4c6c1bc..6095cc4 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_ResponseHeader.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_ResponseHeader.java
@@ -12,7 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.httppart;
 
-import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
 import static org.apache.juneau.testutils.TestUtils.*;
 import static org.junit.Assert.*;
@@ -130,7 +129,7 @@ public class HttpPartSchemaTest_ResponseHeader {
 
        @Test
        public void a03_basic_onParameter() throws Exception {
-               ParamInfo mpi = getMethodInfo(A03.class.getMethod("a", 
String.class)).getParam(0);
+               ParamInfo mpi = MethodInfo.of(A03.class.getMethod("a", 
String.class)).getParam(0);
                HttpPartSchema s = 
HttpPartSchema.create().apply(ResponseHeader.class, mpi).noValidate().build();
                assertEquals("x", s.getName());
                assertEquals(HttpPartSchema.Type.NUMBER, s.getType());
@@ -183,7 +182,7 @@ public class HttpPartSchemaTest_ResponseHeader {
 
        @Test
        public void a04_basic_onParameterAndClass() throws Exception {
-               ParamInfo mpi = getMethodInfo(A04.class.getMethod("a", 
A01.class)).getParam(0);
+               ParamInfo mpi = MethodInfo.of(A04.class.getMethod("a", 
A01.class)).getParam(0);
                HttpPartSchema s = 
HttpPartSchema.create().apply(ResponseHeader.class, mpi).noValidate().build();
                assertEquals("y", s.getName());
                assertEquals(HttpPartSchema.Type.INTEGER, s.getType());
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/MethodInfoTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/MethodInfoTest.java
index c37097c..7341438 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/MethodInfoTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/MethodInfoTest.java
@@ -132,7 +132,7 @@ public class MethodInfoTest {
        @Test
        public void of_null() {
                check(null, MethodInfo.of(null));
-               check(null, MethodInfo.of(null, null, null));
+               check(null, MethodInfo.of((ClassInfo)null, null, null));
        }
 
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
index 8899cad..641d820 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
@@ -2010,7 +2010,7 @@ public class BeanContext extends Context {
 
                LinkedList<BeanFilter> lbf = new LinkedList<>();
                for (Class<?> c : getClassListProperty(BEAN_beanFilters)) {
-                       ClassInfo ci = getClassInfo(c);
+                       ClassInfo ci = ClassInfo.of(c);
                        if (ci.isChildOf(BeanFilter.class))
                                lbf.add(castOrCreate(BeanFilter.class, c));
                        else if (ci.isChildOf(BeanFilterBuilder.class))
@@ -2023,7 +2023,7 @@ public class BeanContext extends Context {
                LinkedList<PojoSwap<?,?>> lpf = new LinkedList<>();
                for (Object o : getListProperty(BEAN_pojoSwaps, Object.class)) {
                        if (o instanceof Class) {
-                               ClassInfo ci = getClassInfo((Class<?>)o);
+                               ClassInfo ci = ClassInfo.of((Class<?>)o);
                                if (ci.isChildOf(PojoSwap.class))
                                        lpf.add(castOrCreate(PojoSwap.class, 
ci.inner()));
                                else if (ci.isChildOf(Surrogate.class))
@@ -2040,7 +2040,7 @@ public class BeanContext extends Context {
 
                Map<String,ClassInfo> icm = new LinkedHashMap<>();
                for (Map.Entry<String,Class<?>> e : 
getClassMapProperty(BEAN_implClasses).entrySet())
-                       icm.put(e.getKey(), getClassInfo(e.getValue()));
+                       icm.put(e.getKey(), ClassInfo.of(e.getValue()));
                implClasses = unmodifiableMap(icm);
 
                Map<String,String[]> m2 = new HashMap<>();
@@ -2192,7 +2192,7 @@ public class BeanContext extends Context {
                                if (p.getName().startsWith(p2))
                                        return true;
                }
-               ClassInfo ci = getClassInfo(c);
+               ClassInfo ci = ClassInfo.of(c);
                for (Class exclude : notBeanClasses)
                        if (ci.isChildOf(exclude))
                                return true;
@@ -2657,7 +2657,7 @@ public class BeanContext extends Context {
        private final <T> BeanFilter findBeanFilter(Class<T> c) {
                if (c != null)
                        for (BeanFilter f : beanFilters)
-                               if 
(getClassInfo(f.getBeanClass()).isParentOf(c))
+                               if 
(ClassInfo.of(f.getBeanClass()).isParentOf(c))
                                        return f;
                return null;
        }
@@ -2716,7 +2716,7 @@ public class BeanContext extends Context {
                if (includeProperties.isEmpty())
                        return null;
                String[] s = null;
-               ClassInfo ci = getClassInfo(c);
+               ClassInfo ci = ClassInfo.of(c);
                for (ClassInfo c2 : ci.getAllParents()) {
                        s = includeProperties.get(c2.getFullName());
                        if (s != null)
@@ -2738,7 +2738,7 @@ public class BeanContext extends Context {
                if (excludeProperties.isEmpty())
                        return null;
                String[] s = null;
-               ClassInfo ci = getClassInfo(c);
+               ClassInfo ci = ClassInfo.of(c);
                for (ClassInfo c2 : ci.getAllParents()) {
                        s = excludeProperties.get(c2.getFullName());
                        if (s != null)
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
index 341328c..12b42b8 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
@@ -12,7 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau;
 
-import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.internal.CollectionUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
 import static org.apache.juneau.reflect.ReflectFlags.*;
@@ -554,9 +553,9 @@ public class BeanMeta<T> {
                        this.methodType = type;
                        this.method = method;
                        if (type == MethodType.SETTER)
-                               this.type = 
getClassInfo(method.getParameterTypes()[0]);
+                               this.type = 
ClassInfo.of(method.getParameterTypes()[0]);
                        else
-                               this.type = 
getClassInfo(method.getReturnType());
+                               this.type = 
ClassInfo.of(method.getReturnType());
                }
 
                /*
@@ -767,7 +766,7 @@ public class BeanMeta<T> {
 
        private static void findClasses(Class<?> c, LinkedList<ClassInfo> l, 
Class<?> stopClass) {
                while (c != null && stopClass != c) {
-                       l.addFirst(getClassInfo(c));
+                       l.addFirst(ClassInfo.of(c));
                        for (Class<?> ci : c.getInterfaces())
                                findClasses(ci, l, stopClass);
                        c = c.getSuperclass();
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
index e8b366b..99cfd3d 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
@@ -196,7 +196,7 @@ public final class BeanPropertyMeta {
                        }
 
                        if (getter != null) {
-                               BeanProperty p = 
getMethodInfo(getter).getAnnotation(BeanProperty.class);
+                               BeanProperty p = 
MethodInfo.of(getter).getAnnotation(BeanProperty.class);
                                if (rawTypeMeta == null)
                                        rawTypeMeta = f.resolveClassMeta(p, 
getter.getGenericReturnType(), typeVarImpls);
                                isUri |= (rawTypeMeta.isUri() || 
getter.isAnnotationPresent(org.apache.juneau.annotation.URI.class));
@@ -212,7 +212,7 @@ public final class BeanPropertyMeta {
                        }
 
                        if (setter != null) {
-                               BeanProperty p = 
getMethodInfo(setter).getAnnotation(BeanProperty.class);
+                               BeanProperty p = 
MethodInfo.of(setter).getAnnotation(BeanProperty.class);
                                if (rawTypeMeta == null)
                                        rawTypeMeta = f.resolveClassMeta(p, 
setter.getGenericParameterTypes()[0], typeVarImpls);
                                isUri |= (rawTypeMeta.isUri() || 
setter.isAnnotationPresent(org.apache.juneau.annotation.URI.class));
@@ -270,7 +270,7 @@ public final class BeanPropertyMeta {
                        }
                        if (field != null) {
                                if (isDyna) {
-                                       if (! 
getClassInfo(field.getType()).isChildOf(Map.class))
+                                       if (! 
ClassInfo.of(field.getType()).isChildOf(Map.class))
                                                return false;
                                } else {
                                        if (! ci.isChildOf(field.getType()))
@@ -313,7 +313,7 @@ public final class BeanPropertyMeta {
                                c = s.impl();
                        if (c == Null.class)
                                return null;
-                       ClassInfo ci = getClassInfo(c);
+                       ClassInfo ci = ClassInfo.of(c);
                        if (ci.isChildOf(PojoSwap.class)) {
                                PojoSwap ps = castOrCreate(PojoSwap.class, c);
                                if (ps.forMediaTypes() != null)
@@ -373,11 +373,11 @@ public final class BeanPropertyMeta {
                this.field = b.field;
                this.innerField = b.innerField;
                this.getter = b.getter;
-               this.getterInfo = getMethodInfo(b.getter);
+               this.getterInfo = MethodInfo.of(b.getter);
                this.setter = b.setter;
-               this.setterInfo = getMethodInfo(b.setter);
+               this.setterInfo = MethodInfo.of(b.setter);
                this.extraKeys = b.extraKeys;
-               this.extraKeysInfo = getMethodInfo(b.extraKeys);
+               this.extraKeysInfo = MethodInfo.of(b.extraKeys);
                this.isUri = b.isUri;
                this.beanMeta = b.beanMeta;
                this.beanContext = b.beanContext;
@@ -1067,19 +1067,19 @@ public final class BeanPropertyMeta {
                List<A> l = new LinkedList<>();
                if (field != null) {
                        addIfNotNull(l, field.getAnnotation(a));
-                       getClassInfo(field.getType()).appendAnnotations(l, a);
+                       ClassInfo.of(field.getType()).appendAnnotations(l, a);
                }
                if (getter != null) {
-                       addIfNotNull(l, getMethodInfo(getter).getAnnotation(a));
-                       
getClassInfo(getter.getReturnType()).appendAnnotations(l, a);
+                       addIfNotNull(l, MethodInfo.of(getter).getAnnotation(a));
+                       
ClassInfo.of(getter.getReturnType()).appendAnnotations(l, a);
                }
                if (setter != null) {
-                       addIfNotNull(l, getMethodInfo(setter).getAnnotation(a));
-                       
getClassInfo(setter.getReturnType()).appendAnnotations(l, a);
+                       addIfNotNull(l, MethodInfo.of(setter).getAnnotation(a));
+                       
ClassInfo.of(setter.getReturnType()).appendAnnotations(l, a);
                }
                if (extraKeys != null) {
-                       addIfNotNull(l, 
getMethodInfo(extraKeys).getAnnotation(a));
-                       
getClassInfo(extraKeys.getReturnType()).appendAnnotations(l, a);
+                       addIfNotNull(l, 
MethodInfo.of(extraKeys).getAnnotation(a));
+                       
ClassInfo.of(extraKeys.getReturnType()).appendAnnotations(l, a);
                }
 
                getBeanMeta().getClassMeta().getInfo().appendAnnotations(l, a);
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 bd161af..37cb982 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
@@ -64,7 +64,7 @@ public class BeanRegistry {
        private void addClass(Class<?> c) {
                try {
                        if (c != null) {
-                               ClassInfo ci = getClassInfo(c);
+                               ClassInfo ci = ClassInfo.of(c);
                                if (ci.isChildOf(Collection.class)) {
                                        @SuppressWarnings("rawtypes")
                                        Collection cc = 
castOrCreate(Collection.class, c);
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
index f893ac8..c242b78 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
@@ -141,7 +141,7 @@ public final class ClassMeta<T> implements Type {
        @SuppressWarnings({ "rawtypes", "unchecked" })
        ClassMeta(Class<T> innerClass, BeanContext beanContext, Class<? extends 
T> implClass, BeanFilter beanFilter, PojoSwap<T,?>[] pojoSwaps, PojoSwap<?,?>[] 
childPojoSwaps, Object example) {
                this.innerClass = innerClass;
-               this.info = getClassInfo(innerClass);
+               this.info = ClassInfo.of(innerClass);
                this.beanContext = beanContext;
                this.extMeta = new MetadataMap();
                String notABeanReason = null;
@@ -256,7 +256,7 @@ public final class ClassMeta<T> implements Type {
        @SuppressWarnings("unchecked")
        ClassMeta(ClassMeta<?>[] args) {
                this.innerClass = (Class<T>) Object[].class;
-               this.info = getClassInfo(innerClass);
+               this.info = ClassInfo.of(innerClass);
                this.extMeta = new MetadataMap();
                this.args = args;
                this.implClass = null;
@@ -344,7 +344,7 @@ public final class ClassMeta<T> implements Type {
                        this.beanContext = beanContext;
 
                        this.implClass = implClass;
-                       ClassInfo ici = getClassInfo(implClass);
+                       ClassInfo ici = ClassInfo.of(implClass);
                        this.childPojoSwaps = childPojoSwaps;
                        if (childPojoSwaps == null) {
                                this.childSwapMap = null;
@@ -355,7 +355,7 @@ public final class ClassMeta<T> implements Type {
                        }
 
                        Class<T> c = innerClass;
-                       ci = getClassInfo(c);
+                       ci = ClassInfo.of(c);
 
                        if (c.isPrimitive()) {
                                if (c == Boolean.TYPE)
@@ -704,7 +704,7 @@ public final class ClassMeta<T> implements Type {
                        Class<?> c = s.value();
                        if (c == Null.class)
                                c = s.impl();
-                       ClassInfo ci = getClassInfo(c);
+                       ClassInfo ci = ClassInfo.of(c);
 
                        if (ci.isChildOf(PojoSwap.class)) {
                                PojoSwap ps = castOrCreate(PojoSwap.class, c);
@@ -894,7 +894,7 @@ public final class ClassMeta<T> implements Type {
         */
        @SuppressWarnings({"unchecked"})
        protected static <T> Constructor<? extends T> 
findNoArgConstructor(Class<?> c, Visibility v) {
-               ClassInfo ci = getClassInfo(c);
+               ClassInfo ci = ClassInfo.of(c);
                if (ci.isAbstract())
                        return null;
                boolean isMemberClass = ci.isMemberClass() && ci.isNotStatic();
@@ -960,7 +960,7 @@ public final class ClassMeta<T> implements Type {
                                }
                        }
                        if (exampleMethod != null)
-                               return 
(T)getMethodInfo(exampleMethod).invokeFuzzy(null, session);
+                               return 
(T)MethodInfo.of(exampleMethod).invokeFuzzy(null, session);
                        if (exampleField != null)
                                return (T)exampleField.get(null);
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextCache.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextCache.java
index 31ab308..e7455cb 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextCache.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextCache.java
@@ -146,7 +146,7 @@ public class ContextCache {
                String[] prefixes = prefixCache.get(c);
                if (prefixes == null) {
                        Set<String> ps = new HashSet<>();
-                       for (ClassInfo c2 : getClassInfo(c).getAllParents()) {
+                       for (ClassInfo c2 : ClassInfo.of(c).getAllParents()) {
                                ConfigurableContext cc = 
c2.getAnnotation(ConfigurableContext.class);
                                if (cc != null) {
                                        if (cc.nocache()) {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java
index e3c745b..d0f31c4 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java
@@ -22,6 +22,7 @@ import java.util.*;
 import org.apache.juneau.PropertyStoreBuilder.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
+import org.apache.juneau.reflect.*;
 
 
 /**
@@ -778,7 +779,7 @@ public final class PropertyStore {
                 * @throws ConfigException If value could not be converted.
                 */
                public <T> T as(Class<T> c) {
-                       Class<?> c2 = getClassInfo(c).getPrimitiveWrapper();
+                       Class<?> c2 = ClassInfo.of(c).getPrimitiveWrapper();
                        if (c2 != null)
                                c = (Class<T>)c2;
                        if (c.isInstance(value))
@@ -987,9 +988,9 @@ public final class PropertyStore {
        
//-------------------------------------------------------------------------------------------------------------------
 
        static <T> T instantiate(ResourceResolver resolver, Object outer, 
Class<T> c, Object value, Object...args) {
-               if (getClassInfo(c).isParentOf(value.getClass()))
+               if (ClassInfo.of(c).isParentOf(value.getClass()))
                        return (T)value;
-               if (getClassInfo(value.getClass()).isChildOf(Class.class))
+               if (ClassInfo.of(value.getClass()).isChildOf(Class.class))
                        return resolver.resolve(outer, (Class<T>)value, args);
                return null;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java
index a63bb53..9dc18ac 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java
@@ -21,6 +21,7 @@ import java.util.*;
 
 import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
+import org.apache.juneau.reflect.*;
 
 /**
  * A one-time-use non-thread-safe object that's meant to be used once and then 
thrown away.
@@ -88,7 +89,7 @@ public abstract class Session {
                Object o = properties.get(key);
                if (o == null)
                        return def;
-               type = (Class<T>)getClassInfo(type).getWrapperIfPrimitive();
+               type = (Class<T>)ClassInfo.of(type).getWrapperIfPrimitive();
                T t = properties.get(key, type);
                return t == null ? def : t;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Value.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Value.java
index 2e8b43b..37f3b2a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Value.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Value.java
@@ -12,10 +12,10 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau;
 
-import static org.apache.juneau.internal.ClassUtils.*;
-
 import java.lang.reflect.*;
 
+import org.apache.juneau.reflect.*;
+
 /**
  * Represents a simple settable value.
  *
@@ -65,7 +65,7 @@ public class Value<T> {
                } else if (t instanceof Class) {
                        Class<?> c = (Class<?>)t;
                        if (Value.class.isAssignableFrom(c)) {
-                               return getClassInfo(c).getParameterType(0, 
Value.class);
+                               return ClassInfo.of(c).getParameterType(0, 
Value.class);
                        }
                }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchemaBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchemaBuilder.java
index 013b4a5..dac8c66 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchemaBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchemaBuilder.java
@@ -13,8 +13,6 @@
 package org.apache.juneau.httppart;
 
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.ClassUtils.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.util.*;
@@ -83,8 +81,7 @@ public class HttpPartSchemaBuilder {
 
        HttpPartSchemaBuilder apply(Class<? extends Annotation> c, 
java.lang.reflect.Type t) {
                if (t instanceof Class<?>) {
-                       Class<?> tc = (Class<?>)t;
-                       ClassInfo ci = getClassInfo(tc);
+                       ClassInfo ci = ClassInfo.of((Class<?>)t);
                        for (Annotation a : ci.getAnnotationsParentFirst(c))
                                apply(a);
                } else if (Value.isType(t)) {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
index 2318c7f..c4426ee 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
@@ -54,7 +54,7 @@ public class RequestBeanMeta {
         * @return Metadata about the class, or <jk>null</jk> if class not 
annotated with {@link Request}.
         */
        public static RequestBeanMeta create(Class<?> c, PropertyStore ps) {
-               ClassInfo ci = getClassInfo(c);
+               ClassInfo ci = ClassInfo.of(c);
                if (! ci.hasAnnotation(Request.class))
                        return null;
                return new RequestBeanMeta.Builder(ps).apply(c).build();
@@ -95,7 +95,7 @@ public class RequestBeanMeta {
                }
 
                Builder apply(Class<?> c) {
-                       ClassInfo ci = getClassInfo(c);
+                       ClassInfo ci = ClassInfo.of(c);
                        apply(ci.getAnnotation(Request.class));
                        this.cm = BeanContext.DEFAULT.getClassMeta(c);
                        for (MethodInfo m : cm.getInfo().getAllMethods()) {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
index 2f23850..7291ec2 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
@@ -47,7 +47,7 @@ public class ResponseBeanMeta {
         * @return Metadata about the class, or <jk>null</jk> if class not 
annotated with {@link Response}.
         */
        public static ResponseBeanMeta create(Type t, PropertyStore ps) {
-               ClassInfo ci = getClassInfo(t).resolved();
+               ClassInfo ci = ClassInfo.of(t).resolved();
                if (! ci.hasAnnotation(Response.class))
                        return null;
                Builder b = new Builder(ps);
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 a36bfb6..7ce707b 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
@@ -13,12 +13,13 @@
 package org.apache.juneau.internal;
 
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.internal.ThrowableUtils.*;
 
 import java.lang.reflect.*;
 import java.util.*;
 
+import org.apache.juneau.reflect.*;
+
 /**
  * Quick and dirty utilities for working with arrays.
  */
@@ -392,7 +393,7 @@ public final class ArrayUtils {
                if (! c.isArray())
                        throw new IllegalArgumentException("Cannot pass 
non-array objects to toPrimitiveArray()");
                int l = Array.getLength(o);
-               Class<?> tc = 
getClassInfo(c.getComponentType()).getPrimitiveForWrapper();
+               Class<?> tc = 
ClassInfo.of(c.getComponentType()).getPrimitiveForWrapper();
                if (tc == null)
                        throw new IllegalArgumentException("Array type is not a 
primitive wrapper array.");
                Object a = Array.newInstance(tc, l);
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ClassUtils.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ClassUtils.java
index c1f7005..2a9f123 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ClassUtils.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ClassUtils.java
@@ -25,70 +25,6 @@ import org.apache.juneau.utils.*;
 public final class ClassUtils {
 
        /**
-        * Shortcut for calling {@link ClassInfo#of(Type)}.
-        *
-        * @param t The class being wrapped.
-        * @return The wrapped class.
-        */
-       public static ClassInfo getClassInfo(Type t) {
-               return ClassInfo.of(t);
-       }
-
-       /**
-        * Shortcut for calling {@link ClassInfo#of(Object)}.
-        *
-        * @param o The object whose class being wrapped.
-        * @return The wrapped class.
-        */
-       public static ClassInfo getClassInfo(Object o) {
-               return ClassInfo.of(o);
-       }
-
-       /**
-        * Shortcut for calling {@link MethodInfo#of(Method)}.
-        *
-        * @param m The method being wrapped.
-        * @return The wrapped method.
-        */
-       public static MethodInfo getMethodInfo(Method m) {
-               return MethodInfo.of(m);
-       }
-
-       /**
-        * Shortcut for calling {@link MethodInfo#of(ClassInfo, Method, 
Method)}.
-        *
-        * @param c
-        *      The class containing the method.
-        *      <br>Note that this isn't necessarily the declaring class, but 
could be a subclass
-        *      of the declaring class.
-        * @param m The method being wrapped.
-        * @return The wrapped method.
-        */
-       public static MethodInfo getMethodInfo(Class<?> c, Method m) {
-               return MethodInfo.of(ClassInfo.of(c), m, m);
-       }
-
-       /**
-        * Shortcut for calling {@link FieldInfo#of(Field)}.
-        *
-        * @param f The field being wrapped.
-        * @return The wrapped field.
-        */
-       public static FieldInfo getFieldInfo(Field f) {
-               return FieldInfo.of(f);
-       }
-
-       /**
-        * Shortcut for calling {@link ConstructorInfo#of(Constructor)}.
-        *
-        * @param c The constructor being wrapped.
-        * @return The wrapped constructor.
-        */
-       public static ConstructorInfo getConstructorInfo(Constructor<?> c) {
-               return ConstructorInfo.of(c);
-       }
-
-       /**
         * Given the specified list of objects, return readable names for the 
class types of the objects.
         *
         * @param o The objects.
@@ -111,7 +47,7 @@ public final class ClassUtils {
        public static boolean argsMatch(Class<?>[] paramTypes, Class<?>[] 
argTypes) {
                if (paramTypes.length == argTypes.length) {
                        for (int i = 0; i < paramTypes.length; i++)
-                               if (! 
getClassInfo(paramTypes[i]).isParentOf(argTypes[i]))
+                               if (! 
ClassInfo.of(paramTypes[i]).isParentOf(argTypes[i]))
                                        return false;
                        return true;
                }
@@ -145,9 +81,9 @@ public final class ClassUtils {
        public static int fuzzyArgsMatch(Class<?>[] paramTypes, Class<?>... 
argTypes) {
                int matches = 0;
                outer: for (Class<?> p : paramTypes) {
-                       ClassInfo pi = 
getClassInfo(p).getWrapperInfoIfPrimitive();
+                       ClassInfo pi = 
ClassInfo.of(p).getWrapperInfoIfPrimitive();
                        for (Class<?> a : argTypes) {
-                               ClassInfo ai = 
getClassInfo(a).getWrapperInfoIfPrimitive();
+                               ClassInfo ai = 
ClassInfo.of(a).getWrapperInfoIfPrimitive();
                                if (pi.isParentOf(ai.inner())) {
                                        matches++;
                                        continue outer;
@@ -168,7 +104,7 @@ public final class ClassUtils {
        public static int fuzzyArgsMatch(Class<?>[] paramTypes, ClassInfo... 
argTypes) {
                int matches = 0;
                outer: for (Class<?> p : paramTypes) {
-                       ClassInfo pi = 
getClassInfo(p).getWrapperInfoIfPrimitive();
+                       ClassInfo pi = 
ClassInfo.of(p).getWrapperInfoIfPrimitive();
                        for (ClassInfo a : argTypes) {
                                ClassInfo ai = a.getWrapperInfoIfPrimitive();
                                if (pi.isParentOf(ai.inner())) {
@@ -284,7 +220,7 @@ public final class ClassUtils {
                        return null;
                if (c2 instanceof Class) {
                        try {
-                               ClassInfo c3 = getClassInfo((Class<?>)c2);
+                               ClassInfo c3 = ClassInfo.of((Class<?>)c2);
                                if (c3.isInterface() || c3.isAbstract())
                                        return null;
 
@@ -312,7 +248,7 @@ public final class ClassUtils {
                        } catch (Exception e) {
                                throw new FormattedRuntimeException(e, "Could 
not instantiate class {0}", c.getName());
                        }
-               } else if (getClassInfo(c).isParentOf(c2.getClass())) {
+               } else if (ClassInfo.of(c).isParentOf(c2.getClass())) {
                        return (T)c2;
                } else {
                        throw new FormattedRuntimeException("Object of type {0} 
found but was expecting {1}.", c2.getClass(), c.getClass());
@@ -334,7 +270,7 @@ public final class ClassUtils {
        public static Object[] getMatchingArgs(Class<?>[] paramTypes, Object... 
args) {
                Object[] params = new Object[paramTypes.length];
                for (int i = 0; i < paramTypes.length; i++) {
-                       ClassInfo pt = 
getClassInfo(paramTypes[i]).getWrapperInfoIfPrimitive();
+                       ClassInfo pt = 
ClassInfo.of(paramTypes[i]).getWrapperInfoIfPrimitive();
                        for (int j = 0; j < args.length; j++) {
                                if (args[j] != null && 
pt.isParentOf(args[j].getClass())) {
                                        params[i] = args[j];
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/HttpUtils.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/HttpUtils.java
index babbdae..81333db 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/HttpUtils.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/HttpUtils.java
@@ -13,8 +13,6 @@
 package org.apache.juneau.internal;
 
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.ClassUtils.*;
-
 import java.lang.reflect.*;
 
 import org.apache.juneau.reflect.*;
@@ -85,7 +83,7 @@ public class HttpUtils {
                        return "";
                sb.append('(');
                for (int i = 0; i < pt.length; i++) {
-                       ClassInfo pti = getClassInfo(pt[i]);
+                       ClassInfo pti = ClassInfo.of(pt[i]);
                        if (i > 0)
                                sb.append(',');
                        if (full)
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/MethodInfo.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/MethodInfo.java
index 2d189cb..b7b910e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/MethodInfo.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/MethodInfo.java
@@ -67,6 +67,20 @@ public final class MethodInfo extends ExecutableInfo 
implements Comparable<Metho
        /**
         * Convenience method for instantiating a {@link MethodInfo};
         *
+        * @param declaringClass The class that declares this method.
+        * @param m The method being wrapped.
+        * @param rm The "real" method if the method above is defined against a 
CGLIB proxy.
+        * @return A new {@link MethodInfo} object, or <jk>null</jk> if the 
method was null;
+        */
+       public static MethodInfo of(Class<?> declaringClass, Method m, Method 
rm) {
+               if (m == null)
+                       return null;
+               return new MethodInfo(ClassInfo.of(declaringClass), m, rm);
+       }
+
+       /**
+        * Convenience method for instantiating a {@link MethodInfo};
+        *
         * @param m The method being wrapped.
         * @return A new {@link MethodInfo} object, or <jk>null</jk> if the 
method was null;
         */
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/Mutaters.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/Mutaters.java
index fd95726..c45e52b 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/Mutaters.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/Mutaters.java
@@ -12,7 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.reflect;
 
-import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.reflect.ReflectFlags.*;
 
 import java.util.concurrent.*;
@@ -146,7 +145,7 @@ public class Mutaters {
                        };
                }
 
-               ClassInfo ici = getClassInfo(ic), oci = getClassInfo(oc);
+               ClassInfo ici = ClassInfo.of(ic), oci = ClassInfo.of(oc);
 
                for (ClassInfo pic : ici.getAllParents()) {
                        Mutater t = m.get(pic.inner());
@@ -156,7 +155,7 @@ public class Mutaters {
 
                if (ic == String.class) {
                        Class<?> oc2 = oci.hasPrimitiveWrapper() ? 
oci.getPrimitiveWrapper() : oc;
-                       ClassInfo oc2i = getClassInfo(oc2);
+                       ClassInfo oc2i = ClassInfo.of(oc2);
 
                        final MethodInfo createMethod = 
oc2i.getStaticCreateMethod(ic, "forName");
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/remote/RemoteInterfaceMeta.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/remote/RemoteInterfaceMeta.java
index 80ca3ed..43fa8e9 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/remote/RemoteInterfaceMeta.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/remote/RemoteInterfaceMeta.java
@@ -14,8 +14,6 @@ package org.apache.juneau.remote;
 
 import static org.apache.juneau.internal.CollectionUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.ClassUtils.*;
-
 import java.lang.reflect.*;
 import java.util.*;
 
@@ -51,7 +49,7 @@ public class RemoteInterfaceMeta {
        public RemoteInterfaceMeta(Class<?> c, String uri) {
                this.c = c;
                String path = "";
-               ClassInfo ci = getClassInfo(c);
+               ClassInfo ci = ClassInfo.of(c);
                List<RemoteInterface> rr = 
ci.getAnnotationsParentFirst(RemoteInterface.class);
                for (RemoteInterface r : rr)
                        if (! r.path().isEmpty())
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
index 4377894..2991a09 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
@@ -340,14 +340,14 @@ public abstract class SerializerSession extends 
BeanTraverseSession {
                                if (((Object[])value).length == 0)
                                        return true;
                        }
-                       if (cm.isCollection() || (cm.isObject() && 
getClassInfo(value).isChildOf(Collection.class))) {
+                       if (cm.isCollection() || (cm.isObject() && 
ClassInfo.of(value).isChildOf(Collection.class))) {
                                if (((Collection<?>)value).isEmpty())
                                        return true;
                        }
                }
 
                if (isTrimEmptyMaps()) {
-                       if (cm.isMap() || (cm.isObject() && 
getClassInfo(value).isChildOf(Map.class))) {
+                       if (cm.isMap() || (cm.isObject() && 
ClassInfo.of(value).isChildOf(Map.class))) {
                                if (((Map<?,?>)value).isEmpty())
                                        return true;
                        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/VarResolverContext.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/VarResolverContext.java
index 9f5eab8..f8cb05a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/VarResolverContext.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/VarResolverContext.java
@@ -48,7 +48,7 @@ public class VarResolverContext {
 
                Map<String,Var> m = new ConcurrentSkipListMap<>();
                for (Class<?> c : vars) {
-                       ClassInfo ci = getClassInfo(c);
+                       ClassInfo ci = ClassInfo.of(c);
                        if (! ci.isChildOf(Var.class))
                                throw new VarResolverException("Invalid 
variable class.  Must extend from Var");
                        Var v = castOrCreate(Var.class, c);
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/BeanFilterBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/BeanFilterBuilder.java
index 4d9d488..fd54c04 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/BeanFilterBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/BeanFilterBuilder.java
@@ -12,13 +12,12 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.transform;
 
-import static org.apache.juneau.internal.ClassUtils.*;
-
 import java.beans.*;
 import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.reflect.*;
 
 /**
  * Builder class for {@link BeanFilter} objects.
@@ -73,7 +72,7 @@ public class BeanFilterBuilder<T> {
         * Bean class is determined through reflection of the parameter type.
         */
        protected BeanFilterBuilder() {
-               beanClass = getClassInfo(this.getClass()).getParameterType(0, 
BeanFilterBuilder.class);
+               beanClass = ClassInfo.of(this.getClass()).getParameterType(0, 
BeanFilterBuilder.class);
        }
 
        /**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/BuilderSwap.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/BuilderSwap.java
index b83ec48..35c0674 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/BuilderSwap.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/BuilderSwap.java
@@ -12,8 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.transform;
 
-import static org.apache.juneau.internal.ClassUtils.*;
-
 import java.lang.reflect.*;
 
 import org.apache.juneau.*;
@@ -142,12 +140,11 @@ public class BuilderSwap<T,B> {
         */
        @SuppressWarnings("rawtypes")
        public static BuilderSwap<?,?> findSwapFromBuilderClass(Class<?> 
builderClass, Visibility cVis, Visibility mVis) {
-               ClassInfo bci = getClassInfo(builderClass);
+               ClassInfo bci = ClassInfo.of(builderClass);
                if (bci.isNotPublic())
                        return null;
 
-//             Class<?> pojoClass = 
getClassInfo(Builder.class).getParameterType(0, builderClass);
-               Class<?> pojoClass = 
getClassInfo(builderClass).getParameterType(0, Builder.class);
+               Class<?> pojoClass = 
ClassInfo.of(builderClass).getParameterType(0, Builder.class);
 
                MethodInfo createPojoMethod, createBuilderMethod;
                ConstructorInfo pojoConstructor;
@@ -160,7 +157,7 @@ public class BuilderSwap<T,B> {
                if (pojoClass == null)
                        return null;
 
-               ClassInfo pci = getClassInfo(pojoClass);
+               ClassInfo pci = ClassInfo.of(pojoClass);
 
                pojoConstructor = pci.getConstructor(cVis, builderClass);
                if (pojoConstructor == null)
@@ -195,7 +192,7 @@ public class BuilderSwap<T,B> {
                if (b != null && b.value() != Null.class)
                        builderClass = b.value();
 
-               ClassInfo pci = getClassInfo(pojoClass);
+               ClassInfo pci = ClassInfo.of(pojoClass);
 
                builderCreateMethod = pci.getBuilderCreateMethod();
 
@@ -217,7 +214,7 @@ public class BuilderSwap<T,B> {
                if (builderClass == null)
                        return null;
 
-               ClassInfo bci = getClassInfo(builderClass);
+               ClassInfo bci = ClassInfo.of(builderClass);
                builderConstructor = bci.getNoArgConstructor(cVis);
                if (builderConstructor == null && builderCreateMethod == null)
                        return null;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/InterfaceBeanFilterBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/InterfaceBeanFilterBuilder.java
index c86278a..78c7db0 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/InterfaceBeanFilterBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/InterfaceBeanFilterBuilder.java
@@ -13,12 +13,11 @@
 package org.apache.juneau.transform;
 
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.ClassUtils.*;
-
 import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.reflect.*;
 
 /**
  * Simple bean filter that simply identifies a class to be used as an 
interface class for all child classes.
@@ -54,7 +53,7 @@ public class InterfaceBeanFilterBuilder<T> extends 
BeanFilterBuilder<T> {
 
        private void init(Class<?> interfaceClass) {
                interfaceClass(interfaceClass);
-               List<Bean> annotations = 
getClassInfo(interfaceClass).getAnnotations(Bean.class);
+               List<Bean> annotations = 
ClassInfo.of(interfaceClass).getAnnotations(Bean.class);
 
                ListIterator<Bean> li = 
annotations.listIterator(annotations.size());
                while (li.hasPrevious()) {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/PojoSwap.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/PojoSwap.java
index 0ebd06f..2d2d332 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/PojoSwap.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/PojoSwap.java
@@ -12,8 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.transform;
 
-import static org.apache.juneau.internal.ClassUtils.*;
-
 import java.util.*;
 
 import org.apache.juneau.*;
@@ -126,11 +124,11 @@ public abstract class PojoSwap<T,S> {
         * Constructor.
         */
        protected PojoSwap() {
-               ClassInfo ci = getClassInfo(this.getClass());
+               ClassInfo ci = ClassInfo.of(this.getClass());
                normalClass = (Class<T>)ci.getParameterType(0, PojoSwap.class);
                swapClass = ci.getParameterType(1, PojoSwap.class);
-               normalClassInfo = getClassInfo(normalClass);
-               swapClassInfo = getClassInfo(swapClass);
+               normalClassInfo = ClassInfo.of(normalClass);
+               swapClassInfo = ClassInfo.of(swapClass);
                forMediaTypes = forMediaTypes();
                template = withTemplate();
        }
@@ -144,8 +142,8 @@ public abstract class PojoSwap<T,S> {
        protected PojoSwap(Class<T> normalClass, Class<?> swapClass) {
                this.normalClass = normalClass;
                this.swapClass = swapClass;
-               normalClassInfo = getClassInfo(normalClass);
-               swapClassInfo = getClassInfo(swapClass);
+               normalClassInfo = ClassInfo.of(normalClass);
+               swapClassInfo = ClassInfo.of(swapClass);
                this.forMediaTypes = forMediaTypes();
                this.template = withTemplate();
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/SurrogateSwap.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/SurrogateSwap.java
index 638f3ff..53290f6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/SurrogateSwap.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/SurrogateSwap.java
@@ -12,8 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.transform;
 
-import static org.apache.juneau.internal.ClassUtils.*;
-
 import java.lang.reflect.*;
 import java.util.*;
 
@@ -60,7 +58,7 @@ public class SurrogateSwap<T,F> extends PojoSwap<T,F> {
        @SuppressWarnings({"unchecked", "rawtypes"})
        public static List<SurrogateSwap<?,?>> findPojoSwaps(Class<?> c) {
                List<SurrogateSwap<?,?>> l = new LinkedList<>();
-               ClassInfo ci = getClassInfo(c);
+               ClassInfo ci = ClassInfo.of(c);
                for (ConstructorInfo cc : ci.getPublicConstructors()) {
                        if (cc.getAnnotation(BeanIgnore.class) == null && 
cc.hasNumParams(1) && cc.isPublic()) {
                                Class<?> pt = cc.getRawParamType(0);
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/MetadataMap.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/MetadataMap.java
index 7cc5543..207a36e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/MetadataMap.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/MetadataMap.java
@@ -12,11 +12,10 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.utils;
 
-import static org.apache.juneau.internal.ClassUtils.*;
-
 import java.lang.reflect.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.reflect.*;
 
 /**
  * Utility class for quick lookup of class metadata instances.
@@ -59,7 +58,7 @@ public class MetadataMap {
                        try {
                                for (Constructor<?> con : c.getConstructors()) {
                                        Class<?>[] pt = con.getParameterTypes();
-                                       if (pt.length == 1 && 
getClassInfo(pt[0]).isParentOf(constructorArg.getClass())) {
+                                       if (pt.length == 1 && 
ClassInfo.of(pt[0]).isParentOf(constructorArg.getClass())) {
                                                o = 
con.newInstance(constructorArg);
                                                break;
                                        }
diff --git 
a/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroservice.java
 
b/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroservice.java
index 76f8f48..178af16 100644
--- 
a/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroservice.java
+++ 
b/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroservice.java
@@ -14,8 +14,6 @@ package org.apache.juneau.microservice.jetty;
 
 import static org.apache.juneau.internal.SystemUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.ClassUtils.*;
-
 import java.io.*;
 import java.net.*;
 import java.util.*;
@@ -347,7 +345,7 @@ public class JettyMicroservice extends Microservice {
 
                for (String s : cf.getStringArray("Jetty/servlets", new 
String[0])) {
                        try {
-                               ClassInfo c = getClassInfo(Class.forName(s));
+                               ClassInfo c = ClassInfo.of(Class.forName(s));
                                if (c.isChildOf(RestServlet.class)) {
                                        RestServlet rs = 
(RestServlet)c.newInstance();
                                        addServlet(rs, rs.getPath());
@@ -361,7 +359,7 @@ public class JettyMicroservice extends Microservice {
 
                for (Map.Entry<String,Object> e : 
cf.getObjectMap("Jetty/servletMap", ObjectMap.EMPTY_MAP).entrySet()) {
                        try {
-                               ClassInfo c = 
getClassInfo(Class.forName(e.getValue().toString()));
+                               ClassInfo c = 
ClassInfo.of(Class.forName(e.getValue().toString()));
                                if (c.isChildOf(Servlet.class)) {
                                        Servlet rs = (Servlet)c.newInstance();
                                        addServlet(rs, e.getKey());
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCallException.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCallException.java
index ff75a76..3fe7203 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCallException.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCallException.java
@@ -13,7 +13,6 @@
 package org.apache.juneau.rest.client;
 
 import static java.lang.String.*;
-import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
 import static org.apache.juneau.internal.IOUtils.*;
 import static org.apache.juneau.internal.StringUtils.format;
@@ -157,7 +156,7 @@ public final class RestCallException extends IOException {
                                if (t.getName().endsWith(serverExceptionName))
                                        doThrow(t, serverExceptionMessage);
                        try {
-                               ClassInfo t = 
getClassInfo(cl.loadClass(serverExceptionName));
+                               ClassInfo t = 
ClassInfo.of(cl.loadClass(serverExceptionName));
                                if (t.isChildOf(RuntimeException.class) || 
t.isChildOf(Error.class))
                                        doThrow(t.inner(), 
serverExceptionMessage);
                        } catch (ClassNotFoundException e2) { /* Ignore */ }
@@ -166,7 +165,7 @@ public final class RestCallException extends IOException {
 
        private void doThrow(Class<?> t, String msg) throws Throwable {
                ConstructorInfo c = null;
-               ClassInfo ci = getClassInfo(t);
+               ClassInfo ci = ClassInfo.of(t);
                if (msg != null) {
                        c = ci.getPublicConstructor(String.class);
                        if (c != null)
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 f2f041d..5ce0e18 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
@@ -39,6 +39,7 @@ import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.oapi.*;
 import org.apache.juneau.parser.*;
+import org.apache.juneau.reflect.*;
 import org.apache.juneau.remote.*;
 import org.apache.juneau.rest.client.remote.*;
 import org.apache.juneau.serializer.*;
@@ -1191,7 +1192,7 @@ public class RestClient extends BeanContext implements 
Closeable {
                                                        } else {
                                                                Object v = 
rc.getResponseBody(rmr.getReturnType());
                                                                if (v == null 
&& method.getReturnType().isPrimitive())
-                                                                       v = 
getClassInfo(method.getReturnType()).getPrimitiveDefault();
+                                                                       v = 
ClassInfo.of(method.getReturnType()).getPrimitiveDefault();
                                                                return v;
                                                        }
 
@@ -1310,7 +1311,7 @@ public class RestClient extends BeanContext implements 
Closeable {
 
                                                        Object v = 
rc.getResponse(method.getGenericReturnType());
                                                        if (v == null && 
method.getReturnType().isPrimitive())
-                                                               v = 
getClassInfo(method.getReturnType()).getPrimitiveDefault();
+                                                               v = 
ClassInfo.of(method.getReturnType()).getPrimitiveDefault();
                                                        return v;
 
                                                } catch (RestCallException e) {
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteMethodMeta.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteMethodMeta.java
index 4cbe314..728110a 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteMethodMeta.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteMethodMeta.java
@@ -13,7 +13,6 @@
 package org.apache.juneau.rest.client.remote;
 
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.httppart.HttpPartType.*;
 
 import java.lang.reflect.*;
@@ -87,7 +86,7 @@ public class RemoteMethodMeta {
 
                Builder(String parentPath, Method m, boolean 
useMethodSignatures, String defaultMethod) {
 
-                       MethodInfo mi = getMethodInfo(m);
+                       MethodInfo mi = MethodInfo.of(m);
 
                        RemoteMethod rm = mi.getAnnotation(RemoteMethod.class);
 
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteResourceMeta.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteResourceMeta.java
index a29bec0..821fcf2 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteResourceMeta.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteResourceMeta.java
@@ -14,8 +14,6 @@ package org.apache.juneau.rest.client.remote;
 
 import static org.apache.juneau.internal.CollectionUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.ClassUtils.*;
-
 import java.lang.reflect.*;
 import java.util.*;
 
@@ -45,7 +43,7 @@ public class RemoteResourceMeta {
        public RemoteResourceMeta(Class<?> c) {
                String path = "";
 
-               ClassInfo ci = getClassInfo(c);
+               ClassInfo ci = ClassInfo.of(c);
                for (RemoteResource r : 
ci.getAnnotationsParentFirst(RemoteResource.class))
                        if (! r.path().isEmpty())
                                path = trimSlashes(r.path());
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
index 0dd93e1..48c8c76 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
@@ -12,7 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest;
 
-import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
 import static org.apache.juneau.rest.util.RestUtils.*;
 
@@ -67,7 +66,7 @@ public class BasicRestInfoProvider implements 
RestInfoProvider {
                        description;
 
                Builder(RestContext context) {
-                       ClassInfo ci = 
getClassInfo(context.getResource().getClass());
+                       ClassInfo ci = 
ClassInfo.of(context.getResource().getClass());
                        for (RestResource r : 
ci.getAnnotationsParentFirst(RestResource.class)) {
                                if (! r.siteName().isEmpty())
                                        siteName = r.siteName();
@@ -165,7 +164,7 @@ public class BasicRestInfoProvider implements 
RestInfoProvider {
        public String getMethodSummary(Method method, RestRequest req) throws 
Exception {
                VarResolverSession vr = req.getVarResolverSession();
 
-               String s = 
getMethodInfo(method).getAnnotation(RestMethod.class).summary();
+               String s = 
MethodInfo.of(method).getAnnotation(RestMethod.class).summary();
                if (s.isEmpty()) {
                        Operation o = getSwaggerOperation(method, req);
                        if (o != null)
@@ -221,7 +220,7 @@ public class BasicRestInfoProvider implements 
RestInfoProvider {
        public String getMethodDescription(Method method, RestRequest req) 
throws Exception {
                VarResolverSession vr = req.getVarResolverSession();
 
-               String s = 
joinnl(getMethodInfo(method).getAnnotation(RestMethod.class).description());
+               String s = 
joinnl(MethodInfo.of(method).getAnnotation(RestMethod.class).description());
                if (s.isEmpty()) {
                        Operation o = getSwaggerOperation(method, req);
                        if (o != null)
@@ -399,7 +398,7 @@ public class BasicRestInfoProvider implements 
RestInfoProvider {
                if (s != null) {
                        Map<String,OperationMap> sp = s.getPaths();
                        if (sp != null) {
-                               Map<String,Operation> spp = 
sp.get(fixMethodPath(getMethodInfo(method).getAnnotation(RestMethod.class).path()));
+                               Map<String,Operation> spp = 
sp.get(fixMethodPath(MethodInfo.of(method).getAnnotation(RestMethod.class).path()));
                                if (spp != null)
                                        return spp.get(req.getMethod());
                        }
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index c944acd..7291510 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -16,7 +16,6 @@ import static javax.servlet.http.HttpServletResponse.*;
 import static org.apache.juneau.internal.CollectionUtils.*;
 import static org.apache.juneau.internal.IOUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.rest.util.RestUtils.*;
 import static org.apache.juneau.rest.HttpRuntimeException.*;
 import static org.apache.juneau.FormattedIllegalArgumentException.*;
@@ -3601,7 +3600,7 @@ public final class RestContext extends BeanContext {
                        VarResolverSession vrs = 
this.varResolver.createSession();
                        config = builder.config.resolving(vrs);
 
-                       ClassInfo rci = getClassInfo(resource);
+                       ClassInfo rci = ClassInfo.of(resource);
 
                        PropertyStore ps = getPropertyStore();
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
index 0f9a668..2174dc3 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
@@ -12,7 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest;
 
-import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
 import static org.apache.juneau.parser.Parser.*;
 import static org.apache.juneau.rest.RestContext.*;
@@ -113,7 +112,7 @@ public class RestContextBuilder extends BeanContextBuilder 
implements ServletCon
                this.parentContext = parentContext;
                this.properties = new RestContextProperties();
 
-               ClassInfo rci = getClassInfo(resourceClass);
+               ClassInfo rci = ClassInfo.of(resourceClass);
 
                // Default values.
                logger(BasicRestLogger.class);
@@ -201,7 +200,7 @@ public class RestContextBuilder extends BeanContextBuilder 
implements ServletCon
         */
        RestContextBuilder init(Object resource) throws ServletException {
                this.resource = resource;
-               ClassInfo rci = getClassInfo(resourceClass);
+               ClassInfo rci = ClassInfo.of(resourceClass);
 
                Map<String,MethodInfo> map = new LinkedHashMap<>();
                for (MethodInfo m : rci.getAllMethodsParentFirst()) {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContextBuilder.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContextBuilder.java
index 83fb1df..3e4c0d7 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContextBuilder.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContextBuilder.java
@@ -12,8 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest;
 
-import static org.apache.juneau.internal.ClassUtils.*;
-
 import org.apache.juneau.*;
 import org.apache.juneau.reflect.*;
 import org.apache.juneau.rest.annotation.*;
@@ -35,7 +33,7 @@ public class RestMethodContextBuilder extends 
BeanContextBuilder {
                this.method = method;
 
                String sig = method.getDeclaringClass().getName() + '.' + 
method.getName();
-               MethodInfo mi = getMethodInfo(servlet.getClass(), method);
+               MethodInfo mi = MethodInfo.of(servlet.getClass(), method, 
method);
 
                try {
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
index 00dbec6..f06096c 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
@@ -15,7 +15,6 @@ package org.apache.juneau.rest;
 import static java.util.logging.Level.*;
 import static javax.servlet.http.HttpServletResponse.*;
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.rest.HttpRuntimeException.*;
 
 import java.io.*;
@@ -115,7 +114,7 @@ public abstract class RestServlet extends HttpServlet {
        public synchronized String getPath() {
                if (context != null)
                        return context.getPath();
-               ClassInfo ci = getClassInfo(getClass());
+               ClassInfo ci = ClassInfo.of(getClass());
                for (RestResource rr : ci.getAnnotations(RestResource.class))
                        if (! rr.path().isEmpty())
                                return trimSlashes(rr.path());
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/SwaggerGenerator.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/SwaggerGenerator.java
index 1a36c6f..dcb945a 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/SwaggerGenerator.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/SwaggerGenerator.java
@@ -12,7 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest;
 
-import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
 import static org.apache.juneau.rest.RestParamType.*;
 import static org.apache.juneau.rest.util.AnnotationUtils.*;
@@ -100,7 +99,7 @@ final class SwaggerGenerator {
         */
        public Swagger getSwagger() throws Exception {
 
-               ClassInfo rci = getClassInfo(resource.getClass());
+               ClassInfo rci = ClassInfo.of(resource.getClass());
 
                rci.getSimpleName();
 
@@ -224,7 +223,7 @@ final class SwaggerGenerator {
                        BeanSession bs = sm.createBeanSession();
 
                        Method m = sm.method;
-                       MethodInfo mi = getMethodInfo(m);
+                       MethodInfo mi = MethodInfo.of(m);
                        RestMethod rm = mi.getAnnotation(RestMethod.class);
                        String mn = m.getName();
 

Reply via email to