001/*
002 * CREDIT SUISSE IS WILLING TO LICENSE THIS SPECIFICATION TO YOU ONLY UPON THE CONDITION THAT YOU
003 * ACCEPT ALL OF THE TERMS CONTAINED IN THIS AGREEMENT. PLEASE READ THE TERMS AND CONDITIONS OF THIS
004 * AGREEMENT CAREFULLY. BY DOWNLOADING THIS SPECIFICATION, YOU ACCEPT THE TERMS AND CONDITIONS OF
005 * THE AGREEMENT. IF YOU ARE NOT WILLING TO BE BOUND BY IT, SELECT THE "DECLINE" BUTTON AT THE
006 * BOTTOM OF THIS PAGE. Specification: JSR-354 Money and Currency API ("Specification") Copyright
007 * (c) 2012-2013, Credit Suisse All rights reserved.
008 */
009package org.javamoney.moneta.internal;
010
011import javax.money.MonetaryAmountFactory;
012import javax.money.MonetaryContext;
013import javax.money.spi.MonetaryAmountFactoryProviderSpi;
014
015import org.javamoney.moneta.Money;
016import org.javamoney.moneta.ServicePriority;
017
018/**
019 * Implementation of {@link MonetaryAmountFactoryProviderSpi} creating instances of
020 * {@link MoneyAmountFactory}.
021 * 
022 * @author Anatole Tresch
023 */
024@ServicePriority(10)
025public final class MoneyAmountFactoryProvider implements
026                MonetaryAmountFactoryProviderSpi<Money> {
027
028        @Override
029        public Class<Money> getAmountType() {
030                return Money.class;
031        }
032
033        @Override
034        public MonetaryAmountFactory<Money> createMonetaryAmountFactory() {
035                return new MoneyAmountFactory();
036        }
037
038        /*
039         * (non-Javadoc)
040         * @see javax.money.spi.MonetaryAmountFactoryProviderSpi#getQueryInclusionPolicy()
041         */
042        @Override
043        public QueryInclusionPolicy getQueryInclusionPolicy() {
044                return QueryInclusionPolicy.ALWAYS;
045        }
046
047        @Override
048        public MonetaryContext getDefaultMonetaryContext() {
049                return MoneyAmountFactory.DEFAULT_CONTEXT;
050        }
051
052        @Override
053        public MonetaryContext getMaximalMonetaryContext() {
054                return MoneyAmountFactory.MAX_CONTEXT;
055        }
056}