Review Comments

This commit is contained in:
Katelyn Baker
2017-08-03 14:01:59 +01:00
parent 45ed78b1a8
commit 36cbcae99c
2 changed files with 10 additions and 11 deletions

View File

@ -171,28 +171,26 @@ class SerializerFactory(val whitelist: ClassWhitelist = AllWhitelist) {
} }
} }
private fun processSchema( private fun processSchema(schema: Schema, cl: ClassLoader = DeserializedParameterizedType::class.java.classLoader) {
schema: Schema,
cl: ClassLoader = DeserializedParameterizedType::class.java.classLoader) {
val carpenterSchemas = CarpenterSchemas.newInstance() val carpenterSchemas = CarpenterSchemas.newInstance()
for (typeNotation in schema.types) { for (typeNotation in schema.types) {
try { try {
processSchemaEntry(typeNotation, cl) processSchemaEntry(typeNotation, cl)
} }
catch (e: java.lang.ClassNotFoundException) { catch (e: ClassNotFoundException) {
if ((cl != DeserializedParameterizedType::class.java.classLoader) if ((cl != DeserializedParameterizedType::class.java.classLoader)
|| (typeNotation !is CompositeType)) throw e || (typeNotation !is CompositeType)) throw e
typeNotation.carpenterSchema(carpenterSchemas = carpenterSchemas) typeNotation.carpenterSchema(carpenterSchemas = carpenterSchemas)
} }
} }
if (carpenterSchemas.isEmpty()) return if (carpenterSchemas.isNotEmpty()) {
val mc = MetaCarpenter(carpenterSchemas) val mc = MetaCarpenter(carpenterSchemas)
mc.build() mc.build()
processSchema(schema, mc.classloader) processSchema(schema, mc.classloader)
} }
}
private fun processSchemaEntry(typeNotation: TypeNotation, private fun processSchemaEntry(typeNotation: TypeNotation,
cl: ClassLoader = DeserializedParameterizedType::class.java.classLoader) { cl: ClassLoader = DeserializedParameterizedType::class.java.classLoader) {
@ -321,7 +319,7 @@ class SerializerFactory(val whitelist: ClassWhitelist = AllWhitelist) {
"${nameForType(type.componentType)}${if(type.componentType.isPrimitive) "[p]" else "[]"}" "${nameForType(type.componentType)}${if(type.componentType.isPrimitive) "[p]" else "[]"}"
} else type.name } else type.name
} }
is ParameterizedType -> "${nameForType(type.rawType)ype.actualTypeArguments.joinToString { nameForType(it) }}>" is ParameterizedType -> "${nameForType(type.rawType)}<${type.actualTypeArguments.joinToString { nameForType(it) }}>"
is GenericArrayType -> "${nameForType(type.genericComponentType)}[]" is GenericArrayType -> "${nameForType(type.genericComponentType)}[]"
else -> throw NotSerializableException("Unable to render type $type to a string.") else -> throw NotSerializableException("Unable to render type $type to a string.")
} }

View File

@ -44,6 +44,7 @@ data class CarpenterSchemas (
get() = carpenterSchemas.size get() = carpenterSchemas.size
fun isEmpty() = carpenterSchemas.isEmpty() fun isEmpty() = carpenterSchemas.isEmpty()
fun isNotEmpty() = carpenterSchemas.isNotEmpty()
} }
/** /**