killbill-aplcache
Changes
invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java 2(+1 -1)
invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatterFactory.java 29(+29 -0)
invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java 2(+1 -1)
invoice/src/main/java/com/ning/billing/invoice/template/formatters/InvoiceFormatterFactory.java 26(+26 -0)
Details
diff --git a/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatterFactory.java b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatterFactory.java
new file mode 100644
index 0000000..1c957fb
--- /dev/null
+++ b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatterFactory.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2010-2011 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.invoice.template.formatters;
+
+import com.ning.billing.invoice.api.Invoice;
+import com.ning.billing.util.template.translation.TranslatorConfig;
+
+import java.util.Locale;
+
+public class DefaultInvoiceFormatterFactory implements InvoiceFormatterFactory {
+ @Override
+ public InvoiceFormatter createInvoiceFormatter(TranslatorConfig config, Invoice invoice, Locale locale) {
+ return new DefaultInvoiceFormatter(config, invoice, locale);
+ }
+}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/template/formatters/InvoiceFormatterFactory.java b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/InvoiceFormatterFactory.java
new file mode 100644
index 0000000..83288be
--- /dev/null
+++ b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/InvoiceFormatterFactory.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2010-2011 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.invoice.template.formatters;
+
+import com.ning.billing.invoice.api.Invoice;
+import com.ning.billing.util.template.translation.TranslatorConfig;
+
+import java.util.Locale;
+
+public interface InvoiceFormatterFactory {
+ public InvoiceFormatter createInvoiceFormatter(TranslatorConfig config, Invoice invoice, Locale locale);
+}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/template/HtmlInvoiceGenerator.java b/invoice/src/main/java/com/ning/billing/invoice/template/HtmlInvoiceGenerator.java
index 332791a..2588ad4 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/template/HtmlInvoiceGenerator.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/template/HtmlInvoiceGenerator.java
@@ -19,9 +19,9 @@ package com.ning.billing.invoice.template;
import com.google.inject.Inject;
import com.ning.billing.account.api.Account;
import com.ning.billing.invoice.api.Invoice;
+import com.ning.billing.invoice.template.formatters.InvoiceFormatterFactory;
import com.ning.billing.invoice.template.translator.DefaultInvoiceTranslator;
-import com.ning.billing.util.email.formatters.DefaultInvoiceFormatter;
-import com.ning.billing.util.email.formatters.InvoiceFormatter;
+import com.ning.billing.invoice.template.formatters.InvoiceFormatter;
import com.ning.billing.util.email.templates.TemplateEngine;
import com.ning.billing.util.template.translation.TranslatorConfig;
@@ -32,11 +32,13 @@ import java.util.Locale;
import java.util.Map;
public class HtmlInvoiceGenerator {
+ private final InvoiceFormatterFactory factory;
private final TemplateEngine templateEngine;
private final TranslatorConfig config;
@Inject
- public HtmlInvoiceGenerator(TemplateEngine templateEngine, TranslatorConfig config) {
+ public HtmlInvoiceGenerator(InvoiceFormatterFactory factory, TemplateEngine templateEngine, TranslatorConfig config) {
+ this.factory = factory;
this.templateEngine = templateEngine;
this.config = config;
}
@@ -49,7 +51,7 @@ public class HtmlInvoiceGenerator {
data.put("text", invoiceTranslator);
data.put("account", account);
- InvoiceFormatter formattedInvoice = new DefaultInvoiceFormatter(config, invoice, locale);
+ InvoiceFormatter formattedInvoice = factory.createInvoiceFormatter(config, invoice, locale);
data.put("invoice", formattedInvoice);
return templateEngine.executeTemplate(templateName, data);
diff --git a/invoice/src/test/java/com/ning/billing/invoice/HtmlInvoiceGeneratorTest.java b/invoice/src/test/java/com/ning/billing/invoice/HtmlInvoiceGeneratorTest.java
index a5f0769..83d8e17 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/HtmlInvoiceGeneratorTest.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/HtmlInvoiceGeneratorTest.java
@@ -21,6 +21,8 @@ import com.ning.billing.catalog.api.Currency;
import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.api.InvoiceItem;
import com.ning.billing.invoice.template.HtmlInvoiceGenerator;
+import com.ning.billing.invoice.template.formatters.DefaultInvoiceFormatterFactory;
+import com.ning.billing.invoice.template.formatters.InvoiceFormatterFactory;
import com.ning.billing.mock.BrainDeadProxyFactory;
import com.ning.billing.mock.BrainDeadProxyFactory.ZombieControl;
import com.ning.billing.util.email.templates.MustacheTemplateEngine;
@@ -47,7 +49,8 @@ public class HtmlInvoiceGeneratorTest {
public void setup() {
TranslatorConfig config = new ConfigurationObjectFactory(System.getProperties()).build(TranslatorConfig.class);
TemplateEngine templateEngine = new MustacheTemplateEngine();
- g = new HtmlInvoiceGenerator(templateEngine, config);
+ InvoiceFormatterFactory factory = new DefaultInvoiceFormatterFactory();
+ g = new HtmlInvoiceGenerator(factory, templateEngine, config);
}
@Test
diff --git a/invoice/src/test/java/com/ning/billing/invoice/MockModule.java b/invoice/src/test/java/com/ning/billing/invoice/MockModule.java
index f87f65e..9a7a7eb 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/MockModule.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/MockModule.java
@@ -17,6 +17,8 @@
package com.ning.billing.invoice;
import com.ning.billing.entitlement.api.user.EntitlementUserApi;
+import com.ning.billing.invoice.template.formatters.DefaultInvoiceFormatterFactory;
+import com.ning.billing.invoice.template.formatters.InvoiceFormatterFactory;
import com.ning.billing.mock.BrainDeadProxyFactory;
import com.ning.billing.util.email.EmailModule;
import org.skife.config.ConfigurationObjectFactory;
@@ -59,6 +61,8 @@ public class MockModule extends AbstractModule {
bind(IDBI.class).toInstance(dbi);
}
+ bind(InvoiceFormatterFactory.class).to(DefaultInvoiceFormatterFactory.class).asEagerSingleton();
+
install(new EmailModule());
install(new GlobalLockerModule());
install(new NotificationQueueModule());
diff --git a/invoice/src/test/java/com/ning/billing/invoice/tests/inAdvance/monthly/ProRationTests.java b/invoice/src/test/java/com/ning/billing/invoice/tests/inAdvance/monthly/ProRationTests.java
index 8d564c8..78f06b4 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/tests/inAdvance/monthly/ProRationTests.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/tests/inAdvance/monthly/ProRationTests.java
@@ -215,9 +215,10 @@ public class ProRationTests extends ProRationInAdvanceTestBase {
DateTime targetDate = buildDateTime(2011, 4, 21);
BigDecimal expectedValue;
- expectedValue = SEVEN.divide(THIRTY_ONE, NUMBER_OF_DECIMALS, ROUNDING_METHOD);
+ expectedValue = SEVEN.divide(THIRTY_ONE, 2 * NUMBER_OF_DECIMALS, ROUNDING_METHOD);
expectedValue = expectedValue.add(ONE);
- expectedValue = expectedValue.add(THREE.divide(THIRTY_ONE, NUMBER_OF_DECIMALS, ROUNDING_METHOD));
+ expectedValue = expectedValue.add(THREE.divide(THIRTY_ONE, 2 * NUMBER_OF_DECIMALS, ROUNDING_METHOD));
+ expectedValue = expectedValue.setScale(NUMBER_OF_DECIMALS, ROUNDING_METHOD);
testCalculateNumberOfBillingCycles(startDate, planChangeDate, targetDate, 7, expectedValue);
expectedValue = FIVE.divide(TWENTY_EIGHT, NUMBER_OF_DECIMALS, ROUNDING_METHOD).add(TWO);