killbill-memoizeit

Currency api changes

10/28/2013 11:10:41 PM

Details

diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestJrubyCurrencyPlugin.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestJrubyCurrencyPlugin.java
index 3444c34..dcba30a 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestJrubyCurrencyPlugin.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestJrubyCurrencyPlugin.java
@@ -28,8 +28,8 @@ import org.testng.annotations.Test;
 
 import com.ning.billing.beatrix.osgi.SetupBundleWithAssertion;
 import com.ning.billing.catalog.api.Currency;
+import com.ning.billing.currency.api.Rate;
 import com.ning.billing.currency.plugin.api.CurrencyPluginApi;
-import com.ning.billing.currency.plugin.api.Rate;
 import com.ning.billing.osgi.api.OSGIServiceRegistration;
 
 import static org.testng.Assert.assertEquals;
diff --git a/currency/src/main/java/com/ning/billing/currency/api/DefaultCurrencyConversion.java b/currency/src/main/java/com/ning/billing/currency/api/DefaultCurrencyConversion.java
index 1bdafd2..56178ad 100644
--- a/currency/src/main/java/com/ning/billing/currency/api/DefaultCurrencyConversion.java
+++ b/currency/src/main/java/com/ning/billing/currency/api/DefaultCurrencyConversion.java
@@ -16,34 +16,29 @@
 
 package com.ning.billing.currency.api;
 
+import java.util.Set;
+
 import org.joda.time.DateTime;
 
 import com.ning.billing.catalog.api.Currency;
 
 public class DefaultCurrencyConversion implements CurrencyConversion {
 
-    private final DateTime conversionDate;
     private final Currency baseCurrency;
-    private final Rates rates;
+    private final Set<Rate> rates;
 
-    public DefaultCurrencyConversion(final DateTime conversionDate, final Currency baseCurrency, final Rates rates) {
-        this.conversionDate = conversionDate;
+    public DefaultCurrencyConversion(final Currency baseCurrency, final Set<Rate> rates) {
         this.baseCurrency = baseCurrency;
         this.rates = rates;
     }
 
     @Override
-    public DateTime getConversionDate() {
-        return conversionDate;
-    }
-
-    @Override
     public Currency getBaseCurrency() {
         return baseCurrency;
     }
 
     @Override
-    public Rates getRates() {
+    public final Set<Rate> getRates() {
         return rates;
     }
 }
diff --git a/currency/src/main/java/com/ning/billing/currency/api/DefaultCurrencyConversionApi.java b/currency/src/main/java/com/ning/billing/currency/api/DefaultCurrencyConversionApi.java
index c678a65..3c73d4a 100644
--- a/currency/src/main/java/com/ning/billing/currency/api/DefaultCurrencyConversionApi.java
+++ b/currency/src/main/java/com/ning/billing/currency/api/DefaultCurrencyConversionApi.java
@@ -16,9 +16,6 @@
 
 package com.ning.billing.currency.api;
 
-import java.math.BigDecimal;
-import java.util.HashMap;
-import java.util.Map;
 import java.util.Set;
 
 import javax.inject.Inject;
@@ -28,7 +25,6 @@ import org.joda.time.DateTime;
 import com.ning.billing.ErrorCode;
 import com.ning.billing.catalog.api.Currency;
 import com.ning.billing.currency.plugin.api.CurrencyPluginApi;
-import com.ning.billing.currency.plugin.api.Rate;
 import com.ning.billing.osgi.api.OSGIServiceRegistration;
 import com.ning.billing.util.config.CurrencyConfig;
 
@@ -71,16 +67,7 @@ public class DefaultCurrencyConversionApi implements CurrencyConversionApi {
     }
 
     private CurrencyConversion getCurrencyConversionInternal(final Currency baseCurrency, final Set<Rate> allRates) {
-        final Map<Currency, BigDecimal> rateMap = new HashMap<Currency, BigDecimal>();
-        DateTime conversionDate = null;
-        for (Rate cur : allRates) {
-            // We expect all those dates to be the same but if that were not the case we take the min -- what looks like the oldest
-            conversionDate = (conversionDate == null || conversionDate.isAfter(cur.getConversionDate())) ? cur.getConversionDate() : conversionDate;
-            rateMap.put(cur.getCurrency(), cur.getValue());
-        }
-
-        final Rates rates = new DefaultRates(rateMap);
-        final CurrencyConversion result = new DefaultCurrencyConversion(conversionDate, baseCurrency, rates);
+        final CurrencyConversion result = new DefaultCurrencyConversion(baseCurrency, allRates);
         return result;
     }
 }
diff --git a/osgi-bundles/bundles/jruby/src/main/java/com/ning/billing/osgi/bundles/jruby/JRubyActivator.java b/osgi-bundles/bundles/jruby/src/main/java/com/ning/billing/osgi/bundles/jruby/JRubyActivator.java
index 38fc7cb..d97ceca 100644
--- a/osgi-bundles/bundles/jruby/src/main/java/com/ning/billing/osgi/bundles/jruby/JRubyActivator.java
+++ b/osgi-bundles/bundles/jruby/src/main/java/com/ning/billing/osgi/bundles/jruby/JRubyActivator.java
@@ -182,6 +182,7 @@ public class JRubyActivator extends KillbillActivatorBase {
         killbillUserApis.put("payment_api", killbillAPI.getPaymentApi());
         killbillUserApis.put("custom_field_user_api", killbillAPI.getCustomFieldUserApi());
         killbillUserApis.put("tag_user_api", killbillAPI.getTagUserApi());
+        killbillUserApis.put("currency_conversion_api", killbillAPI.getCurrencyConversionApi());
         return killbillUserApis;
     }
 
diff --git a/osgi-bundles/bundles/jruby/src/main/java/com/ning/billing/osgi/bundles/jruby/JRubyCurrencyPlugin.java b/osgi-bundles/bundles/jruby/src/main/java/com/ning/billing/osgi/bundles/jruby/JRubyCurrencyPlugin.java
index 3f19e8f..7e752d3 100644
--- a/osgi-bundles/bundles/jruby/src/main/java/com/ning/billing/osgi/bundles/jruby/JRubyCurrencyPlugin.java
+++ b/osgi-bundles/bundles/jruby/src/main/java/com/ning/billing/osgi/bundles/jruby/JRubyCurrencyPlugin.java
@@ -28,8 +28,8 @@ import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.log.LogService;
 
 import com.ning.billing.catalog.api.Currency;
+import com.ning.billing.currency.api.Rate;
 import com.ning.billing.currency.plugin.api.CurrencyPluginApi;
-import com.ning.billing.currency.plugin.api.Rate;
 import com.ning.billing.osgi.api.OSGIPluginProperties;
 import com.ning.billing.osgi.api.config.PluginRubyConfig;
 import com.ning.billing.payment.plugin.api.PaymentPluginApiException;

pom.xml 2(+1 -1)

diff --git a/pom.xml b/pom.xml
index 43ac377..33db792 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>killbill-oss-parent</artifactId>
         <groupId>com.ning.billing</groupId>
-        <version>0.5.3</version>
+        <version>0.5.4</version>
     </parent>
     <artifactId>killbill</artifactId>
     <version>0.7.2-SNAPSHOT</version>