Details
diff --git a/api/src/main/java/com/ning/billing/payment/api/PaymentApi.java b/api/src/main/java/com/ning/billing/payment/api/PaymentApi.java
index bc27211..6d03a61 100644
--- a/api/src/main/java/com/ning/billing/payment/api/PaymentApi.java
+++ b/api/src/main/java/com/ning/billing/payment/api/PaymentApi.java
@@ -16,8 +16,12 @@
package com.ning.billing.payment.api;
+import java.util.List;
+
import javax.annotation.Nullable;
public interface PaymentApi {
- Either<PaymentError, PaymentMethodInfo> getPaymentMethodInfo(@Nullable String accountId, String paymentMethodId);
+ Either<PaymentError, PaymentMethodInfo> getPaymentMethod(@Nullable String accountId, String paymentMethodId);
+
+ Either<PaymentError, List<PaymentMethodInfo>> getPaymentMethods(String accountId);
}
diff --git a/api/src/main/java/com/ning/billing/payment/api/PaymentMethodInfo.java b/api/src/main/java/com/ning/billing/payment/api/PaymentMethodInfo.java
index 23b4993..49e8d7f 100644
--- a/api/src/main/java/com/ning/billing/payment/api/PaymentMethodInfo.java
+++ b/api/src/main/java/com/ning/billing/payment/api/PaymentMethodInfo.java
@@ -1,5 +1,7 @@
package com.ning.billing.payment.api;
+import com.google.common.base.Objects;
+
public class PaymentMethodInfo {
private final String id;
private final String accountId;
@@ -39,4 +41,36 @@ public class PaymentMethodInfo {
return type;
}
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(id,
+ accountId,
+ defaultMethod,
+ email,
+ type);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (getClass() == obj.getClass()) {
+ PaymentMethodInfo other = (PaymentMethodInfo)obj;
+ if (obj == other) {
+ return true;
+ }
+ else {
+ return Objects.equal(id, other.id) &&
+ Objects.equal(accountId, other.accountId) &&
+ Objects.equal(defaultMethod, other.defaultMethod) &&
+ Objects.equal(email, other.email) &&
+ Objects.equal(type, other.type);
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return "PaymentMethodInfo [id=" + id + ", accountId=" + accountId + ", defaultMethod=" + defaultMethod + ", email=" + email + ", type=" + type + "]";
+ }
+
}
diff --git a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
index a1ac50e..d8f84c2 100644
--- a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
+++ b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
@@ -1,5 +1,6 @@
package com.ning.billing.payment.api;
+import java.util.List;
import java.util.UUID;
import javax.annotation.Nullable;
@@ -22,11 +23,11 @@ public class DefaultPaymentApi implements PaymentApi {
}
@Override
- public Either<PaymentError, PaymentMethodInfo> getPaymentMethodInfo(@Nullable String accountId, String paymentMethodId) {
+ public Either<PaymentError, PaymentMethodInfo> getPaymentMethod(@Nullable String accountId, String paymentMethodId) {
final String paymentProviderName;
if (accountId == null) {
- // TODO: backwards compatible mode: get provider name from config
+ // TODO: get provider name from config to support null
paymentProviderName = null;
}
else {
@@ -37,4 +38,16 @@ public class DefaultPaymentApi implements PaymentApi {
return plugin.getPaymentMethodInfo(paymentMethodId);
}
+
+ @Override
+ public Either<PaymentError, List<PaymentMethodInfo>> getPaymentMethods(String accountId) {
+ final String paymentProviderName;
+
+ final IAccount account = accountUserApi.getAccountFromId(UUID.fromString(accountId));
+ paymentProviderName = account.getFieldValue(RequestProcessor.PAYMENT_PROVIDER_KEY);
+
+ final PaymentProviderPlugin plugin = pluginRegistry.getPlugin(paymentProviderName);
+
+ return plugin.getPaymentMethods(accountId);
+ }
}
diff --git a/payment/src/main/java/com/ning/billing/payment/CreditCardPaymentMethod.java b/payment/src/main/java/com/ning/billing/payment/CreditCardPaymentMethod.java
index 09f32c1..ed8f486 100644
--- a/payment/src/main/java/com/ning/billing/payment/CreditCardPaymentMethod.java
+++ b/payment/src/main/java/com/ning/billing/payment/CreditCardPaymentMethod.java
@@ -40,5 +40,4 @@ public class CreditCardPaymentMethod extends PaymentMethodInfo {
return maskNumber;
}
-
}
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 fa6b8a1..f686090 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,6 +16,8 @@
package com.ning.billing.payment.provider;
+import java.util.List;
+
import com.ning.billing.account.api.IAccount;
import com.ning.billing.invoice.model.Invoice;
import com.ning.billing.payment.PaymentInfo;
@@ -29,6 +31,6 @@ public interface PaymentProviderPlugin {
Either<PaymentError, PaymentInfo> getPaymentInfo(String paymentId);
Either<PaymentError, PaymentProviderAccount> createPaymentProviderAccount(IAccount account);
Either<PaymentError, PaymentMethodInfo> getPaymentMethodInfo(String paymentMethodId);
-// Either<PaymentError, List<PaymentMethodInfo>> getPaymentMethodInfo(IAccount account);
+ Either<PaymentError, List<PaymentMethodInfo>> getPaymentMethods(String accountId);
}
diff --git a/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java b/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java
index 9359dd1..8b21412 100644
--- a/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java
+++ b/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java
@@ -55,12 +55,12 @@ public class RequestProcessor {
}
@Subscribe
- public void receiveRequest(PaymentInfoRequest request) throws EventBusException {
- final IAccount account = accountUserApi.getAccountFromId(request.getAccountId());
+ public void receivePaymentInfoRequest(PaymentInfoRequest paymentInfoRequest) throws EventBusException {
+ final IAccount account = accountUserApi.getAccountFromId(paymentInfoRequest.getAccountId());
final String paymentProviderName = account.getFieldValue(PAYMENT_PROVIDER_KEY);
final PaymentProviderPlugin plugin = pluginRegistry.getPlugin(paymentProviderName);
- Either<PaymentError, PaymentInfo> result = plugin.getPaymentInfo(request.getPaymentId());
+ Either<PaymentError, PaymentInfo> result = plugin.getPaymentInfo(paymentInfoRequest.getPaymentId());
eventBus.post(result.isLeft() ? result.getLeft() : result.getRight());
}