From 2ab248f1d08b969976664550b23cb72747ef772c Mon Sep 17 00:00:00 2001 From: Robinson Date: Tue, 24 Aug 2021 13:24:37 -0600 Subject: [PATCH] Formatting --- src/dorkbox/vaadin/util/ClassUtils.kt | 117 +++++++++++++++----------- 1 file changed, 69 insertions(+), 48 deletions(-) diff --git a/src/dorkbox/vaadin/util/ClassUtils.kt b/src/dorkbox/vaadin/util/ClassUtils.kt index 52e3617..e016460 100644 --- a/src/dorkbox/vaadin/util/ClassUtils.kt +++ b/src/dorkbox/vaadin/util/ClassUtils.kt @@ -37,40 +37,108 @@ import java.util.* object ClassUtils { /** Suffix for array class names: `"[]"`. */ const val ARRAY_SUFFIX = "[]" + /** Prefix for internal array class names: `"["`. */ private const val INTERNAL_ARRAY_PREFIX = "[" + /** Prefix for internal non-primitive array class names: `"[L"`. */ private const val NON_PRIMITIVE_ARRAY_PREFIX = "[L" + /** The package separator character: `'.'`. */ private const val PACKAGE_SEPARATOR = '.' + /** The inner class separator character: `'$'`. */ private const val INNER_CLASS_SEPARATOR = '$' + /** * Map with primitive wrapper type as key and corresponding primitive * type as value, for example: Integer.class -> int.class. */ private val primitiveWrapperTypeMap: MutableMap, Class<*>?> = IdentityHashMap(8) + /** * Map with primitive type as key and corresponding wrapper * type as value, for example: int.class -> Integer.class. */ private val primitiveTypeToWrapperMap: MutableMap, Class<*>> = IdentityHashMap(8) + /** * Map with primitive type name as key and corresponding primitive * type as value, for example: "int" -> "int.class". */ private val primitiveTypeNameMap: MutableMap> = HashMap(32) + /** * Map with common Java language class name as key and corresponding Class as value. * Primarily for efficient deserialization of remote invocations. */ private val commonClassCache: MutableMap> = HashMap(64) + /** * Common Java language interfaces which are supposed to be ignored * when searching for 'primary' user-level interfaces. */ private var javaLanguageInterfaces: Set>? = null + + init { + primitiveWrapperTypeMap[Boolean::class.java] = Boolean::class.javaPrimitiveType + primitiveWrapperTypeMap[Byte::class.java] = Byte::class.javaPrimitiveType + primitiveWrapperTypeMap[Char::class.java] = Char::class.javaPrimitiveType + primitiveWrapperTypeMap[Double::class.java] = Double::class.javaPrimitiveType + primitiveWrapperTypeMap[Float::class.java] = Float::class.javaPrimitiveType + primitiveWrapperTypeMap[Int::class.java] = Int::class.javaPrimitiveType + primitiveWrapperTypeMap[Long::class.java] = Long::class.javaPrimitiveType + primitiveWrapperTypeMap[Short::class.java] = Short::class.javaPrimitiveType + primitiveWrapperTypeMap[Void::class.java] = Void.TYPE + + // Map entry iteration is less expensive to initialize than forEach with lambdas + for ((key, value) in primitiveWrapperTypeMap) { + primitiveTypeToWrapperMap[value as Class<*>] = key + registerCommonClasses(key) + } + + + val primitiveTypes = mutableSetOf>() + @Suppress("UNCHECKED_CAST") + primitiveTypes.addAll(primitiveWrapperTypeMap.values as Collection>) + + Collections.addAll(primitiveTypes, BooleanArray::class.java, ByteArray::class.java, CharArray::class.java, + DoubleArray::class.java, FloatArray::class.java, IntArray::class.java, LongArray::class.java, ShortArray::class.java) + primitiveTypes.add(Void.TYPE) + for (primitiveType in primitiveTypes) { + primitiveTypeNameMap[primitiveType.name] = primitiveType + } + + + registerCommonClasses(Array::class.java, Array::class.java, Array::class.java, Array::class.java, + Array::class.java, Array::class.java, Array::class.java, Array::class.java) + registerCommonClasses(Number::class.java, Array::class.java, String::class.java, Array::class.java, + Class::class.java, emptyArray>().javaClass, Any::class.java, Array::class.java) + + registerCommonClasses(Throwable::class.java, Exception::class.java, RuntimeException::class.java, + Error::class.java, StackTraceElement::class.java, Array::class.java) + registerCommonClasses(Enum::class.java, Iterable::class.java, MutableIterator::class.java, Enumeration::class.java, + MutableCollection::class.java, MutableList::class.java, MutableSet::class.java, MutableMap::class.java, MutableMap.MutableEntry::class.java, Optional::class.java) + + val javaLanguageInterfaceArray = arrayOf( + Serializable::class.java, Externalizable::class.java, + Closeable::class.java, AutoCloseable::class.java, Cloneable::class.java, Comparable::class.java) + registerCommonClasses(*javaLanguageInterfaceArray) + + javaLanguageInterfaces = HashSet(listOf(*javaLanguageInterfaceArray)) + } + + + + + + + + + + + /** * Register the given common classes with the ClassUtils cache. */ @@ -93,9 +161,8 @@ object ClassUtils { * @throws LinkageError if the class file could not be loaded * @see Class.forName */ - @JvmStatic @Throws(ClassNotFoundException::class, LinkageError::class) - fun forName(name: String, classLoader: ClassLoader?): Class<*> { + fun forName(name: String, classLoader: ClassLoader? = null): Class<*> { var clazz = resolvePrimitiveClassName(name) if (clazz == null) { clazz = commonClassCache[name] @@ -188,50 +255,4 @@ object ClassUtils { fun createCompositeInterface(interfaces: Array?>, classLoader: ClassLoader?): Class<*> { return Proxy.getProxyClass(classLoader, *interfaces) } - - - - init { - primitiveWrapperTypeMap[Boolean::class.java] = Boolean::class.javaPrimitiveType - primitiveWrapperTypeMap[Byte::class.java] = Byte::class.javaPrimitiveType - primitiveWrapperTypeMap[Char::class.java] = Char::class.javaPrimitiveType - primitiveWrapperTypeMap[Double::class.java] = Double::class.javaPrimitiveType - primitiveWrapperTypeMap[Float::class.java] = Float::class.javaPrimitiveType - primitiveWrapperTypeMap[Int::class.java] = Int::class.javaPrimitiveType - primitiveWrapperTypeMap[Long::class.java] = Long::class.javaPrimitiveType - primitiveWrapperTypeMap[Short::class.java] = Short::class.javaPrimitiveType - primitiveWrapperTypeMap[Void::class.java] = Void.TYPE - - // Map entry iteration is less expensive to initialize than forEach with lambdas - for ((key, value) in primitiveWrapperTypeMap) { - primitiveTypeToWrapperMap[value as Class<*>] = key - registerCommonClasses(key) - } - - - val primitiveTypes = mutableSetOf>() - @Suppress("UNCHECKED_CAST") - primitiveTypes.addAll(primitiveWrapperTypeMap.values as Collection>) - - Collections.addAll(primitiveTypes, BooleanArray::class.java, ByteArray::class.java, CharArray::class.java, - DoubleArray::class.java, FloatArray::class.java, IntArray::class.java, LongArray::class.java, ShortArray::class.java) - primitiveTypes.add(Void.TYPE) - for (primitiveType in primitiveTypes) { - primitiveTypeNameMap[primitiveType.getName()] = primitiveType - } - registerCommonClasses(Array::class.java, Array::class.java, Array::class.java, Array::class.java, - Array::class.java, Array::class.java, Array::class.java, Array::class.java) - registerCommonClasses(Number::class.java, Array::class.java, String::class.java, Array::class.java, - Class::class.java, emptyArray>().javaClass, Any::class.java, Array::class.java) - - registerCommonClasses(Throwable::class.java, Exception::class.java, RuntimeException::class.java, - Error::class.java, StackTraceElement::class.java, Array::class.java) - registerCommonClasses(Enum::class.java, Iterable::class.java, MutableIterator::class.java, Enumeration::class.java, - MutableCollection::class.java, MutableList::class.java, MutableSet::class.java, MutableMap::class.java, MutableMap.MutableEntry::class.java, Optional::class.java) - - val javaLanguageInterfaceArray = arrayOf(Serializable::class.java, Externalizable::class.java, - Closeable::class.java, AutoCloseable::class.java, Cloneable::class.java, Comparable::class.java) - registerCommonClasses(*javaLanguageInterfaceArray) - javaLanguageInterfaces = HashSet(Arrays.asList(*javaLanguageInterfaceArray)) - } }