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.format; 17 18 import java.io.IOException; 19 20 import org.joda.money.BigMoney; 21 22 /** 23 * Prints part of a monetary value to the output appendable. 24 * <p> 25 * The printer may print any part, or the whole, of the input {@link BigMoney}. 26 * Typically, a complete print is constructed from a number of smaller printers 27 * that have been combined using {@link MoneyFormatterBuilder}. 28 * <p> 29 * This interface must be implemented with care to ensure other classes operate correctly. 30 * All instantiable implementations must be thread-safe, and should generally 31 * be final and immutable. 32 */ 33 public interface MoneyPrinter { 34 35 /** 36 * Prints part of a monetary value to the output appendable. 37 * <p> 38 * The implementation determines what to append, which may be some or all 39 * of the data held in the {@code BigMoney}. 40 * <p> 41 * The context is not a thread-safe object and a new instance will be created 42 * for each print. The context must not be stored in an instance variable 43 * or shared with any other threads. 44 * 45 * @param context the context being used, not null 46 * @param appendable the appendable to add to, not null 47 * @param money the money to print, not null 48 * @throws MoneyFormatException if there is a problem while printing 49 * @throws IOException if an IO exception occurs 50 */ 51 void print(MoneyPrintContext context, Appendable appendable, BigMoney money) throws IOException; 52 53 }