private Serializer buildSerializer(RevisionResolver revisionResolver, SerializerProperties.SerializerType serializerType) { switch (serializerType) { case JACKSON: Map<String, ObjectMapper> objectMapperBeans = applicationContext.getBeansOfType(ObjectMapper.class); ObjectMapper objectMapper = objectMapperBeans.containsKey("defaultAxonObjectMapper") ? objectMapperBeans.get("defaultAxonObjectMapper") : objectMapperBeans.values().stream().findFirst() .orElseThrow(() -> new NoClassDefFoundError( "com/fasterxml/jackson/databind/ObjectMapper" )); ChainingConverter converter = new ChainingConverter(beanClassLoader); return JacksonSerializer.builder() .revisionResolver(revisionResolver) .converter(converter) .objectMapper(objectMapper) .build(); case JAVA: return JavaSerializer.builder().revisionResolver(revisionResolver).build(); case XSTREAM: case DEFAULT: default: XStreamSerializer xStreamSerializer = XStreamSerializer.builder() .revisionResolver(revisionResolver) .build(); xStreamSerializer.getXStream().setClassLoader(beanClassLoader); return xStreamSerializer; } }
private Serializer buildSerializer(RevisionResolver revisionResolver, SerializerProperties.SerializerType serializerType) { switch (serializerType) { case JACKSON: Map<String, ObjectMapper> objectMapperBeans = applicationContext.getBeansOfType(ObjectMapper.class); ObjectMapper objectMapper = objectMapperBeans.containsKey("defaultAxonObjectMapper") ? objectMapperBeans.get("defaultAxonObjectMapper") : objectMapperBeans.values().stream().findFirst() .orElseThrow(() -> new NoClassDefFoundError( "com/fasterxml/jackson/databind/ObjectMapper" )); ChainingConverter converter = new ChainingConverter(beanClassLoader); return JacksonSerializer.builder() .revisionResolver(revisionResolver) .converter(converter) .objectMapper(objectMapper) .build(); case JAVA: return JavaSerializer.builder().revisionResolver(revisionResolver).build(); case XSTREAM: case DEFAULT: default: XStreamSerializer xStreamSerializer = XStreamSerializer.builder() .revisionResolver(revisionResolver) .build(); xStreamSerializer.getXStream().setClassLoader(beanClassLoader); return xStreamSerializer; } }