001/*
002  Copyright (c) 2012, 2014, Credit Suisse (Anatole Tresch), Werner Keil and others by the @author tag.
003
004  Licensed under the Apache License, Version 2.0 (the "License"); you may not
005  use this file except in compliance with the License. You may obtain a copy of
006  the License at
007
008  http://www.apache.org/licenses/LICENSE-2.0
009
010  Unless required by applicable law or agreed to in writing, software
011  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013  License for the specific language governing permissions and limitations under
014  the License.
015 */
016package org.javamoney.moneta.spi;
017
018import javax.money.CurrencyUnit;
019import javax.money.MonetaryAmount;
020
021/**
022 *The producer of {@link MonetaryAmount} from {@link CurrencyUnit} and {@link Number}
023 * @author Otavio Santana
024 * @see FastMoneyProducer
025 * @see MoneyProducer
026 * @see RoundedMoneyProducer
027 */
028//@FunctionalInterface
029public interface MonetaryAmountProducer {
030        /**
031         * Creates a {@link MonetaryAmount} from {@link CurrencyUnit} and {@link Number}
032         * @param currency the currency, not null.
033         * @param number the amount, not null.
034         * @return a {@link MonetaryAmount} never null
035         * @throws NullPointerException if currency and Number is null
036         */
037        MonetaryAmount create(CurrencyUnit currency, Number number);
038
039}