diff --git a/javax-money-moneta/src/main/java/com/fasterxml/jackson/datatype/money/moneta/MonetaMoneyModule.java b/javax-money-moneta/src/main/java/com/fasterxml/jackson/datatype/money/moneta/MonetaMoneyModule.java index df89ce6..67eed1f 100644 --- a/javax-money-moneta/src/main/java/com/fasterxml/jackson/datatype/money/moneta/MonetaMoneyModule.java +++ b/javax-money-moneta/src/main/java/com/fasterxml/jackson/datatype/money/moneta/MonetaMoneyModule.java @@ -33,24 +33,17 @@ public final class MonetaMoneyModule extends Module { private final JavaxMoneyModule baseModule; private final FieldNames names; - private final MonetaryAmountFactory amountFactory; private final MonetaryAmountFactory fastMoneyFactory; private final MonetaryAmountFactory moneyFactory; private final MonetaryAmountFactory roundedMoneyFactory; public MonetaMoneyModule() { - this(new JavaxMoneyModule(), FieldNames.defaults(), - Money::of, FastMoney::of, Money::of, RoundedMoney::of); + this(new JavaxMoneyModule().withMonetaryAmountFactory(Money::of), FieldNames.defaults(), FastMoney::of, Money::of, RoundedMoney::of); } - private MonetaMoneyModule(final JavaxMoneyModule baseModule, final FieldNames names, - final MonetaryAmountFactory amountFactory, - final MonetaryAmountFactory fastMoneyFactory, - final MonetaryAmountFactory moneyFactory, - final MonetaryAmountFactory roundedMoneyFactory) { + private MonetaMoneyModule(final JavaxMoneyModule baseModule, final FieldNames names, final MonetaryAmountFactory fastMoneyFactory, final MonetaryAmountFactory moneyFactory, final MonetaryAmountFactory roundedMoneyFactory) { this.baseModule = baseModule; this.names = names; - this.amountFactory = amountFactory; this.fastMoneyFactory = fastMoneyFactory; this.moneyFactory = moneyFactory; this.roundedMoneyFactory = roundedMoneyFactory; @@ -73,9 +66,6 @@ public void setupModule(final SetupContext context) { final SimpleDeserializers deserializers = new SimpleDeserializers(); deserializers.addDeserializer(CurrencyUnit.class, new CurrencyUnitDeserializer()); - //Use provided amountFactory to deserialize a MonetaryAmount - deserializers.addDeserializer(MonetaryAmount.class, new MonetaryAmountDeserializer<>(amountFactory, names)); - //Register deserializers for Moneta types deserializers.addDeserializer(FastMoney.class, new MonetaryAmountDeserializer<>(fastMoneyFactory, names)); deserializers.addDeserializer(Money.class, new MonetaryAmountDeserializer<>(moneyFactory, names)); @@ -85,16 +75,16 @@ public void setupModule(final SetupContext context) { } public MonetaMoneyModule withDecimalNumbers() { - return new MonetaMoneyModule(baseModule.withDecimalNumbers(), names, amountFactory, fastMoneyFactory, moneyFactory, roundedMoneyFactory); + return new MonetaMoneyModule(baseModule.withDecimalNumbers(), names, fastMoneyFactory, moneyFactory, roundedMoneyFactory); } public MonetaMoneyModule withQuotedDecimalNumbers() { - return new MonetaMoneyModule(baseModule.withQuotedDecimalNumbers(), names, amountFactory, fastMoneyFactory, moneyFactory, roundedMoneyFactory); + return new MonetaMoneyModule(baseModule.withQuotedDecimalNumbers(), names, fastMoneyFactory, moneyFactory, roundedMoneyFactory); } @API(status = EXPERIMENTAL) public MonetaMoneyModule withNumbers(final AmountWriter writer) { - return new MonetaMoneyModule(baseModule.withNumbers(writer), names, amountFactory, fastMoneyFactory, moneyFactory, roundedMoneyFactory); + return new MonetaMoneyModule(baseModule.withNumbers(writer), names, fastMoneyFactory, moneyFactory, roundedMoneyFactory); } /** @@ -127,16 +117,14 @@ public MonetaMoneyModule withRoundedMoney() { * @see RoundedMoney */ public MonetaMoneyModule withRoundedMoney(final MonetaryOperator rounding) { - final MonetaryAmountFactory factory = (amount, currency) -> - RoundedMoney.of(amount, currency, rounding); + final MonetaryAmountFactory factory = (amount, currency) -> RoundedMoney.of(amount, currency, rounding); return withMonetaryAmountFactory(factory); } private MonetaMoneyModule withMonetaryAmountFactory(final MonetaryAmountFactory amountFactory) { - return new MonetaMoneyModule(baseModule, names, amountFactory, - fastMoneyFactory, moneyFactory, roundedMoneyFactory); + return new MonetaMoneyModule(baseModule.withMonetaryAmountFactory(amountFactory), names, fastMoneyFactory, moneyFactory, roundedMoneyFactory); } public MonetaMoneyModule withoutFormatting() { @@ -148,19 +136,19 @@ public MonetaMoneyModule withDefaultFormatting() { } public MonetaMoneyModule withFormatting(final MonetaryAmountFormatFactory formatFactory) { - return new MonetaMoneyModule(baseModule.withFormatting(formatFactory), names, amountFactory, fastMoneyFactory, moneyFactory, roundedMoneyFactory); + return new MonetaMoneyModule(baseModule.withFormatting(formatFactory), names, fastMoneyFactory, moneyFactory, roundedMoneyFactory); } public MonetaMoneyModule withAmountFieldName(final String name) { - return new MonetaMoneyModule(baseModule.withAmountFieldName(name), names.withAmount(name), amountFactory, fastMoneyFactory, moneyFactory, roundedMoneyFactory); + return new MonetaMoneyModule(baseModule.withAmountFieldName(name), names.withAmount(name), fastMoneyFactory, moneyFactory, roundedMoneyFactory); } public MonetaMoneyModule withCurrencyFieldName(final String name) { - return new MonetaMoneyModule(baseModule.withCurrencyFieldName(name), names.withCurrency(name), amountFactory, fastMoneyFactory, moneyFactory, roundedMoneyFactory); + return new MonetaMoneyModule(baseModule.withCurrencyFieldName(name), names.withCurrency(name), fastMoneyFactory, moneyFactory, roundedMoneyFactory); } public MonetaMoneyModule withFormattedFieldName(final String name) { - return new MonetaMoneyModule(baseModule.withFormattedFieldName(name), names.withFormatted(name), amountFactory, fastMoneyFactory, moneyFactory, roundedMoneyFactory); + return new MonetaMoneyModule(baseModule.withFormattedFieldName(name), names.withFormatted(name), fastMoneyFactory, moneyFactory, roundedMoneyFactory); }