diff --git a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonBufferedSourceAdapter.java b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonBufferedSourceAdapter.java deleted file mode 100644 index 2f0279f7..00000000 --- a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonBufferedSourceAdapter.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.nytimes.android.external.store3.middleware.jackson; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.nytimes.android.external.fs3.BufferedSourceAdapter; - -import java.io.ByteArrayInputStream; - -import javax.annotation.Nonnull; -import javax.inject.Inject; - -import io.reactivex.exceptions.Exceptions; -import okio.BufferedSource; -import okio.Okio; - -/** - * An implementation of {@link BufferedSourceAdapter} that uses {@link ObjectMapper} to convert Java values to JSON. - */ -public class JacksonBufferedSourceAdapter implements BufferedSourceAdapter { - - private final ObjectMapper objectMapper; - - @Inject - public JacksonBufferedSourceAdapter(@Nonnull ObjectMapper objectMapper) { - this.objectMapper = objectMapper; - } - - @Nonnull - @Override - public BufferedSource toJson(@Nonnull Parsed value) { - try { - return Okio.buffer(Okio.source(new ByteArrayInputStream(objectMapper.writeValueAsBytes(value)))); - } catch (JsonProcessingException e) { - throw Exceptions.propagate(e); - } - } -} diff --git a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonBufferedSourceAdapter.kt b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonBufferedSourceAdapter.kt new file mode 100644 index 00000000..2b7bb75f --- /dev/null +++ b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonBufferedSourceAdapter.kt @@ -0,0 +1,16 @@ +package com.nytimes.android.external.store3.middleware.jackson + +import com.fasterxml.jackson.databind.ObjectMapper +import com.nytimes.android.external.fs3.BufferedSourceAdapter +import okio.BufferedSource +import okio.Okio +import java.io.ByteArrayInputStream +import javax.inject.Inject + +/** + * An implementation of [BufferedSourceAdapter] that uses [ObjectMapper] to convert Java values to JSON. + */ +class JacksonBufferedSourceAdapter @Inject +constructor(private val objectMapper: ObjectMapper) : BufferedSourceAdapter { + override fun toJson(value: Parsed): BufferedSource = Okio.buffer(Okio.source(ByteArrayInputStream(objectMapper.writeValueAsBytes(value)))) +} diff --git a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonParserFactory.java b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonParserFactory.java deleted file mode 100644 index fae6af2e..00000000 --- a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonParserFactory.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.nytimes.android.external.store3.middleware.jackson; - -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.module.kotlin.KotlinModule; -import com.nytimes.android.external.store3.base.Parser; - -import java.io.Reader; -import java.lang.reflect.Type; - -import javax.annotation.Nonnull; - -import okio.BufferedSource; - -/** - * Factory which returns various Jackson {@link Parser} implementations. - */ -public final class JacksonParserFactory { - - private JacksonParserFactory() { - } - - /** - * Returns a new Parser which parses from a String to the specified type, using - * the provided {@link JsonFactory} instance. - */ - @Nonnull - @SuppressWarnings("PMD.AvoidThrowingNullPointerException") - public static Parser createStringParser(@Nonnull JsonFactory jsonFactory, @Nonnull Type type) { - if (jsonFactory == null) { - throw new NullPointerException("jsonFactory cannot be null."); - } - if (type == null) { - throw new NullPointerException("type cannot be null."); - } - return new JacksonStringParser<>(jsonFactory, type); - } - - /** - * Returns a new Parser which parses from a String to the specified type, using - * the provided {@link ObjectMapper} instance. - */ - @Nonnull - @SuppressWarnings("PMD.AvoidThrowingNullPointerException") - public static Parser createStringParser(@Nonnull ObjectMapper objectMapper, @Nonnull Type type) { - if (objectMapper == null) { - throw new NullPointerException("objectMapper cannot be null."); - } - if (type == null) { - throw new NullPointerException("type cannot be null."); - } - return new JacksonStringParser<>(objectMapper, type); - } - - /** - * Returns a new Parser which parses from a String to the specified type, using - * a new default {@link ObjectMapper} instance. - */ - @Nonnull - public static Parser createStringParser(@Nonnull Class type) { - return createStringParser(new ObjectMapper().registerModule(new KotlinModule()), type); - } - - /** - * Returns a new Parser which parses from {@link BufferedSource} to the specified type, using - * the provided {@link JsonFactory} instance. - */ - @Nonnull - @SuppressWarnings("PMD.AvoidThrowingNullPointerException") - public static Parser createSourceParser(@Nonnull JsonFactory jsonFactory, - @Nonnull Type type) { - if (jsonFactory == null) { - throw new NullPointerException("jsonFactory cannot be null."); - } - if (type == null) { - throw new NullPointerException("type cannot be null."); - } - return new JacksonSourceParser<>(jsonFactory, type); - } - - /** - * Returns a new Parser which parses from {@link BufferedSource} to the specified type, using - * the provided {@link ObjectMapper} instance. - */ - @Nonnull - @SuppressWarnings("PMD.AvoidThrowingNullPointerException") - public static Parser createSourceParser(@Nonnull ObjectMapper objectMapper, - @Nonnull Type type) { - if (objectMapper == null) { - throw new NullPointerException("objectMapper cannot be null."); - } - if (type == null) { - throw new NullPointerException("type cannot be null."); - } - return new JacksonSourceParser<>(objectMapper, type); - } - - /** - * Returns a new Parser which parses from {@link BufferedSource} to the specified type, using - * a new default configured {@link ObjectMapper} instance. - */ - @Nonnull - public static Parser createSourceParser(@Nonnull Type type) { - return createSourceParser(new ObjectMapper().registerModule(new KotlinModule()), type); - } - - /** - * Returns a new Parser which parses from {@link Reader} to the specified type, using - * the provided {@link JsonFactory} instance. - */ - @Nonnull - @SuppressWarnings("PMD.AvoidThrowingNullPointerException") - public static Parser createReaderParser(@Nonnull JsonFactory jsonFactory, - @Nonnull Type type) { - if (jsonFactory == null) { - throw new NullPointerException("objectMapper cannot be null."); - } - if (type == null) { - throw new NullPointerException("type cannot be null."); - } - return new JacksonReaderParser<>(jsonFactory, type); - } - - /** - * Returns a new Parser which parses from {@link Reader} to the specified type, using - * the provided {@link ObjectMapper} instance. - */ - @Nonnull - @SuppressWarnings("PMD.AvoidThrowingNullPointerException") - public static Parser createReaderParser(@Nonnull ObjectMapper objectMapper, - @Nonnull Type type) { - if (objectMapper == null) { - throw new NullPointerException("objectMapper cannot be null."); - } - if (type == null) { - throw new NullPointerException("type cannot be null."); - } - return new JacksonReaderParser<>(objectMapper, type); - } - - /** - * Returns a new Parser which parses from {@link Reader} to the specified type, using - * a new default configured {@link ObjectMapper} instance. - */ - @Nonnull - public static Parser createReaderParser(@Nonnull Type type) { - return createReaderParser(new ObjectMapper().registerModule(new KotlinModule()), type); - } -} diff --git a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonParserFactory.kt b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonParserFactory.kt new file mode 100644 index 00000000..246c810e --- /dev/null +++ b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonParserFactory.kt @@ -0,0 +1,73 @@ +package com.nytimes.android.external.store3.middleware.jackson + +import com.fasterxml.jackson.core.JsonFactory +import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.module.kotlin.KotlinModule +import com.nytimes.android.external.store3.base.Parser + +import java.io.Reader +import java.lang.reflect.Type + +import okio.BufferedSource + +/** + * Factory which returns various Jackson [Parser] implementations. + */ +object JacksonParserFactory { + + /** + * Returns a new Parser which parses from a String to the specified type, using + * the provided [JsonFactory] instance. + */ + fun createStringParser(jsonFactory: JsonFactory, type: Type): Parser = JacksonStringParser(jsonFactory, type) + + /** + * Returns a new Parser which parses from a String to the specified type, using + * the provided [ObjectMapper] instance. + */ + fun createStringParser(objectMapper: ObjectMapper, type: Type): Parser = JacksonStringParser(objectMapper, type) + + /** + * Returns a new Parser which parses from a String to the specified type, using + * a new default [ObjectMapper] instance. + */ + fun createStringParser(type: Class): Parser = createStringParser(ObjectMapper().registerModule(KotlinModule()), type) + + /** + * Returns a new Parser which parses from [BufferedSource] to the specified type, using + * the provided [JsonFactory] instance. + */ + fun createSourceParser(jsonFactory: JsonFactory, + type: Type): Parser = JacksonSourceParser(jsonFactory, type) + /** + * Returns a new Parser which parses from [BufferedSource] to the specified type, using + * the provided [ObjectMapper] instance. + */ + fun createSourceParser(objectMapper: ObjectMapper, + type: Type): Parser = JacksonSourceParser(objectMapper, type) + + /** + * Returns a new Parser which parses from [BufferedSource] to the specified type, using + * a new default configured [ObjectMapper] instance. + */ + fun createSourceParser(type: Type): Parser = createSourceParser(ObjectMapper().registerModule(KotlinModule()), type) + + /** + * Returns a new Parser which parses from [Reader] to the specified type, using + * the provided [JsonFactory] instance. + */ + fun createReaderParser(jsonFactory: JsonFactory, + type: Type): Parser = JacksonReaderParser(jsonFactory, type) + /** + * Returns a new Parser which parses from [Reader] to the specified type, using + * the provided [ObjectMapper] instance. + */ + fun createReaderParser(objectMapper: ObjectMapper, + type: Type): Parser = JacksonReaderParser(objectMapper, type) + + /** + * Returns a new Parser which parses from [Reader] to the specified type, using + * a new default configured [ObjectMapper] instance. + */ + fun createReaderParser(type: Type): Parser = createReaderParser(ObjectMapper().registerModule(KotlinModule()), type) +} diff --git a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonReaderParser.java b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonReaderParser.java deleted file mode 100644 index b68bfa77..00000000 --- a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonReaderParser.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.nytimes.android.external.store3.middleware.jackson; - - -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.module.kotlin.KotlinModule; -import com.nytimes.android.external.store3.base.Parser; -import com.nytimes.android.external.store3.util.ParserException; - -import java.io.IOException; -import java.io.Reader; -import java.lang.reflect.Type; - -import javax.annotation.Nonnull; -import javax.inject.Inject; - -import io.reactivex.annotations.NonNull; - -public class JacksonReaderParser implements Parser { - - private final ObjectMapper objectMapper; - private final JavaType parsedType; - - public JacksonReaderParser(@Nonnull JsonFactory jsonFactory, @Nonnull Type type) { - objectMapper = new ObjectMapper(jsonFactory).registerModule(new KotlinModule()); - parsedType = objectMapper.constructType(type); - } - - @Inject - public JacksonReaderParser(@Nonnull ObjectMapper objectMapper, @Nonnull Type type) { - this.objectMapper = objectMapper; - parsedType = objectMapper.constructType(type); - } - - @Override - public Parsed apply(@NonNull Reader reader) throws ParserException { - try { - return objectMapper.readValue(reader, parsedType); - } catch (IOException e) { - throw new ParserException(e.getMessage(), e); - } - } -} diff --git a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonReaderParser.kt b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonReaderParser.kt new file mode 100644 index 00000000..6e1c0014 --- /dev/null +++ b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonReaderParser.kt @@ -0,0 +1,33 @@ +package com.nytimes.android.external.store3.middleware.jackson + + +import com.fasterxml.jackson.core.JsonFactory +import com.fasterxml.jackson.databind.JavaType +import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.module.kotlin.KotlinModule +import com.nytimes.android.external.store3.base.Parser +import com.nytimes.android.external.store3.util.ParserException +import io.reactivex.annotations.NonNull +import java.io.Reader +import java.lang.reflect.Type +import javax.inject.Inject + +class JacksonReaderParser : Parser { + + private val objectMapper: ObjectMapper + private val parsedType: JavaType + + constructor(jsonFactory: JsonFactory, type: Type) { + objectMapper = ObjectMapper(jsonFactory).registerModule(KotlinModule()) + parsedType = objectMapper.constructType(type) + } + + @Inject + constructor(objectMapper: ObjectMapper, type: Type) { + this.objectMapper = objectMapper + this.parsedType = objectMapper.constructType(type) + } + + @Throws(ParserException::class) + override fun apply(@NonNull reader: Reader): Parsed = objectMapper.readValue(reader, parsedType) +} diff --git a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonSourceParser.java b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonSourceParser.java deleted file mode 100644 index 71429f5d..00000000 --- a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonSourceParser.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.nytimes.android.external.store3.middleware.jackson; - -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.module.kotlin.KotlinModule; -import com.nytimes.android.external.store3.base.Parser; -import com.nytimes.android.external.store3.util.ParserException; - -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Type; - -import javax.annotation.Nonnull; -import javax.inject.Inject; - -import io.reactivex.annotations.NonNull; -import okio.BufferedSource; - -public class JacksonSourceParser implements Parser { - - private final ObjectMapper objectMapper; - private final JavaType parsedType; - - public JacksonSourceParser(@Nonnull JsonFactory jsonFactory, @Nonnull Type type) { - objectMapper = new ObjectMapper(jsonFactory).registerModule(new KotlinModule()); - parsedType = objectMapper.constructType(type); - } - - @Inject - public JacksonSourceParser(@Nonnull ObjectMapper objectMapper, @Nonnull Type type) { - this.objectMapper = objectMapper; - parsedType = objectMapper.constructType(type); - } - - @Override - @SuppressWarnings({"PMD.EmptyCatchBlock"}) - public Parsed apply(@NonNull BufferedSource bufferedSource) throws ParserException { - InputStream inputStream = bufferedSource.inputStream(); - try { - return objectMapper.readValue(inputStream, parsedType); - } catch (IOException e) { - throw new ParserException(e.getMessage(), e); - } finally { - try { - if (inputStream != null) { - inputStream.close(); - } - } catch (IOException e) { - } - } - } -} diff --git a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonSourceParser.kt b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonSourceParser.kt new file mode 100644 index 00000000..567f1fb1 --- /dev/null +++ b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonSourceParser.kt @@ -0,0 +1,46 @@ +package com.nytimes.android.external.store3.middleware.jackson + +import com.fasterxml.jackson.core.JsonFactory +import com.fasterxml.jackson.databind.JavaType +import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.module.kotlin.KotlinModule +import com.nytimes.android.external.store3.base.Parser +import com.nytimes.android.external.store3.util.ParserException +import io.reactivex.annotations.NonNull +import okio.BufferedSource +import java.io.IOException +import java.lang.reflect.Type +import javax.inject.Inject + +class JacksonSourceParser : Parser { + + private val objectMapper: ObjectMapper + private val parsedType: JavaType + + constructor(jsonFactory: JsonFactory, type: Type) { + objectMapper = ObjectMapper(jsonFactory).registerModule(KotlinModule()) + parsedType = objectMapper.constructType(type) + } + + @Inject + constructor(objectMapper: ObjectMapper, type: Type) { + this.objectMapper = objectMapper + parsedType = objectMapper.constructType(type) + } + + @Throws(ParserException::class) + override fun apply(@NonNull bufferedSource: BufferedSource): Parsed { + val inputStream = bufferedSource.inputStream() + try { + return objectMapper.readValue(inputStream, parsedType) + } catch (e: IOException) { + throw ParserException(e.message, e) + } finally { + try { + inputStream?.close() + } catch (e: IOException) { + } + + } + } +} diff --git a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonStringParser.java b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonStringParser.java deleted file mode 100644 index b8447da9..00000000 --- a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonStringParser.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.nytimes.android.external.store3.middleware.jackson; - -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.module.kotlin.KotlinModule; -import com.nytimes.android.external.store3.base.Parser; -import com.nytimes.android.external.store3.util.ParserException; - -import java.io.IOException; -import java.lang.reflect.Type; - -import javax.annotation.Nonnull; -import javax.inject.Inject; - -import io.reactivex.annotations.NonNull; - -public class JacksonStringParser implements Parser { - - private final ObjectMapper objectMapper; - private final JavaType parsedType; - - public JacksonStringParser(@Nonnull JsonFactory jsonFactory, @Nonnull Type type) { - objectMapper = new ObjectMapper(jsonFactory).registerModule(new KotlinModule()); - parsedType = objectMapper.constructType(type); - } - - @Inject - public JacksonStringParser(@Nonnull ObjectMapper objectMapper, @Nonnull Type type) { - this.objectMapper = objectMapper; - parsedType = objectMapper.constructType(type); - } - - @Override - public Parsed apply(@NonNull String s) throws ParserException { - try { - return objectMapper.readValue(s, parsedType); - } catch (IOException e) { - throw new ParserException(e.getMessage(), e); - } - } -} diff --git a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonStringParser.kt b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonStringParser.kt new file mode 100644 index 00000000..9f626cb6 --- /dev/null +++ b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonStringParser.kt @@ -0,0 +1,31 @@ +package com.nytimes.android.external.store3.middleware.jackson + +import com.fasterxml.jackson.core.JsonFactory +import com.fasterxml.jackson.databind.JavaType +import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.module.kotlin.KotlinModule +import com.nytimes.android.external.store3.base.Parser +import com.nytimes.android.external.store3.util.ParserException +import io.reactivex.annotations.NonNull +import java.lang.reflect.Type +import javax.inject.Inject + +class JacksonStringParser : Parser { + + private val objectMapper: ObjectMapper + private val parsedType: JavaType + + constructor(jsonFactory: JsonFactory, type: Type) { + objectMapper = ObjectMapper(jsonFactory).registerModule(KotlinModule()) + parsedType = objectMapper.constructType(type) + } + + @Inject + constructor(objectMapper: ObjectMapper, type: Type) { + this.objectMapper = objectMapper + this.parsedType = objectMapper.constructType(type) + } + + @Throws(ParserException::class) + override fun apply(@NonNull s: String): Parsed = objectMapper.readValue(s, parsedType) +} diff --git a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonTransformerFactory.java b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonTransformerFactory.java deleted file mode 100644 index ead0228c..00000000 --- a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonTransformerFactory.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.nytimes.android.external.store3.middleware.jackson; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.nytimes.android.external.fs3.ObjectToSourceTransformer; -import com.nytimes.android.external.store3.annotations.Experimental; - -import javax.annotation.Nonnull; - -/** - * Factory which returns Jackson {@link io.reactivex.SingleTransformer} implementations. - */ -public final class JacksonTransformerFactory { - - private JacksonTransformerFactory() { - } - - /** - * Returns a new {@link ObjectToSourceTransformer}, which uses a {@link JacksonBufferedSourceAdapter} to parse from - * objects of the specified type to JSON using the provided - * {@link com.fasterxml.jackson.databind.ObjectMapper ObjectMapper} instance. - */ - @Nonnull - @Experimental - public static ObjectToSourceTransformer createObjectToSourceTransformer(@Nonnull ObjectMapper - objectMapper) { - return new ObjectToSourceTransformer<>(new JacksonBufferedSourceAdapter(objectMapper)); - } - -} diff --git a/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonTransformerFactory.kt b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonTransformerFactory.kt new file mode 100644 index 00000000..5c78ee88 --- /dev/null +++ b/middleware-jackson/src/main/java/com/nytimes/android/external/store3/middleware/jackson/JacksonTransformerFactory.kt @@ -0,0 +1,22 @@ +package com.nytimes.android.external.store3.middleware.jackson + +import com.fasterxml.jackson.databind.ObjectMapper +import com.nytimes.android.external.fs3.ObjectToSourceTransformer +import com.nytimes.android.external.store3.annotations.Experimental + +/** + * Factory which returns Jackson [io.reactivex.SingleTransformer] implementations. + */ +object JacksonTransformerFactory { + + /** + * Returns a new [ObjectToSourceTransformer], which uses a [JacksonBufferedSourceAdapter] to parse from + * objects of the specified type to JSON using the provided + * [ObjectMapper][com.fasterxml.jackson.databind.ObjectMapper] instance. + */ + @Experimental + fun createObjectToSourceTransformer(objectMapper: ObjectMapper): ObjectToSourceTransformer { + return ObjectToSourceTransformer(JacksonBufferedSourceAdapter(objectMapper)) + } + +}