killbill-aplcache

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 1d62eb5..8e665ed 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
@@ -42,9 +42,9 @@ public interface PaymentApi {
 
     Either<PaymentError, PaymentProviderAccount> getPaymentProviderAccount(String accountKey);
 
-    Either<PaymentError, PaymentProviderAccount> createPaymentProviderAccount(PaymentProviderAccount account);
+    Either<PaymentError, String> createPaymentProviderAccount(Account account);
 
-    Either<PaymentError, PaymentProviderAccount> updatePaymentProviderAccount(PaymentProviderAccount account);
+    Either<PaymentError, PaymentProviderAccount> updatePaymentProviderAccount(Account account);
 
     PaymentAttempt getPaymentAttemptForPaymentId(String id);
 
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 5674972..30c4c03 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
@@ -171,15 +171,15 @@ public class DefaultPaymentApi implements PaymentApi {
     }
 
     @Override
-    public Either<PaymentError, PaymentProviderAccount> createPaymentProviderAccount(PaymentProviderAccount account) {
+    public Either<PaymentError, String> createPaymentProviderAccount(Account account) {
         final PaymentProviderPlugin plugin = getPaymentProviderPlugin((Account)null);
         return plugin.createPaymentProviderAccount(account);
     }
 
     @Override
-    public Either<PaymentError, PaymentProviderAccount> updatePaymentProviderAccount(PaymentProviderAccount account) {
-        //TODO
-        throw new UnsupportedOperationException();
+    public Either<PaymentError, PaymentProviderAccount> updatePaymentProviderAccount(Account account) {
+        final PaymentProviderPlugin plugin = getPaymentProviderPlugin(account);
+        return plugin.updatePaymentProviderAccount(account);
     }
 
     @Override
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 4f19eb7..460951d 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
@@ -29,8 +29,9 @@ import com.ning.billing.payment.api.PaypalPaymentMethodInfo;
 
 public interface PaymentProviderPlugin {
     Either<PaymentError, PaymentInfo> processInvoice(Account account, Invoice invoice);
-    Either<PaymentError, PaymentProviderAccount> createPaymentProviderAccount(PaymentProviderAccount account);
+    Either<PaymentError, String> createPaymentProviderAccount(Account account);
     Either<PaymentError, String> addPaypalPaymentMethod(String accountId, PaypalPaymentMethodInfo paypalPaymentMethod);
+    Either<PaymentError, PaymentProviderAccount> updatePaymentProviderAccount(Account account);
 
     Either<PaymentError, PaymentInfo> getPaymentInfo(String paymentId);
     Either<PaymentError, PaymentMethodInfo> getPaymentMethodInfo(String paymentMethodId);
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 321631e..32d0d71 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
@@ -21,6 +21,7 @@ import java.util.Map;
 import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.apache.commons.lang.math.RandomUtils;
 import org.joda.time.DateTime;
 
 import com.ning.billing.account.api.Account;
@@ -66,15 +67,15 @@ public class MockPaymentProviderPlugin implements PaymentProviderPlugin {
     }
 
     @Override
-    public Either<PaymentError, PaymentProviderAccount> createPaymentProviderAccount(PaymentProviderAccount account) {
+    public Either<PaymentError, String> createPaymentProviderAccount(Account account) {
         if (account != null) {
-            PaymentProviderAccount paymentProviderAccount = accounts.put(account.getAccountName(),
-                                                                         new PaymentProviderAccount.Builder().setAccountName(account.getAccountName())
-                                                                                                             .setAccountNumber(account.getAccountName())
-                                                                                                             .setId(account.getId())
+            PaymentProviderAccount paymentProviderAccount = accounts.put(account.getExternalKey(),
+                                                                         new PaymentProviderAccount.Builder().setAccountNumber(String.valueOf(RandomUtils.nextInt(10)))
+                                                                                                             .setDefaultPaymentMethod(String.valueOf(RandomUtils.nextInt(10)))
+                                                                                                             .setId(String.valueOf(RandomUtils.nextInt(10)))
                                                                                                              .build());
 
-            return Either.right(paymentProviderAccount);
+            return Either.right(paymentProviderAccount.getId());
         }
         else {
             return Either.left(new PaymentError("unknown", "Did not get account to create payment provider account"));
@@ -82,6 +83,12 @@ public class MockPaymentProviderPlugin implements PaymentProviderPlugin {
     }
 
     @Override
+    public Either<PaymentError, PaymentProviderAccount> updatePaymentProviderAccount(Account account) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
     public Either<PaymentError, PaymentMethodInfo> getPaymentMethodInfo(String paymentMethodId) {
         // TODO
         return Either.left(new PaymentError("unknown", "Not implemented"));
@@ -122,4 +129,5 @@ public class MockPaymentProviderPlugin implements PaymentProviderPlugin {
         // TODO
         return Either.left(new PaymentError("unknown", "Not implemented"));
     }
+
 }