From 9464f43bcd1b061ae10cd24e2834d4f50e78638e Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Thu, 10 Apr 2025 14:45:39 -0700 Subject: [PATCH] De-lombokify Moneta module as well, remove Lombok dependency --- moneta/pom.xml | 5 - .../moneta/MonetaryAmountSerializerTest.java | 252 ++++++++++-------- .../datatype/moneta/SchemaTestClass.java | 22 +- pom.xml | 12 - 4 files changed, 160 insertions(+), 131 deletions(-) diff --git a/moneta/pom.xml b/moneta/pom.xml index 0b494f3..4a145b8 100644 --- a/moneta/pom.xml +++ b/moneta/pom.xml @@ -61,11 +61,6 @@ 3.0.2 provided - - org.projectlombok - lombok - provided - diff --git a/moneta/src/test/java/com/fasterxml/jackson/datatype/moneta/MonetaryAmountSerializerTest.java b/moneta/src/test/java/com/fasterxml/jackson/datatype/moneta/MonetaryAmountSerializerTest.java index 9fc1bbe..023097d 100644 --- a/moneta/src/test/java/com/fasterxml/jackson/datatype/moneta/MonetaryAmountSerializerTest.java +++ b/moneta/src/test/java/com/fasterxml/jackson/datatype/moneta/MonetaryAmountSerializerTest.java @@ -1,63 +1,46 @@ +// Generated by delombok at Thu Apr 10 14:39:25 PDT 2025 package com.fasterxml.jackson.datatype.moneta; import java.math.BigDecimal; import java.util.Arrays; import java.util.Locale; - import javax.money.MonetaryAmount; - import com.fasterxml.jackson.annotation.JsonUnwrapped; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.json.JsonWriteFeature; -import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectWriter; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.json.JsonMapper; import com.fasterxml.jackson.databind.jsontype.BasicPolymorphicTypeValidator; import com.fasterxml.jackson.datatype.javax.money.AmountWriter; -import com.fasterxml.jackson.datatype.moneta.MonetaMoneyModule; - -import lombok.Value; import org.javamoney.moneta.FastMoney; import org.javamoney.moneta.Money; import org.javamoney.moneta.RoundedMoney; -import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; - import static javax.money.Monetary.getDefaultRounding; import static org.assertj.core.api.Assertions.assertThat; public final class MonetaryAmountSerializerTest { - static Iterable amounts() { - return Arrays.asList( - FastMoney.of(29.95, "EUR"), - Money.of(29.95, "EUR"), - RoundedMoney.of(29.95, "EUR", getDefaultRounding())); + return Arrays.asList(FastMoney.of(29.95, "EUR"), Money.of(29.95, "EUR"), RoundedMoney.of(29.95, "EUR", getDefaultRounding())); } static Iterable hundreds() { - return Arrays.asList( - FastMoney.of(100, "EUR"), - Money.of(100, "EUR"), - RoundedMoney.of(100, "EUR", getDefaultRounding())); + return Arrays.asList(FastMoney.of(100, "EUR"), Money.of(100, "EUR"), RoundedMoney.of(100, "EUR", getDefaultRounding())); } static Iterable fractions() { - return Arrays.asList( - FastMoney.of(0.0001, "EUR"), - Money.of(0.0001, "EUR"), - RoundedMoney.of(0.0001, "EUR", getDefaultRounding())); + return Arrays.asList(FastMoney.of(1.0E-4, "EUR"), Money.of(1.0E-4, "EUR"), RoundedMoney.of(1.0E-4, "EUR", getDefaultRounding())); } private ObjectMapper unit() { return unit(module()); } - private ObjectMapper unit(final Module module) { + private ObjectMapper unit(com.fasterxml.jackson.databind.Module module) { return build(module).build(); } @@ -65,9 +48,8 @@ private JsonMapper.Builder build() { return build(module()); } - private JsonMapper.Builder build(final Module module) { - return JsonMapper.builder() - .addModule(module); + private JsonMapper.Builder build(final com.fasterxml.jackson.databind.Module module) { + return JsonMapper.builder().addModule(module); } private MonetaMoneyModule module() { @@ -76,37 +58,29 @@ private MonetaMoneyModule module() { @ParameterizedTest @MethodSource("amounts") - public void shouldSerialize(final MonetaryAmount amount) throws JsonProcessingException { + public void shouldSerialize(final MonetaryAmount amount) throws Exception { final ObjectMapper unit = unit(); - final String expected = "{\"amount\":29.95,\"currency\":\"EUR\"}"; final String actual = unit.writeValueAsString(amount); - assertThat(actual).isEqualTo(expected); } @ParameterizedTest @MethodSource("amounts") - public void shouldSerializeWithoutFormattedValueIfFactoryProducesNull( - final MonetaryAmount amount) throws JsonProcessingException { + public void shouldSerializeWithoutFormattedValueIfFactoryProducesNull(final MonetaryAmount amount) throws Exception { final ObjectMapper unit = unit(module().withoutFormatting()); - final String expected = "{\"amount\":29.95,\"currency\":\"EUR\"}"; final String actual = unit.writeValueAsString(amount); - assertThat(actual).isEqualTo(expected); } @ParameterizedTest @MethodSource("amounts") - public void shouldSerializeWithFormattedGermanValue(final MonetaryAmount amount) throws JsonProcessingException { + public void shouldSerializeWithFormattedGermanValue(final MonetaryAmount amount) throws Exception { final ObjectMapper unit = unit(new MonetaMoneyModule().withDefaultFormatting()); - final String expected = "{\"amount\":29.95,\"currency\":\"EUR\",\"formatted\":\"29,95 EUR\"}"; - final ObjectWriter writer = unit.writer().with(Locale.GERMANY); final String actual = writer.writeValueAsString(amount); - assertThat(actual).isEqualTo(expected); } @@ -114,28 +88,19 @@ public void shouldSerializeWithFormattedGermanValue(final MonetaryAmount amount) @MethodSource("amounts") public void shouldSerializeWithFormattedAmericanValue(final MonetaryAmount amount) throws JsonProcessingException { final ObjectMapper unit = unit(module().withDefaultFormatting()); - final String expected = "{\"amount\":29.95,\"currency\":\"USD\",\"formatted\":\"USD29.95\"}"; - final ObjectWriter writer = unit.writer().with(Locale.US); final String actual = writer.writeValueAsString(amount.getFactory().setCurrency("USD").create()); - assertThat(actual).isEqualTo(expected); } @ParameterizedTest @MethodSource("amounts") public void shouldSerializeWithCustomName(final MonetaryAmount amount) throws Exception { - final ObjectMapper unit = unit(module().withDefaultFormatting() - .withAmountFieldName("value") - .withCurrencyFieldName("unit") - .withFormattedFieldName("pretty")); - + final ObjectMapper unit = unit(module().withDefaultFormatting().withAmountFieldName("value").withCurrencyFieldName("unit").withFormattedFieldName("pretty")); final String expected = "{\"value\":29.95,\"unit\":\"EUR\",\"pretty\":\"29,95 EUR\"}"; - final ObjectWriter writer = unit.writer().with(Locale.GERMANY); final String actual = writer.writeValueAsString(amount); - assertThat(actual).isEqualTo(expected); } @@ -143,56 +108,44 @@ public void shouldSerializeWithCustomName(final MonetaryAmount amount) throws Ex @MethodSource("amounts") public void shouldSerializeAmountAsDecimal(final MonetaryAmount amount) throws JsonProcessingException { final ObjectMapper unit = unit(module().withDecimalNumbers()); - final String expected = "{\"amount\":29.95,\"currency\":\"EUR\"}"; final String actual = unit.writeValueAsString(amount); - assertThat(actual).isEqualTo(expected); } @ParameterizedTest @MethodSource("hundreds") - public void shouldSerializeAmountAsDecimalWithDefaultFractionDigits( - final MonetaryAmount hundred) throws JsonProcessingException { + public void shouldSerializeAmountAsDecimalWithDefaultFractionDigits(final MonetaryAmount hundred) throws JsonProcessingException { final ObjectMapper unit = unit(module().withDecimalNumbers()); - final String expected = "{\"amount\":100.00,\"currency\":\"EUR\"}"; final String actual = unit.writeValueAsString(hundred); - assertThat(actual).isEqualTo(expected); } @ParameterizedTest @MethodSource("fractions") - public void shouldSerializeAmountAsDecimalWithHigherNumberOfFractionDigits( - final MonetaryAmount fraction) throws JsonProcessingException { + public void shouldSerializeAmountAsDecimalWithHigherNumberOfFractionDigits(final MonetaryAmount fraction) throws JsonProcessingException { final ObjectMapper unit = unit(module().withDecimalNumbers()); - final String expected = "{\"amount\":0.0001,\"currency\":\"EUR\"}"; final String actual = unit.writeValueAsString(fraction); - assertThat(actual).isEqualTo(expected); } @ParameterizedTest @MethodSource("hundreds") - public void shouldSerializeAmountAsDecimalWithLowerNumberOfFractionDigits( - final MonetaryAmount hundred) throws JsonProcessingException { + public void shouldSerializeAmountAsDecimalWithLowerNumberOfFractionDigits(final MonetaryAmount hundred) throws JsonProcessingException { final ObjectMapper unit = unit(module().withNumbers(new AmountWriter() { @Override public Class getType() { return BigDecimal.class; } - @Override public BigDecimal write(final MonetaryAmount amount) { return amount.getNumber().numberValueExact(BigDecimal.class).stripTrailingZeros(); } })); - final String expected = "{\"amount\":1E+2,\"currency\":\"EUR\"}"; final String actual = unit.writeValueAsString(hundred); - assertThat(actual).isEqualTo(expected); } @@ -200,56 +153,44 @@ public BigDecimal write(final MonetaryAmount amount) { @MethodSource("amounts") public void shouldSerializeAmountAsQuotedDecimal(final MonetaryAmount amount) throws JsonProcessingException { final ObjectMapper unit = unit(module().withQuotedDecimalNumbers()); - final String expected = "{\"amount\":\"29.95\",\"currency\":\"EUR\"}"; final String actual = unit.writeValueAsString(amount); - assertThat(actual).isEqualTo(expected); } @ParameterizedTest @MethodSource("hundreds") - public void shouldSerializeAmountAsQuotedDecimalWithDefaultFractionDigits( - final MonetaryAmount hundred) throws JsonProcessingException { + public void shouldSerializeAmountAsQuotedDecimalWithDefaultFractionDigits(final MonetaryAmount hundred) throws JsonProcessingException { final ObjectMapper unit = unit(module().withQuotedDecimalNumbers()); - final String expected = "{\"amount\":\"100.00\",\"currency\":\"EUR\"}"; final String actual = unit.writeValueAsString(hundred); - assertThat(actual).isEqualTo(expected); } @ParameterizedTest @MethodSource("fractions") - public void shouldSerializeAmountAsQuotedDecimalWithHigherNumberOfFractionDigits( - final MonetaryAmount fraction) throws JsonProcessingException { + public void shouldSerializeAmountAsQuotedDecimalWithHigherNumberOfFractionDigits(final MonetaryAmount fraction) throws JsonProcessingException { final ObjectMapper unit = unit(module().withQuotedDecimalNumbers()); - final String expected = "{\"amount\":\"0.0001\",\"currency\":\"EUR\"}"; final String actual = unit.writeValueAsString(fraction); - assertThat(actual).isEqualTo(expected); } @ParameterizedTest @MethodSource("hundreds") - public void shouldSerializeAmountAsQuotedDecimalWithLowerNumberOfFractionDigits( - final MonetaryAmount hundred) throws JsonProcessingException { + public void shouldSerializeAmountAsQuotedDecimalWithLowerNumberOfFractionDigits(final MonetaryAmount hundred) throws JsonProcessingException { final ObjectMapper unit = unit(module().withNumbers(new AmountWriter() { @Override public Class getType() { return String.class; } - @Override public String write(final MonetaryAmount amount) { return amount.getNumber().numberValueExact(BigDecimal.class).stripTrailingZeros().toPlainString(); } })); - final String expected = "{\"amount\":\"100\",\"currency\":\"EUR\"}"; final String actual = unit.writeValueAsString(hundred); - assertThat(actual).isEqualTo(expected); } @@ -258,37 +199,26 @@ public String write(final MonetaryAmount amount) { public void shouldSerializeAmountAsQuotedDecimalPlainString(final MonetaryAmount hundred) throws JsonProcessingException { final ObjectMapper unit = unit(module().withQuotedDecimalNumbers()); unit.enable(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN); - final String expected = "{\"amount\":\"100.00\",\"currency\":\"EUR\"}"; final String actual = unit.writeValueAsString(hundred); - assertThat(actual).isEqualTo(expected); } @ParameterizedTest @MethodSource("amounts") public void shouldWriteNumbersAsStrings(final MonetaryAmount amount) throws JsonProcessingException { - final ObjectMapper unit = build() - .enable(JsonWriteFeature.WRITE_NUMBERS_AS_STRINGS) - .build(); - + final ObjectMapper unit = build().enable(JsonWriteFeature.WRITE_NUMBERS_AS_STRINGS).build(); final String expected = "{\"amount\":\"29.95\",\"currency\":\"EUR\"}"; final String actual = unit.writeValueAsString(amount); - assertThat(actual).isEqualTo(expected); } @ParameterizedTest @MethodSource("hundreds") public void shouldWriteNumbersAsPlainStrings(final MonetaryAmount hundred) throws JsonProcessingException { - final ObjectMapper unit = build() - .enable(JsonWriteFeature.WRITE_NUMBERS_AS_STRINGS) - .enable(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN) - .build(); - + final ObjectMapper unit = build().enable(JsonWriteFeature.WRITE_NUMBERS_AS_STRINGS).enable(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN).build(); final String expected = "{\"amount\":\"100.00\",\"currency\":\"EUR\"}"; final String actual = unit.writeValueAsString(hundred); - assertThat(actual).isEqualTo(expected); } @@ -296,10 +226,8 @@ public void shouldWriteNumbersAsPlainStrings(final MonetaryAmount hundred) throw @MethodSource("amounts") public void shouldSerializeWithType(final MonetaryAmount amount) throws JsonProcessingException { final ObjectMapper unit = unit(module()).activateDefaultTyping(BasicPolymorphicTypeValidator.builder().build()); - final String expected = "{\"amount\":{\"amount\":29.95,\"currency\":\"EUR\"}}"; final String actual = unit.writeValueAsString(new Price(amount)); - assertThat(actual).isEqualTo(expected); } @@ -307,10 +235,8 @@ public void shouldSerializeWithType(final MonetaryAmount amount) throws JsonProc @MethodSource("amounts") public void shouldSerializeWithTypeUnwrapped(final MonetaryAmount amount) throws JsonProcessingException { final ObjectMapper unit = unit(module()).activateDefaultTyping(BasicPolymorphicTypeValidator.builder().build()); - final String expected = "{\"amount\":29.95,\"currency\":\"EUR\"}"; final String actual = unit.writeValueAsString(new PriceUnwrapped(amount)); - assertThat(actual).isEqualTo(expected); } @@ -318,10 +244,8 @@ public void shouldSerializeWithTypeUnwrapped(final MonetaryAmount amount) throws @MethodSource("amounts") public void shouldSerializeWithTypeUnwrappedAndNamesTransformed(final MonetaryAmount amount) throws JsonProcessingException { final ObjectMapper unit = unit(module()).activateDefaultTyping(BasicPolymorphicTypeValidator.builder().build()); - final String expected = "{\"Price-amount-Field\":29.95,\"Price-currency-Field\":\"EUR\"}"; final String actual = unit.writeValueAsString(new PriceUnwrappedTransformedNames(amount)); - assertThat(actual).isEqualTo(expected); } @@ -337,30 +261,140 @@ public void shouldSerializeWithTypeUnwrappedAndNamesTransformed(final MonetaryAm @ParameterizedTest @MethodSource("amounts") public void shouldSerializeWithWrapRootValue(final MonetaryAmount amount) throws JsonProcessingException { - final ObjectMapper unit = unit(module()) - .configure(SerializationFeature.WRAP_ROOT_VALUE, true); - + final ObjectMapper unit = unit(module()).configure(SerializationFeature.WRAP_ROOT_VALUE, true); final String expected = "{\"Price\":{\"amount\":{\"amount\":29.95,\"currency\":\"EUR\"}}}"; final String actual = unit.writeValueAsString(new Price(amount)); - assertThat(actual).isEqualTo(expected); } - @Value - static class Price { - MonetaryAmount amount; + + static final class Price { + private final MonetaryAmount amount; + + //@lombok.Generated + public Price(final MonetaryAmount amount) { + this.amount = amount; + } + + //@lombok.Generated + public MonetaryAmount getAmount() { + return this.amount; + } + + //@lombok.Generated + @java.lang.Override + public boolean equals(final java.lang.Object o) { + if (o == this) return true; + if (!(o instanceof MonetaryAmountSerializerTest.Price)) return false; + final MonetaryAmountSerializerTest.Price other = (MonetaryAmountSerializerTest.Price) o; + final java.lang.Object this$amount = this.getAmount(); + final java.lang.Object other$amount = other.getAmount(); + if (this$amount == null ? other$amount != null : !this$amount.equals(other$amount)) return false; + return true; + } + + //@lombok.Generated + @java.lang.Override + public int hashCode() { + final int PRIME = 59; + int result = 1; + final java.lang.Object $amount = this.getAmount(); + result = result * PRIME + ($amount == null ? 43 : $amount.hashCode()); + return result; + } + + //@lombok.Generated + @java.lang.Override + public java.lang.String toString() { + return "MonetaryAmountSerializerTest.Price(amount=" + this.getAmount() + ")"; + } } - @Value - private static class PriceUnwrapped { + + private static final class PriceUnwrapped { @JsonUnwrapped - MonetaryAmount amount; + private final MonetaryAmount amount; + + //@lombok.Generated + public PriceUnwrapped(final MonetaryAmount amount) { + this.amount = amount; + } + + //@lombok.Generated + public MonetaryAmount getAmount() { + return this.amount; + } + + //@lombok.Generated + @java.lang.Override + public boolean equals(final java.lang.Object o) { + if (o == this) return true; + if (!(o instanceof MonetaryAmountSerializerTest.PriceUnwrapped)) return false; + final MonetaryAmountSerializerTest.PriceUnwrapped other = (MonetaryAmountSerializerTest.PriceUnwrapped) o; + final java.lang.Object this$amount = this.getAmount(); + final java.lang.Object other$amount = other.getAmount(); + if (this$amount == null ? other$amount != null : !this$amount.equals(other$amount)) return false; + return true; + } + + //@lombok.Generated + @java.lang.Override + public int hashCode() { + final int PRIME = 59; + int result = 1; + final java.lang.Object $amount = this.getAmount(); + result = result * PRIME + ($amount == null ? 43 : $amount.hashCode()); + return result; + } + + //@lombok.Generated + @java.lang.Override + public java.lang.String toString() { + return "MonetaryAmountSerializerTest.PriceUnwrapped(amount=" + this.getAmount() + ")"; + } } - @Value - private static class PriceUnwrappedTransformedNames { + + private static final class PriceUnwrappedTransformedNames { @JsonUnwrapped(prefix = "Price-", suffix = "-Field") - MonetaryAmount amount; + private final MonetaryAmount amount; + + //@lombok.Generated + public PriceUnwrappedTransformedNames(final MonetaryAmount amount) { + this.amount = amount; + } + + //@lombok.Generated + public MonetaryAmount getAmount() { + return this.amount; + } + + //@lombok.Generated + @java.lang.Override + public boolean equals(final java.lang.Object o) { + if (o == this) return true; + if (!(o instanceof MonetaryAmountSerializerTest.PriceUnwrappedTransformedNames)) return false; + final MonetaryAmountSerializerTest.PriceUnwrappedTransformedNames other = (MonetaryAmountSerializerTest.PriceUnwrappedTransformedNames) o; + final java.lang.Object this$amount = this.getAmount(); + final java.lang.Object other$amount = other.getAmount(); + if (this$amount == null ? other$amount != null : !this$amount.equals(other$amount)) return false; + return true; + } + + //@lombok.Generated + @java.lang.Override + public int hashCode() { + final int PRIME = 59; + int result = 1; + final java.lang.Object $amount = this.getAmount(); + result = result * PRIME + ($amount == null ? 43 : $amount.hashCode()); + return result; + } + + //@lombok.Generated + @java.lang.Override + public java.lang.String toString() { + return "MonetaryAmountSerializerTest.PriceUnwrappedTransformedNames(amount=" + this.getAmount() + ")"; + } } - } diff --git a/moneta/src/test/java/com/fasterxml/jackson/datatype/moneta/SchemaTestClass.java b/moneta/src/test/java/com/fasterxml/jackson/datatype/moneta/SchemaTestClass.java index 0e3a64b..d12c936 100644 --- a/moneta/src/test/java/com/fasterxml/jackson/datatype/moneta/SchemaTestClass.java +++ b/moneta/src/test/java/com/fasterxml/jackson/datatype/moneta/SchemaTestClass.java @@ -1,13 +1,25 @@ +// Generated by delombok at Thu Apr 10 14:03:28 PDT 2025 package com.fasterxml.jackson.datatype.moneta; import javax.money.MonetaryAmount; -import lombok.AllArgsConstructor; -import lombok.Getter; - -@AllArgsConstructor -@Getter public class SchemaTestClass { private final MonetaryAmount moneyOne; private final MonetaryAmount moneyTwo; + + //@lombok.Generated + public SchemaTestClass(final MonetaryAmount moneyOne, final MonetaryAmount moneyTwo) { + this.moneyOne = moneyOne; + this.moneyTwo = moneyTwo; + } + + //@lombok.Generated + public MonetaryAmount getMoneyOne() { + return this.moneyOne; + } + + //@lombok.Generated + public MonetaryAmount getMoneyTwo() { + return this.moneyTwo; + } } diff --git a/pom.xml b/pom.xml index 3728869..71f81c8 100644 --- a/pom.xml +++ b/pom.xml @@ -41,21 +41,9 @@ - 1.18.36 - 2025-04-08T02:04:31Z - - - - - org.projectlombok - lombok - ${version.lombok} - - -