@Override public CurrencyUnit parse(String text, Locale locale) { return Monetary.getCurrency(text); }
@Override public MonetaryAmount parse(String text, Locale locale) throws ParseException { CurrencyUnit currencyUnit = Monetary.getCurrency(locale); Number numberValue = this.numberFormatter.parse(text, locale); return Monetary.getDefaultAmountFactory().setNumber(numberValue).setCurrency(currencyUnit).create(); } }
/** * Static factory method for creating a new instance of {@link RoundedMoney} . * * @param currencyCode The target currency as ISO currency code. * @param number The numeric part, not null. * @return A new instance of {@link RoundedMoney}. */ @Deprecated public static RoundedMoney of(Number number, String currencyCode) { return new RoundedMoney(number, Monetary.getCurrency(currencyCode), Monetary.getDefaultRounding()); }
/** * Gets the {@link javax.money.MonetaryAmountFactoryQuery} to be used for accessing {@link javax.money * .MonetaryAmountFactory}, when amount's are parsed. * * @return the monetary context, or {@code null}. */ @SuppressWarnings("rawtypes") public MonetaryAmountFactory getMonetaryAmountFactory() { MonetaryAmountFactory factory = get(MonetaryAmountFactory.class); if (factory == null) { return Monetary.getDefaultAmountFactory(); } return factory; }
/** * @param args */ public static void main(String[] args) { MonetaryAmount amount = Monetary.getDefaultAmountFactory().setCurrency("EUR").setNumber(234).create(); ConsoleUtils.printDetails(amount); amount = Monetary.getAmountFactory(FastMoney.class).setCurrency("EUR").setNumber(234).create(); ConsoleUtils.printDetails(amount); amount = Monetary.getAmountFactory( MonetaryAmountFactoryQueryBuilder.of().setMaxScale(50).setPrecision(30).build()) .setCurrency("EUR").setNumber(234).create(); ConsoleUtils.printDetails(amount); Money amt1 = Money.of(10.1234556123456789, "USD"); FastMoney amt2 = FastMoney.of(123456789, "USD"); Money total = amt1.add(amt2).multiply(0.5) .remainder(1); ConsoleUtils.printDetails(total); }
/** * For each MonetaryAmount implementation: Ensure getCurrencyCode * returns correct results. */ @SpecAssertion(section = "4.2.2", id = "422-A1") @Test(description = "4.2.2 Ensure amount can be created with all default currencies.") public void testCurrencyCode() { for (Class type : Monetary.getAmountTypes()) { for (Currency jdkCur : Currency.getAvailableCurrencies()) { MonetaryAmount amount = Monetary.getDefaultAmountFactory().setCurrency(jdkCur.getCurrencyCode()).setNumber(10.15) .create(); AssertJUnit.assertNotNull( "Section 4.2.2: Amount factory returned null for new amount type: " + type.getName(), amount); AssertJUnit.assertNotNull( "Section 4.2.2: Amount factory returned new amount with null currency, type: " + type.getName(), amount.getCurrency()); AssertJUnit.assertEquals( "Section 4.2.2: Amount factory returned new amount with invalid currency, type: " + type.getName(), jdkCur.getCurrencyCode(), amount.getCurrency().getCurrencyCode()); } } }
/** * Format several amounts, created using the default factory, * but * also a test instance, provided by the TCK, to ensure no * implementation * dependencies on the implementation. */ @SpecAssertion(section = "4.4.1", id = "441-A1") @Test(description = "4.4.1 Ensures the system.s default locale is supported for MonetaryAmountFormat.") public void testNoDepOnAmountImplementation() { final Locale defaultLocale = Locale.getDefault(); MonetaryAmountFormat amountFormat = MonetaryFormats.getAmountFormat(defaultLocale); final Number[] values = new Number[]{100, 10000000000000L}; for (CurrencyUnit currency : Monetary.getCurrencies()) { for (Number value : values) { MonetaryAmount amount = Monetary.getDefaultAmountFactory().setCurrency(currency.getCurrencyCode()) .setNumber(value).create(); String formattedAmount = amountFormat.format(amount); MonetaryAmount amountMock = TestMonetaryAmountBuilder.getAmount(value, currency); String formattedAmountMock = amountFormat.format(amountMock); AssertJUnit.assertNotNull(formattedAmountMock); assertEquals(formattedAmountMock, formattedAmount); } } }
/** * Translates a {@code BigDecimal} value and a {@code CurrencyUnit} currency into a * {@code Money}. * * @param number numeric value of the {@code Money}. * @param currency currency unit of the {@code Money}. * @return a {@code Money} combining the numeric value and currency unit. */ public static RoundedMoney of(BigDecimal number, CurrencyUnit currency) { return new RoundedMoney(number, currency, Monetary.getDefaultRounding()); }
private void applyJavaMoneyHack() { //fixes https://github.com/commercetools/commercetools-sunrise-java/issues/404 //exception play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[CompletionException: java.lang.IllegalArgumentException: java.util.concurrent.CompletionException: io.sphere.sdk.json.JsonException: detailMessage: com.fasterxml.jackson.databind.JsonMappingException: Operator failed: javax.money.DefaultMonetaryRoundingsSingletonSpi$DefaultCurrencyRounding@1655879e (through reference chain: io.sphere.sdk.payments.PaymentDraftImpl["amountPlanned"]) Monetary.getDefaultRounding(); Monetary.getDefaultRounding().apply(MoneyImpl.ofCents(123, "EUR")); Monetary.getDefaultAmountType(); MonetaryFormats.getDefaultFormatProviderChain(); Monetary.getDefaultCurrencyProviderChain(); } }
/** * Test TCK custom roundings. */ @Test(expectedExceptions = NullPointerException.class, description = "4.2.7 Ensure NullPointerException is thrown for Monetary.getRounding((String) null).") @SpecAssertion(section = "4.2.7", id = "427-C4") public void testCustomRoundings_Null() { Monetary.getRounding((String) null); }
private MonetaryOperator createUsingMonetaryContext( MonetaryContext context, MonetaryContextBuilder monetaryContextBuilder) { MathContext mathContext = context.get(MathContext.class); if (Objects.isNull(mathContext)) { RoundingMode roundingMode = context.get(RoundingMode.class); if (Objects.nonNull(roundingMode)) { int scale = ofNullable(context.getInt("scale")).orElse(SCALE_DEFAULT); monetaryContextBuilder.set(roundingMode); monetaryContextBuilder.set("scale", scale); return Monetary.getRounding(RoundingQueryBuilder.of() .setScale(scale).set(roundingMode).build()); } else { return Monetary.getDefaultRounding(); } } else { monetaryContextBuilder.set(mathContext.getRoundingMode()); monetaryContextBuilder.set("scale", SCALE_DEFAULT); return Monetary.getRounding(RoundingQueryBuilder.of().set(mathContext) .setScale(SCALE_DEFAULT).build()); } } }
/** * Ensure a default factory is returned. Test javamoney.config * for configuring default value. */ @Test(description = "4.2.7 Ensure a default MonetaryAmountFactory is available.") @SpecAssertion(section = "4.2.7", id = "427-B5") public void testAmountDefaultType() { AssertJUnit.assertNotNull("Section 4.2.7: No default MonetaryAmountFactory found.", Monetary.getDefaultAmountFactory()); }
MonetaryOperator getDefaultMonetaryOperator(MonetaryOperator rounding, MonetaryContext context, MonetaryContextBuilder monetaryContextBuilder) { if (Objects.nonNull(rounding)) { return rounding; } if (Objects.nonNull(context)) { return createUsingMonetaryContext(context, monetaryContextBuilder); } else { return Monetary.getDefaultRounding(); } }
/** * Access roundings using all defined currencies, including TCK * custom currencies. */ @Test(expectedExceptions = NullPointerException.class, description = "4.2.7 Expected NullPointerException accessing a rounding with " + "'Monetary.getRounding(null)'.") @SpecAssertion(section = "4.2.7", id = "427-C1") public void testAccessRoundingsForCustomCurrencies_Explicit_Null() { Monetary.getRounding((CurrencyUnit) null); }
@Override public CurrencyUnit parse(String text, Locale locale) { return Monetary.getCurrency(text); }
@Override public MonetaryAmount parse(String text, Locale locale) throws ParseException { CurrencyUnit currencyUnit = Monetary.getCurrency(locale); Number numberValue = this.numberFormatter.parse(text, locale); return Monetary.getDefaultAmountFactory().setNumber(numberValue).setCurrency(currencyUnit).create(); } }
factory = Monetary.getDefaultAmountFactory();
private MoneyModule(final AmountWriter writer, final FieldNames names, final MonetaryAmountFormatFactory formatFactory, final MonetaryAmountFactory<? extends MonetaryAmount> amountFactory, final FastMoneyFactory fastMoneyFactory, final MoneyFactory moneyFactory, final RoundedMoneyFactory roundedMoneyFactory) { this.writer = writer; this.names = names; this.formatFactory = formatFactory; this.amountFactory = amountFactory; this.fastMoneyFactory = fastMoneyFactory; this.moneyFactory = moneyFactory; this.roundedMoneyFactory = roundedMoneyFactory; }
/** * Access roundings using a RoundingContext, that is null. */ @Test(expectedExceptions = NullPointerException.class, description = "4.2.7 Ensure NullPointerException is thrown for " + "'Monetary.getRounding((RoundingContext) null)'.") @SpecAssertion(section = "4.2.7", id = "427-C2") public void testAccessRoundingsWithMonetaryContext_Null() { Monetary.getRounding(null); }
@Override public MonetaryAmountFactory<T> setCurrency(String currencyCode) { this.currency = Monetary.getCurrency(currencyCode); return this; }