Coverage Report - org.joda.money.BigMoneyProvider
 
Classes in this File Line Coverage Branch Coverage Complexity
BigMoneyProvider
N/A
N/A
1
 
 1  
 /*
 2  
  *  Copyright 2009-2013 Stephen Colebourne
 3  
  *
 4  
  *  Licensed under the Apache License, Version 2.0 (the "License");
 5  
  *  you may not use this file except in compliance with the License.
 6  
  *  You may obtain a copy of the License at
 7  
  *
 8  
  *      http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  *  Unless required by applicable law or agreed to in writing, software
 11  
  *  distributed under the License is distributed on an "AS IS" BASIS,
 12  
  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  *  See the License for the specific language governing permissions and
 14  
  *  limitations under the License.
 15  
  */
 16  
 package org.joda.money;
 17  
 
 18  
 /**
 19  
  * Provides a uniform interface to obtain a {@code BigMoney}.
 20  
  * <p>
 21  
  * When designing APIs, it is recommended to use {@code BigMoneyProvider}
 22  
  * in method signatures where possible to allow the widest possible use of the method.
 23  
  * Within Joda-Money, both {@code BigMoney} and {@code Money} implement
 24  
  * the provider interface.
 25  
  * <p>
 26  
  * Implementations of {@code BigMoneyProvider} may be mutable.
 27  
  * To minimise the risk of the value of the provider changing while processing,
 28  
  * any method that takes a {@code BigMoneyProvider} as a parameter should convert
 29  
  * it to a {@code BigMoney} immediately and use that directly from then on.
 30  
  * The method {@link BigMoney#of(BigMoneyProvider)} performs the conversion
 31  
  * safely with null checks and is recommended for this purpose.
 32  
  * <p>
 33  
  * This interface makes no guarantees about the immutability or
 34  
  * thread-safety of implementations.
 35  
  */
 36  
 public interface BigMoneyProvider {
 37  
 
 38  
     /**
 39  
      * Returns a {@code BigMoney} instance equivalent to the value of this object.
 40  
      * <p>
 41  
      * It is recommended that {@link BigMoney#of(BigMoneyProvider)} is used in
 42  
      * preference to calling this method directly. It is also recommended that the
 43  
      * converted {@code BigMoney} is cached in a local variable instead of
 44  
      * performing the conversion multiple times.
 45  
      * 
 46  
      * @return the converted money instance, never null
 47  
      * @throws RuntimeException if conversion is not possible
 48  
      */
 49  
     BigMoney toBigMoney();
 50  
 
 51  
 }