MonetaryFormatter.java

package org.freshmarker.money;

import org.freshmarker.api.Formatter;
import org.freshmarker.core.formatter.LocaleLocal;

import javax.money.format.MonetaryAmountFormat;
import javax.money.format.MonetaryFormats;
import java.util.Locale;

import org.javamoney.moneta.Money;

public class MonetaryFormatter implements Formatter {
    private final LocaleLocal<MonetaryAmountFormat> localeLocal = LocaleLocal.withInitial(MonetaryFormats::getAmountFormat);

	@Override
	public String format(Object value, Locale locale) {
		return localeLocal.get(locale).format(((Money) value));
	}

}