← joda-money  /  src/main/java/org/joda/money/CurrencyMismatchException.java

1
/*
2
 *  Copyright 2009-present, 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
 * Exception thrown when a monetary operation fails due to mismatched currencies.
20
 * <p>
21
 * For example, this exception would be thrown when trying to add a monetary
22
 * value in one currency to a monetary value in a different currency.
23
 * <p>
24
 * This exception makes no guarantees about immutability or thread-safety.
25
 */
26
public class CurrencyMismatchException extends IllegalArgumentException {
27
28
    /** Serialization lock. */
29
    private static final long serialVersionUID = 1L;
30
31
    /** First currency. */
32
    private final CurrencyUnit firstCurrency;
33
    /** Second currency. */
34
    private final CurrencyUnit secondCurrency;
35
36
    /**
37
     * Constructor.
38
     *
39
     * @param firstCurrency  the first currency, may be null
40
     * @param secondCurrency  the second currency, not null
41
     */
42
    public CurrencyMismatchException(CurrencyUnit firstCurrency, CurrencyUnit secondCurrency) {
43
        super("Currencies differ: " +
44
                (firstCurrency != null ? firstCurrency.getCode() : "null") + '/' +
45
                (secondCurrency != null ? secondCurrency.getCode() : "null"));
46
        this.firstCurrency = firstCurrency;
47
        this.secondCurrency = secondCurrency;
48
    }
49
50
    //-----------------------------------------------------------------------
51
    /**
52
     * Gets the first currency at fault.
53
     *
54
     * @return the currency at fault, may be null
55
     */
56
    public CurrencyUnit getFirstCurrency() {
57
        return firstCurrency;
58
    }
59
60
    /**
61
     * Gets the second currency at fault.
62
     *
63
     * @return the currency at fault, may be null
64
     */
65
    public CurrencyUnit getSecondCurrency() {
66
        return secondCurrency;
67
    }
68
69
}
70