001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 */ 019package org.javamoney.moneta.internal; 020 021import org.javamoney.moneta.convert.*; 022import org.javamoney.moneta.spi.*; 023import org.javamoney.moneta.spi.loader.DefaultLoaderService; 024import org.osgi.framework.BundleActivator; 025import org.osgi.framework.BundleContext; 026 027import javax.money.convert.ExchangeRateProvider; 028import javax.money.spi.Bootstrap; 029import javax.money.spi.CurrencyProviderSpi; 030import javax.money.spi.MonetaryAmountFactoryProviderSpi; 031import javax.money.spi.MonetaryAmountFormatProviderSpi; 032import java.util.logging.Logger; 033 034/** 035 * A bundle activator that registers the OSGI services. 036 */ 037public class OSGIActivator implements BundleActivator { 038 039 private static final Logger LOG = Logger.getLogger(OSGIActivator.class.getName()); 040 041 private OSGIServiceProvider serviceProvider; 042 043 @Override 044 public void start(BundleContext context) { 045 // Register marker service 046 this.serviceProvider = new OSGIServiceProvider(context); 047 LOG.info("Registered OSGI ServiceProvider..."); 048 Bootstrap.init(this.serviceProvider); 049 LOG.info("Registering JavaMoney services..."); 050 OSGIServiceProvider.registerService(context.getBundle(), ExchangeRateProvider.class, ECBCurrentRateProvider.class); 051 OSGIServiceProvider.registerService(context.getBundle(), ExchangeRateProvider.class, ECBHistoricRateProvider.class); 052 OSGIServiceProvider.registerService(context.getBundle(), ExchangeRateProvider.class, ECBHistoric90RateProvider.class); 053 OSGIServiceProvider.registerService(context.getBundle(), ExchangeRateProvider.class, IMFRateProvider.class); 054 OSGIServiceProvider.registerService(context.getBundle(), ExchangeRateProvider.class, IdentityRateProvider.class); 055 OSGIServiceProvider.registerService(context.getBundle(), CurrencyProviderSpi.class, JDKCurrencyProvider.class); 056 OSGIServiceProvider.registerService(context.getBundle(), CurrencyProviderSpi.class, ConfigurableCurrencyUnitProvider.class); 057 058 OSGIServiceProvider.registerService(context.getBundle(), MonetaryAmountFactoryProviderSpi.class, FastMoneyAmountFactoryProvider.class); 059 OSGIServiceProvider.registerService(context.getBundle(), MonetaryAmountFactoryProviderSpi.class, MoneyAmountFactoryProvider.class); 060 OSGIServiceProvider.registerService(context.getBundle(), MonetaryAmountFactoryProviderSpi.class, RoundedMoneyAmountFactoryProvider.class); 061 062 OSGIServiceProvider.registerService(context.getBundle(), MonetaryAmountFormatProviderSpi.class, org.javamoney.moneta.spi.format.DefaultAmountFormatProviderSpi.class); 063 064 OSGIServiceProvider.registerService(context.getBundle(), javax.money.spi.MonetaryAmountsSingletonQuerySpi.class, DefaultMonetaryAmountsSingletonQuerySpi.class); 065 066 OSGIServiceProvider.registerService(context.getBundle(), javax.money.spi.MonetaryAmountsSingletonQuerySpi.class, DefaultMonetaryAmountsSingletonQuerySpi.class); 067 OSGIServiceProvider.registerService(context.getBundle(), javax.money.spi.MonetaryAmountsSingletonSpi.class, DefaultMonetaryAmountsSingletonSpi.class); 068 OSGIServiceProvider.registerService(context.getBundle(), javax.money.spi.MonetaryConversionsSingletonSpi.class, DefaultMonetaryConversionsSingletonSpi.class); 069 OSGIServiceProvider.registerService(context.getBundle(), javax.money.spi.MonetaryCurrenciesSingletonSpi.class, DefaultMonetaryCurrenciesSingletonSpi.class); 070 OSGIServiceProvider.registerService(context.getBundle(), javax.money.spi.RoundingProviderSpi.class, DefaultRoundingProvider.class); 071 OSGIServiceProvider.registerService(context.getBundle(), org.javamoney.moneta.spi.LoaderService.class, DefaultLoaderService.class); 072 LOG.info("Registered JavaMoney services..."); 073 } 074 075 @Override 076 public void stop(BundleContext context) { 077 if(serviceProvider!=null) { 078 LOG.info("Unregistering JavaMoney services..."); 079 OSGIServiceProvider.unregisterService(context.getBundle(), ExchangeRateProvider.class, ECBCurrentRateProvider.class); 080 OSGIServiceProvider.unregisterService(context.getBundle(), ExchangeRateProvider.class, ECBHistoricRateProvider.class); 081 OSGIServiceProvider.unregisterService(context.getBundle(), ExchangeRateProvider.class, ECBHistoric90RateProvider.class); 082 OSGIServiceProvider.unregisterService(context.getBundle(), ExchangeRateProvider.class, IMFRateProvider.class); 083 OSGIServiceProvider.unregisterService(context.getBundle(), ExchangeRateProvider.class, IdentityRateProvider.class); 084 OSGIServiceProvider.unregisterService(context.getBundle(), CurrencyProviderSpi.class, JDKCurrencyProvider.class); 085 OSGIServiceProvider.unregisterService(context.getBundle(), CurrencyProviderSpi.class, ConfigurableCurrencyUnitProvider.class); 086 087 OSGIServiceProvider.unregisterService(context.getBundle(), MonetaryAmountFactoryProviderSpi.class, FastMoneyAmountFactoryProvider.class); 088 OSGIServiceProvider.unregisterService(context.getBundle(), MonetaryAmountFactoryProviderSpi.class, MoneyAmountFactoryProvider.class); 089 OSGIServiceProvider.unregisterService(context.getBundle(), MonetaryAmountFactoryProviderSpi.class, RoundedMoneyAmountFactoryProvider.class); 090 091 OSGIServiceProvider.unregisterService(context.getBundle(), MonetaryAmountFormatProviderSpi.class, org.javamoney.moneta.spi.format.DefaultAmountFormatProviderSpi.class); 092 093 OSGIServiceProvider.unregisterService(context.getBundle(), javax.money.spi.MonetaryAmountsSingletonQuerySpi.class, DefaultMonetaryAmountsSingletonQuerySpi.class); 094 095 OSGIServiceProvider.unregisterService(context.getBundle(), javax.money.spi.MonetaryAmountsSingletonQuerySpi.class, DefaultMonetaryAmountsSingletonQuerySpi.class); 096 OSGIServiceProvider.unregisterService(context.getBundle(), javax.money.spi.MonetaryAmountsSingletonSpi.class, DefaultMonetaryAmountsSingletonSpi.class); 097 OSGIServiceProvider.unregisterService(context.getBundle(), javax.money.spi.MonetaryConversionsSingletonSpi.class, DefaultMonetaryConversionsSingletonSpi.class); 098 OSGIServiceProvider.unregisterService(context.getBundle(), javax.money.spi.MonetaryCurrenciesSingletonSpi.class, DefaultMonetaryCurrenciesSingletonSpi.class); 099 OSGIServiceProvider.unregisterService(context.getBundle(), javax.money.spi.RoundingProviderSpi.class, DefaultRoundingProvider.class); 100 OSGIServiceProvider.unregisterService(context.getBundle(), org.javamoney.moneta.spi.LoaderService.class, DefaultLoaderService.class); 101 } 102 } 103}