killbill-memoizeit
Changes
payment/pom.xml 6(+6 -0)
Details
payment/pom.xml 6(+6 -0)
diff --git a/payment/pom.xml b/payment/pom.xml
index b5743e2..73cf60a 100644
--- a/payment/pom.xml
+++ b/payment/pom.xml
@@ -70,6 +70,12 @@
<artifactId>killbill-util</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.ning.billing</groupId>
+ <artifactId>killbill-account</artifactId>
+ <classifier>tests</classifier>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
</build>
diff --git a/payment/src/main/java/com/ning/billing/payment/InvoiceProcessor.java b/payment/src/main/java/com/ning/billing/payment/InvoiceProcessor.java
index 946ac83..39ee5d0 100644
--- a/payment/src/main/java/com/ning/billing/payment/InvoiceProcessor.java
+++ b/payment/src/main/java/com/ning/billing/payment/InvoiceProcessor.java
@@ -18,25 +18,27 @@ package com.ning.billing.payment;
import com.google.common.eventbus.Subscribe;
import com.google.inject.Inject;
-import com.ning.billing.account.api.Account;
+import com.ning.billing.account.api.IAccount;
+import com.ning.billing.account.api.IAccountUserApi;
import com.ning.billing.invoice.model.Invoice;
import com.ning.billing.payment.provider.PaymentProviderPluginRegistry;
import com.ning.billing.util.eventbus.IEventBus.EventBusException;
public class InvoiceProcessor {
+ public static final String PAYMENT_PROVIDER_KEY = "paymentProvider";
+ private final IAccountUserApi accountUserApi;
private final PaymentProviderPluginRegistry pluginRegistry;
@Inject
- public InvoiceProcessor(PaymentProviderPluginRegistry pluginRegistry) {
+ public InvoiceProcessor(IAccountUserApi accountUserApi, PaymentProviderPluginRegistry pluginRegistry) {
+ this.accountUserApi = accountUserApi;
this.pluginRegistry = pluginRegistry;
}
@Subscribe
public void receiveInvoice(Invoice invoice) throws EventBusException {
- // TODO: retrieve account
- final Account account = null;
- // TODO: get provider name from account
- final String paymentProviderName = null;
+ final IAccount account = accountUserApi.getAccountFromId(invoice.getAccountId());
+ final String paymentProviderName = account.getFieldValue(PAYMENT_PROVIDER_KEY);
pluginRegistry.getPlugin(paymentProviderName).processInvoice(account, invoice);
}
diff --git a/payment/src/main/java/com/ning/billing/payment/PaymentInfo.java b/payment/src/main/java/com/ning/billing/payment/PaymentInfo.java
index a75e3be..1658af9 100644
--- a/payment/src/main/java/com/ning/billing/payment/PaymentInfo.java
+++ b/payment/src/main/java/com/ning/billing/payment/PaymentInfo.java
@@ -372,4 +372,10 @@ public class PaymentInfo implements IEventBusType {
return false;
return true;
}
+
+ @Override
+ public String toString() {
+ return "PaymentInfo [id=" + id + ", amount=" + amount + ", appliedCreditBalanceAmount=" + appliedCreditBalanceAmount + ", bankIdentificationNumber=" + bankIdentificationNumber + ", createdDate=" + createdDate + ", effectiveDate=" + effectiveDate + ", paymentNumber=" + paymentNumber + ", referenceId=" + referenceId + ", refundAmount=" + refundAmount + ", secondPaymentReferenceId=" + secondPaymentReferenceId + ", status=" + status + ", type=" + type + ", updatedDate=" + updatedDate + "]";
+ }
+
}
diff --git a/payment/src/main/java/com/ning/billing/payment/provider/PaymentProviderPlugin.java b/payment/src/main/java/com/ning/billing/payment/provider/PaymentProviderPlugin.java
index 98d2677..25b7bcc 100644
--- a/payment/src/main/java/com/ning/billing/payment/provider/PaymentProviderPlugin.java
+++ b/payment/src/main/java/com/ning/billing/payment/provider/PaymentProviderPlugin.java
@@ -16,9 +16,9 @@
package com.ning.billing.payment.provider;
-import com.ning.billing.account.api.Account;
+import com.ning.billing.account.api.IAccount;
import com.ning.billing.invoice.model.Invoice;
public interface PaymentProviderPlugin {
- public void processInvoice(Account account, Invoice invoice);
+ public void processInvoice(IAccount account, Invoice invoice);
}
diff --git a/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPlugin.java b/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPlugin.java
index d9b59d7..557e42c 100644
--- a/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPlugin.java
+++ b/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPlugin.java
@@ -19,7 +19,7 @@ package com.ning.billing.payment.provider;
import java.util.UUID;
import com.google.inject.Inject;
-import com.ning.billing.account.api.Account;
+import com.ning.billing.account.api.IAccount;
import com.ning.billing.invoice.model.Invoice;
import com.ning.billing.payment.PaymentInfo;
import com.ning.billing.util.eventbus.IEventBus;
@@ -37,7 +37,7 @@ public class MockPaymentProviderPlugin implements PaymentProviderPlugin {
}
@Override
- public void processInvoice(Account account, Invoice invoice) {
+ public void processInvoice(IAccount account, Invoice invoice) {
try {
eventBus.post(new PaymentInfo.Builder().setId(UUID.randomUUID()).build());
}
diff --git a/payment/src/test/java/com/ning/billing/payment/setup/PaymentTestModule.java b/payment/src/test/java/com/ning/billing/payment/setup/PaymentTestModule.java
index 6c9317f..2aa3c61 100644
--- a/payment/src/test/java/com/ning/billing/payment/setup/PaymentTestModule.java
+++ b/payment/src/test/java/com/ning/billing/payment/setup/PaymentTestModule.java
@@ -19,6 +19,8 @@ package com.ning.billing.payment.setup;
import org.apache.commons.collections.MapUtils;
import com.google.common.collect.ImmutableMap;
+import com.ning.billing.account.api.IAccountUserApi;
+import com.ning.billing.account.api.MockAccountUserApi;
import com.ning.billing.payment.provider.MockPaymentProviderPlugin;
import com.ning.billing.util.eventbus.IEventBus;
import com.ning.billing.util.eventbus.MemoryEventBus;
@@ -37,5 +39,6 @@ public class PaymentTestModule extends PaymentModule {
protected void configure() {
super.configure();
bind(IEventBus.class).to(MemoryEventBus.class).asEagerSingleton();
+ bind(IAccountUserApi.class).to(MockAccountUserApi.class).asEagerSingleton();
}
}
diff --git a/payment/src/test/java/com/ning/billing/payment/TestPaymentProvider.java b/payment/src/test/java/com/ning/billing/payment/TestPaymentProvider.java
index 628da7c..3453a0c 100644
--- a/payment/src/test/java/com/ning/billing/payment/TestPaymentProvider.java
+++ b/payment/src/test/java/com/ning/billing/payment/TestPaymentProvider.java
@@ -37,6 +37,9 @@ import org.testng.annotations.Test;
import com.google.common.eventbus.Subscribe;
import com.google.inject.Inject;
+import com.ning.billing.account.api.Account;
+import com.ning.billing.account.api.IAccount;
+import com.ning.billing.account.api.IAccountUserApi;
import com.ning.billing.catalog.api.Currency;
import com.ning.billing.invoice.model.Invoice;
import com.ning.billing.invoice.model.InvoiceItem;
@@ -71,9 +74,11 @@ public class TestPaymentProvider {
@Inject
private IEventBus eventBus;
- private MockPaymentProcessor mockPaymentProcessor;
@Inject
private InvoiceProcessor invoiceProcessor;
+ @Inject
+ private IAccountUserApi accountUserApi;
+ private MockPaymentProcessor mockPaymentProcessor;
@BeforeMethod(alwaysRun = true)
public void setUp() throws EventBusException {
@@ -89,8 +94,13 @@ public class TestPaymentProvider {
eventBus.stop();
}
+ protected IAccount getTestAccount() {
+ return accountUserApi.createAccount(new Account());
+ }
+
@Test
public void testSimpleInvoice() throws Exception {
+ final IAccount account = getTestAccount();
final UUID subscriptionUuid = UUID.randomUUID();
final UUID invoiceUuid = UUID.randomUUID();
final DateTime now = new DateTime();
@@ -103,7 +113,7 @@ public class TestPaymentProvider {
new BigDecimal("1"),
Currency.USD);
final List<InvoiceItem> lineItems = Arrays.asList(lineItem);
- final Invoice invoice = new Invoice(invoiceUuid, lineItems, Currency.USD);
+ final Invoice invoice = new Invoice(account.getId(), lineItems, Currency.USD);
eventBus.post(invoice);
await().atMost(1, MINUTES).until(new Callable<Boolean>() {