001/* 002 Copyright (c) 2012, 2018, 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.convert; 017 018import java.util.Objects; 019 020import javax.money.CurrencyUnit; 021import javax.money.MonetaryAmount; 022import javax.money.MonetaryOperator; 023 024/** 025 * MonetaryOperator class that applies an exchange rate to an amount. 026 */ 027public class ExchangeCurrencyOperator implements MonetaryOperator { 028 /** The target currency. */ 029 private final CurrencyUnit currency; 030 031 /** 032 * Constructor. 033 * @param currency the target currency, not null. 034 */ 035 ExchangeCurrencyOperator(CurrencyUnit currency) { 036 this.currency = Objects.requireNonNull(currency); 037 } 038 039 @Override 040 public MonetaryAmount apply(MonetaryAmount amount) { 041 Objects.requireNonNull(amount, "Amount required."); 042 return amount.getFactory().setCurrency(currency).create(); 043 } 044}