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 /** 19 * Parses part of a textual input string of monetary information. 20 * <p> 21 * The parser is expected to start parsing at the specified text position 22 * and match against whatever it represents. 23 * The parsed result must be stored in the context. 24 * The context also provides the current parse position which must be updated. 25 * <p> 26 * This interface must be implemented with care to ensure other classes operate correctly. 27 * All instantiable implementations must be thread-safe, and should generally 28 * be final and immutable. 29 */ 30 public interface MoneyParser { 31 32 /** 33 * Parses monetary information using a textual representation. 34 * <p> 35 * The text and parse index are stored in the context. 36 * The parsed data and updated index is also stored in the context. 37 * <p> 38 * Implementations should avoid throwing exceptions and use the error index 39 * in the context instead to record the problem. 40 * The context can be assumed to not be in error on entry to this method. 41 * <p> 42 * The context is not a thread-safe object and a new instance will be created 43 * for each parse. The context must not be stored in an instance variable 44 * or shared with any other threads. 45 * 46 * @param context the context to use and parse into, not null 47 */ 48 void parse(MoneyParseContext context); 49 50 }