diff --git a/src/main/java/nl/jssl/jsontoy/serialize/SynthSerializerFactory.java b/src/main/java/nl/jssl/jsontoy/serialize/SynthSerializerFactory.java index bf0daaf..87c797a 100644 --- a/src/main/java/nl/jssl/jsontoy/serialize/SynthSerializerFactory.java +++ b/src/main/java/nl/jssl/jsontoy/serialize/SynthSerializerFactory.java @@ -58,20 +58,21 @@ class SynthSerializerFactory { @SuppressWarnings("unchecked") JSONSerializer createSerializer(Class beanjavaClass) { - if (serializers.containsKey(beanjavaClass)) { - return (JSONSerializer) serializers.get(beanjavaClass); + JSONSerializer serializer = (JSONSerializer) serializers.get(beanjavaClass); + if (serializer != null) { + return serializer; } try { - CtClass beanClass = pool.get(beanjavaClass.getName()); - return tryCreateSerializer(beanjavaClass, beanClass); + return tryCreateSerializer(beanjavaClass); } catch (NotFoundException | CannotCompileException | InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { throw new SerializerCreationException(e); } } - private JSONSerializer tryCreateSerializer(Class javaClass, CtClass beanClass) throws NotFoundException, CannotCompileException, InstantiationException, + private JSONSerializer tryCreateSerializer(Class javaClass) throws NotFoundException, CannotCompileException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { + CtClass beanClass = pool.get(javaClass.getName()); CtClass serializerClass = pool.makeClass(createSerializerName(beanClass), serializerBase); addToJsonStringMethod(beanClass, serializerClass);