diff --git a/src/main/java/com/hubspot/jinjava/JinjavaConfig.java b/src/main/java/com/hubspot/jinjava/JinjavaConfig.java index e987f7842..f87e1fdb6 100644 --- a/src/main/java/com/hubspot/jinjava/JinjavaConfig.java +++ b/src/main/java/com/hubspot/jinjava/JinjavaConfig.java @@ -17,6 +17,7 @@ import static com.hubspot.jinjava.lib.fn.Functions.DEFAULT_RANGE_LIMIT; +import com.fasterxml.jackson.databind.ObjectMapper; import com.hubspot.jinjava.el.JinjavaInterpreterResolver; import com.hubspot.jinjava.interpret.Context; import com.hubspot.jinjava.interpret.Context.Library; @@ -66,6 +67,7 @@ public class JinjavaConfig { private final ExecutionMode executionMode; private final LegacyOverrides legacyOverrides; private final boolean enablePreciseDivideFilter; + private final ObjectMapper objectMapper; public static Builder newBuilder() { return new Builder(); @@ -120,6 +122,7 @@ private JinjavaConfig(Builder builder) { executionMode = builder.executionMode; legacyOverrides = builder.legacyOverrides; enablePreciseDivideFilter = builder.enablePreciseDivideFilter; + objectMapper = builder.objectMapper; } public Charset getCharset() { @@ -214,6 +217,10 @@ public ELResolver getElResolver() { return elResolver; } + public ObjectMapper getObjectMapper() { + return objectMapper; + } + /** * @deprecated Replaced by {@link LegacyOverrides#isIterateOverMapKeys()} */ @@ -263,6 +270,7 @@ public static class Builder { private ExecutionMode executionMode = DefaultExecutionMode.instance(); private LegacyOverrides legacyOverrides = LegacyOverrides.NONE; private boolean enablePreciseDivideFilter = false; + private ObjectMapper objectMapper = new ObjectMapper(); private Builder() {} @@ -414,6 +422,11 @@ public Builder withEnablePreciseDivideFilter(boolean enablePreciseDivideFilter) return this; } + public Builder withObjectMapper(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + return this; + } + public JinjavaConfig build() { return new JinjavaConfig(this); } diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/ToJsonFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/ToJsonFilter.java index 396b39236..acdf6ef91 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/ToJsonFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/ToJsonFilter.java @@ -1,7 +1,6 @@ package com.hubspot.jinjava.lib.filter; import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import com.hubspot.jinjava.doc.annotations.JinjavaDoc; import com.hubspot.jinjava.doc.annotations.JinjavaParam; import com.hubspot.jinjava.doc.annotations.JinjavaSnippet; @@ -19,12 +18,11 @@ snippets = { @JinjavaSnippet(code = "{{object|tojson}}") } ) public class ToJsonFilter implements Filter { - private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); @Override public Object filter(Object var, JinjavaInterpreter interpreter, String... args) { try { - return OBJECT_MAPPER.writeValueAsString(var); + return interpreter.getConfig().getObjectMapper().writeValueAsString(var); } catch (JsonProcessingException e) { throw new InvalidInputException(interpreter, this, InvalidReason.JSON_WRITE); }