killbill-aplcache
Changes
api/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApiException.java 22(+9 -13)
entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultEntitlementBillingApi.java 26(+16 -10)
entitlement/src/test/java/com/ning/billing/entitlement/api/billing/BrainDeadMockEntitlementDao.java 58(+31 -27)
entitlement/src/test/java/com/ning/billing/entitlement/api/billing/TestDefaultEntitlementBillingApi.java 19(+15 -4)
entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancelMemory.java 5(+3 -2)
entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlan.java 13(+7 -6)
entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlanMemory.java 9(+5 -4)
entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlanSql.java 11(+6 -5)
entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoMemory.java 113(+60 -53)
invoice/pom.xml 5(+5 -0)
Details
diff --git a/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java b/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java
index b953707..b8c4314 100644
--- a/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java
+++ b/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java
@@ -41,21 +41,22 @@ public class DefaultAccount extends CustomizableEntityBase implements Account {
private final BigDecimal balance;
private final DefaultTagStore tags;
- public DefaultAccount(AccountData data) {
+ public DefaultAccount(final AccountData data) {
this(UUID.randomUUID(), data.getExternalKey(), data.getEmail(), data.getName(),
data.getFirstNameLength(), data.getPhone(), data.getCurrency(), data.getBillCycleDay(),
data.getPaymentProviderName(), BigDecimal.ZERO);
}
- public DefaultAccount(UUID id, AccountData data) {
+ public DefaultAccount(final UUID id, final AccountData data) {
this(id, data.getExternalKey(), data.getEmail(), data.getName(),
data.getFirstNameLength(), data.getPhone(), data.getCurrency(), data.getBillCycleDay(),
data.getPaymentProviderName(), BigDecimal.ZERO);
}
- public DefaultAccount(UUID id, String externalKey, String email, String name, int firstNameLength,
- String phone, Currency currency, int billCycleDay, String paymentProviderName,
- BigDecimal balance) {
+ public DefaultAccount(final UUID id, final String externalKey, final String email,
+ final String name, final int firstNameLength,
+ final String phone, final Currency currency, final int billCycleDay, final String paymentProviderName,
+ final BigDecimal balance) {
super(id);
this.externalKey = externalKey;
this.email = email;
@@ -121,18 +122,18 @@ public class DefaultAccount extends CustomizableEntityBase implements Account {
}
@Override
- public boolean hasTag(String tagName) {
+ public boolean hasTag(final String tagName) {
return tags.containsTag(tagName);
}
@Override
- public void addTag(TagDescription description, String addedBy, DateTime dateAdded) {
+ public void addTag(final TagDescription description, final String addedBy, final DateTime dateAdded) {
Tag tag = new DefaultTag(description, addedBy, dateAdded);
tags.add(tag) ;
}
@Override
- public void addTags(List<Tag> tags) {
+ public void addTags(final List<Tag> tags) {
if (tags != null) {
this.tags.add(tags);
}
@@ -144,7 +145,7 @@ public class DefaultAccount extends CustomizableEntityBase implements Account {
}
@Override
- public void removeTag(TagDescription description) {
+ public void removeTag(final TagDescription description) {
tags.remove(description.getName());
}
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApi.java b/api/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApi.java
index 2b07182..0e429ab 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApi.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApi.java
@@ -23,6 +23,7 @@ import java.util.UUID;
import org.joda.time.DateTime;
import com.ning.billing.account.api.Account;
+import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
public interface EntitlementBillingApi {
@@ -35,7 +36,8 @@ public interface EntitlementBillingApi {
*/
public SortedSet<BillingEvent> getBillingEventsForAccount(UUID accountId);
+ public UUID getAccountIdFromSubscriptionId(UUID subscriptionId) throws EntitlementBillingApiException;
- public void setChargedThroughDate(UUID subscriptionId, DateTime ctd);
+ public void setChargedThroughDate(UUID subscriptionId, DateTime ctd) throws EntitlementBillingApiException;
}
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApiException.java b/api/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApiException.java
index 9c22915..4c20f7c 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApiException.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApiException.java
@@ -16,25 +16,21 @@
package com.ning.billing.entitlement.api.billing;
-public class EntitlementBillingApiException extends Exception {
+import com.ning.billing.BillingExceptionBase;
+import com.ning.billing.ErrorCode;
+public class EntitlementBillingApiException extends BillingExceptionBase {
private static final long serialVersionUID = 127392038L;
- public EntitlementBillingApiException() {
- super();
+ public EntitlementBillingApiException(Throwable cause, int code, final String msg) {
+ super(cause, code, msg);
}
- public EntitlementBillingApiException(String msg, Throwable arg1) {
- super(msg, arg1);
+ public EntitlementBillingApiException(Throwable cause, ErrorCode code, final Object... args) {
+ super(cause, code, args);
}
- public EntitlementBillingApiException(String msg) {
- super(msg);
+ public EntitlementBillingApiException(ErrorCode code, final Object... args) {
+ super(code, args);
}
-
- public EntitlementBillingApiException(Throwable msg) {
- super(msg);
- }
-
-
}
diff --git a/api/src/main/java/com/ning/billing/ErrorCode.java b/api/src/main/java/com/ning/billing/ErrorCode.java
index 254df9f..c3238e2 100644
--- a/api/src/main/java/com/ning/billing/ErrorCode.java
+++ b/api/src/main/java/com/ning/billing/ErrorCode.java
@@ -43,7 +43,10 @@ public enum ErrorCode {
ENT_CANCEL_BAD_STATE(1031, "Subscription %s is in state %s"),
/* Un-cancellation */
ENT_UNCANCEL_BAD_STATE(1070, "Subscription %s was not in a cancelled state"),
-
+ /* Fetch */
+ ENT_GET_NO_BUNDLE_FOR_SUBSCRIPTION(1080, "Could not find a bundle for subscription %s"),
+ ENT_GET_INVALID_BUNDLE_ID(1081, "Could not find a bundle matching id %s"),
+ ENT_INVALID_SUBSCRIPTION_ID(1082, "Unknown subscription %s"),
/*
*
* Range 2000 : CATALOG
@@ -102,8 +105,16 @@ public enum ErrorCode {
*
*/
ACCOUNT_ALREADY_EXISTS(3000, "Account already exists for key %s"),
- ACCOUNT_INVALID_NAME(3001, "An invalid name was specified when creating or updating an account.")
+ ACCOUNT_INVALID_NAME(3001, "An invalid name was specified when creating or updating an account."),
+ /*
+ *
+ * Range 4000: INVOICE
+ *
+ */
+ INVOICE_ACCOUNT_ID_INVALID(4001, "No account could be retrieved for id %s"),
+ INVOICE_INVALID_TRANSITION(4002, "Transition did not contain a subscription id."),
+ INVOICE_NO_ACCOUNT_ID_FOR_SUBSCRIPTION_ID(4003, "No account id was retrieved for subscription id %s")
;
private int code;
private String format;
diff --git a/api/src/main/java/com/ning/billing/invoice/api/InvoiceApiException.java b/api/src/main/java/com/ning/billing/invoice/api/InvoiceApiException.java
new file mode 100644
index 0000000..a9275e8
--- /dev/null
+++ b/api/src/main/java/com/ning/billing/invoice/api/InvoiceApiException.java
@@ -0,0 +1,34 @@
+/*
+ * 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.api;
+
+import com.ning.billing.BillingExceptionBase;
+import com.ning.billing.ErrorCode;
+
+public class InvoiceApiException extends BillingExceptionBase {
+ public InvoiceApiException(Throwable cause, int code, final String msg) {
+ super(cause, code, msg);
+ }
+
+ public InvoiceApiException(Throwable cause, ErrorCode code, final Object... args) {
+ super(cause, code, args);
+ }
+
+ public InvoiceApiException(ErrorCode code, final Object... args) {
+ super(code, args);
+ }
+}
diff --git a/api/src/main/java/com/ning/billing/invoice/api/InvoiceUserApi.java b/api/src/main/java/com/ning/billing/invoice/api/InvoiceUserApi.java
index 2c8d02e..e4fb8ca 100644
--- a/api/src/main/java/com/ning/billing/invoice/api/InvoiceUserApi.java
+++ b/api/src/main/java/com/ning/billing/invoice/api/InvoiceUserApi.java
@@ -28,6 +28,8 @@ public interface InvoiceUserApi {
public List<Invoice> getInvoicesByAccount(UUID accountId);
+ public List<InvoiceItem> getInvoiceItemsByAccount(UUID accountId);
+
public Invoice getInvoice(UUID invoiceId);
public void paymentAttemptFailed(UUID invoiceId, UUID paymentId, DateTime paymentAttemptDate);
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultEntitlementBillingApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultEntitlementBillingApi.java
index fd130a9..09df8ae 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultEntitlementBillingApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultEntitlementBillingApi.java
@@ -38,6 +38,7 @@ import com.ning.billing.catalog.api.Plan;
import com.ning.billing.catalog.api.PlanPhase;
import com.ning.billing.catalog.api.PlanPhaseSpecifier;
import com.ning.billing.catalog.api.Product;
+import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
import com.ning.billing.entitlement.api.user.SubscriptionData;
@@ -46,14 +47,14 @@ import com.ning.billing.entitlement.api.user.SubscriptionTransition;
import com.ning.billing.entitlement.engine.dao.EntitlementDao;
public class DefaultEntitlementBillingApi implements EntitlementBillingApi {
- private Logger log = LoggerFactory.getLogger(DefaultEntitlementBillingApi.class);
+ private static final Logger log = LoggerFactory.getLogger(DefaultEntitlementBillingApi.class);
private final EntitlementDao dao;
private final AccountUserApi accountApi;
private final CatalogService catalogService;
@Inject
- public DefaultEntitlementBillingApi(EntitlementDao dao, AccountUserApi accountApi, CatalogService catalogService) {
+ public DefaultEntitlementBillingApi(final EntitlementDao dao, final AccountUserApi accountApi, final CatalogService catalogService) {
super();
this.dao = dao;
this.accountApi = accountApi;
@@ -62,17 +63,17 @@ public class DefaultEntitlementBillingApi implements EntitlementBillingApi {
@Override
public SortedSet<BillingEvent> getBillingEventsForAccount(
- UUID accountId) {
+ final UUID accountId) {
List<SubscriptionBundle> bundles = dao.getSubscriptionBundleForAccount(accountId);
List<Subscription> subscriptions = new ArrayList<Subscription>();
- for (SubscriptionBundle bundle: bundles) {
+ for (final SubscriptionBundle bundle: bundles) {
subscriptions.addAll(dao.getSubscriptions(bundle.getId()));
}
SortedSet<BillingEvent> result = new TreeSet<BillingEvent>();
- for (Subscription subscription: subscriptions) {
- for (SubscriptionTransition transition : subscription.getAllTransitions()) {
+ for (final Subscription subscription: subscriptions) {
+ for (final SubscriptionTransition transition : subscription.getAllTransitions()) {
try {
result.add(new DefaultBillingEvent(transition, subscription, calculateBCD(transition, accountId)));
} catch (CatalogApiException e) {
@@ -83,8 +84,13 @@ public class DefaultEntitlementBillingApi implements EntitlementBillingApi {
}
return result;
}
-
- private int calculateBCD(SubscriptionTransition transition, UUID accountId) throws CatalogApiException {
+
+ @Override
+ public UUID getAccountIdFromSubscriptionId(final UUID subscriptionId) throws EntitlementBillingApiException {
+ return dao.getAccountIdFromSubscriptionId(subscriptionId);
+ }
+
+ private int calculateBCD(final SubscriptionTransition transition, final UUID accountId) throws CatalogApiException {
Catalog catalog = catalogService.getFullCatalog();
Plan plan = transition.getNextPlan();
Product product = plan.getProduct();
@@ -123,10 +129,10 @@ public class DefaultEntitlementBillingApi implements EntitlementBillingApi {
@Override
- public void setChargedThroughDate(UUID subscriptionId, DateTime ctd) {
+ public void setChargedThroughDate(final UUID subscriptionId, final DateTime ctd) throws EntitlementBillingApiException {
SubscriptionData subscription = (SubscriptionData) dao.getSubscriptionFromId(subscriptionId);
if (subscription == null) {
- new EntitlementBillingApiException(String.format("Unknown subscription %s", subscriptionId));
+ throw new EntitlementBillingApiException(ErrorCode.ENT_INVALID_SUBSCRIPTION_ID, subscriptionId.toString());
}
SubscriptionBuilder builder = new SubscriptionBuilder(subscription)
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementDao.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementDao.java
index ea62b84..c658ee6 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementDao.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementDao.java
@@ -16,7 +16,9 @@
package com.ning.billing.entitlement.engine.dao;
+import com.ning.billing.entitlement.api.billing.EntitlementBillingApiException;
import com.ning.billing.entitlement.api.migration.AccountMigrationData;
+import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
import com.ning.billing.entitlement.api.user.SubscriptionBundleData;
@@ -40,6 +42,8 @@ public interface EntitlementDao {
public Subscription getSubscriptionFromId(UUID subscriptionId);
+ // Account retrieval
+ public UUID getAccountIdFromSubscriptionId(UUID subscriptionId) throws EntitlementBillingApiException;
// Subscription retrieval
public Subscription getBaseSubscription(UUID bundleId);
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java
index 72a71d8..f67d607 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java
@@ -23,10 +23,13 @@ import java.util.List;
import java.util.UUID;
import com.google.inject.Inject;
+import com.ning.billing.ErrorCode;
import com.ning.billing.catalog.api.ProductCategory;
+import com.ning.billing.entitlement.api.billing.EntitlementBillingApiException;
import com.ning.billing.entitlement.api.migration.AccountMigrationData;
import com.ning.billing.entitlement.api.migration.AccountMigrationData.BundleMigrationData;
import com.ning.billing.entitlement.api.migration.AccountMigrationData.SubscriptionMigrationData;
+import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
import com.ning.billing.entitlement.api.user.SubscriptionBundleData;
@@ -66,7 +69,8 @@ public class EntitlementSqlDao implements EntitlementDao {
private final NotificationQueueService notificationQueueService;
@Inject
- public EntitlementSqlDao(DBI dbi, Clock clock, SubscriptionFactory factory, NotificationQueueService notificationQueueService) {
+ public EntitlementSqlDao(final DBI dbi, final Clock clock, final SubscriptionFactory factory,
+ final NotificationQueueService notificationQueueService) {
this.clock = clock;
this.factory = factory;
this.subscriptionsDao = dbi.onDemand(SubscriptionSqlDao.class);
@@ -76,18 +80,18 @@ public class EntitlementSqlDao implements EntitlementDao {
}
@Override
- public SubscriptionBundle getSubscriptionBundleFromKey(String bundleKey) {
+ public SubscriptionBundle getSubscriptionBundleFromKey(final String bundleKey) {
return bundlesDao.getBundleFromKey(bundleKey);
}
@Override
public List<SubscriptionBundle> getSubscriptionBundleForAccount(
- UUID accountId) {
+ final UUID accountId) {
return bundlesDao.getBundleFromAccount(accountId.toString());
}
@Override
- public SubscriptionBundle getSubscriptionBundleFromId(UUID bundleId) {
+ public SubscriptionBundle getSubscriptionBundleFromId(final UUID bundleId) {
return bundlesDao.getBundleFromId(bundleId.toString());
}
@@ -103,11 +107,26 @@ public class EntitlementSqlDao implements EntitlementDao {
}
@Override
- public Subscription getSubscriptionFromId(UUID subscriptionId) {
+ public Subscription getSubscriptionFromId(final UUID subscriptionId) {
return buildSubscription(subscriptionsDao.getSubscriptionFromId(subscriptionId.toString()));
}
@Override
+ public UUID getAccountIdFromSubscriptionId(final UUID subscriptionId) throws EntitlementBillingApiException {
+ UUID bundleId = subscriptionsDao.getSubscriptionFromId(subscriptionId.toString()).getBundleId();
+ if (bundleId == null) {
+ throw new EntitlementBillingApiException(ErrorCode.ENT_GET_NO_BUNDLE_FOR_SUBSCRIPTION, subscriptionId.toString());
+ }
+
+ SubscriptionBundle bundle = bundlesDao.getBundleFromId(bundleId.toString());
+ if (bundle == null) {
+ throw new EntitlementBillingApiException(ErrorCode.ENT_GET_INVALID_BUNDLE_ID, bundleId.toString());
+ }
+
+ return bundle.getAccountId();
+ }
+
+ @Override
public Subscription getBaseSubscription(final UUID bundleId) {
List<Subscription> subscriptions = subscriptionsDao.getSubscriptionsFromBundleId(bundleId.toString());
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/BrainDeadMockEntitlementDao.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/BrainDeadMockEntitlementDao.java
index 94fd234..a186bff 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/BrainDeadMockEntitlementDao.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/BrainDeadMockEntitlementDao.java
@@ -16,11 +16,10 @@
package com.ning.billing.entitlement.api.billing;
-import java.util.Collection;
import java.util.List;
import java.util.UUID;
-
import com.ning.billing.entitlement.api.migration.AccountMigrationData;
+import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
import com.ning.billing.entitlement.api.user.SubscriptionBundleData;
@@ -32,110 +31,115 @@ class BrainDeadMockEntitlementDao implements EntitlementDao {
@Override
public List<SubscriptionBundle> getSubscriptionBundleForAccount(
- UUID accountId) {
+ final UUID accountId) {
throw new UnsupportedOperationException();
}
@Override
- public SubscriptionBundle getSubscriptionBundleFromKey(String bundleKey) {
+ public SubscriptionBundle getSubscriptionBundleFromKey(final String bundleKey) {
throw new UnsupportedOperationException();
}
@Override
- public SubscriptionBundle getSubscriptionBundleFromId(UUID bundleId) {
+ public SubscriptionBundle getSubscriptionBundleFromId(final UUID bundleId) {
throw new UnsupportedOperationException();
}
@Override
public SubscriptionBundle createSubscriptionBundle(
- SubscriptionBundleData bundle) {
+ final SubscriptionBundleData bundle) {
throw new UnsupportedOperationException();
}
@Override
- public Subscription getSubscriptionFromId(UUID subscriptionId) {
+ public Subscription getSubscriptionFromId(final UUID subscriptionId) {
throw new UnsupportedOperationException();
}
- @Override
- public Subscription getBaseSubscription(UUID bundleId) {
+ @Override
+ public UUID getAccountIdFromSubscriptionId(final UUID subscriptionId) throws EntitlementBillingApiException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Subscription getBaseSubscription(final UUID bundleId) {
throw new UnsupportedOperationException();
}
@Override
- public List<Subscription> getSubscriptions(UUID bundleId) {
+ public List<Subscription> getSubscriptions(final UUID bundleId) {
throw new UnsupportedOperationException();
}
@Override
- public List<Subscription> getSubscriptionsForKey(String bundleKey) {
+ public List<Subscription> getSubscriptionsForKey(final String bundleKey) {
throw new UnsupportedOperationException();
}
@Override
- public void updateSubscription(SubscriptionData subscription) {
+ public void updateSubscription(final SubscriptionData subscription) {
throw new UnsupportedOperationException();
}
@Override
- public void createNextPhaseEvent(UUID subscriptionId,
- EntitlementEvent nextPhase) {
+ public void createNextPhaseEvent(final UUID subscriptionId,
+ final EntitlementEvent nextPhase) {
throw new UnsupportedOperationException();
}
@Override
public List<EntitlementEvent> getEventsForSubscription(
- UUID subscriptionId) {
+ final UUID subscriptionId) {
throw new UnsupportedOperationException();
}
@Override
public List<EntitlementEvent> getPendingEventsForSubscription(
- UUID subscriptionId) {
+ final UUID subscriptionId) {
throw new UnsupportedOperationException();
}
@Override
- public void createSubscription(SubscriptionData subscription,
- List<EntitlementEvent> initialEvents) {
+ public void createSubscription(final SubscriptionData subscription,
+ final List<EntitlementEvent> initialEvents) {
throw new UnsupportedOperationException();
}
@Override
- public void cancelSubscription(UUID subscriptionId,
- EntitlementEvent cancelEvent) {
+ public void cancelSubscription(final UUID subscriptionId,
+ final EntitlementEvent cancelEvent) {
throw new UnsupportedOperationException();
}
@Override
- public void uncancelSubscription(UUID subscriptionId,
- List<EntitlementEvent> uncancelEvents) {
+ public void uncancelSubscription(final UUID subscriptionId,
+ final List<EntitlementEvent> uncancelEvents) {
throw new UnsupportedOperationException();
}
@Override
- public void changePlan(UUID subscriptionId,
- List<EntitlementEvent> changeEvents) {
+ public void changePlan(final UUID subscriptionId,
+ final List<EntitlementEvent> changeEvents) {
throw new UnsupportedOperationException();
}
@Override
- public void migrate(UUID acountId, AccountMigrationData data) {
+ public void migrate(final UUID acountId, final AccountMigrationData data) {
throw new UnsupportedOperationException();
}
@Override
- public void undoMigration(UUID accountId) {
+ public void undoMigration(final UUID accountId) {
throw new UnsupportedOperationException();
}
@Override
- public EntitlementEvent getEventById(UUID eventId) {
+ public EntitlementEvent getEventById(final UUID eventId) {
throw new UnsupportedOperationException();
}
}
\ No newline at end of file
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/TestDefaultEntitlementBillingApi.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/TestDefaultEntitlementBillingApi.java
index 08b05d6..68ad693 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/TestDefaultEntitlementBillingApi.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/TestDefaultEntitlementBillingApi.java
@@ -43,6 +43,7 @@ import com.ning.billing.catalog.api.PlanPhase;
import com.ning.billing.catalog.api.PriceListSet;
import com.ning.billing.catalog.glue.CatalogModule;
import com.ning.billing.entitlement.api.TestApiBase;
+import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.entitlement.api.user.Subscription.SubscriptionState;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
@@ -127,8 +128,13 @@ public class TestDefaultEntitlementBillingApi {
return subscription;
}
-
- @Override
+
+ @Override
+ public UUID getAccountIdFromSubscriptionId(final UUID subscriptionId) throws EntitlementBillingApiException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public SubscriptionBundle getSubscriptionBundleFromId(UUID bundleId) {
return bundle;
}
@@ -145,8 +151,13 @@ public class TestDefaultEntitlementBillingApi {
UUID accountId) {
return new ArrayList<SubscriptionBundle>();
}
-
- };
+
+ @Override
+ public UUID getAccountIdFromSubscriptionId(final UUID subscriptionId) throws EntitlementBillingApiException {
+ throw new UnsupportedOperationException();
+ }
+
+ };
AccountUserApi accountApi = new BrainDeadAccountUserApi() ;
DefaultEntitlementBillingApi api = new DefaultEntitlementBillingApi(dao,accountApi,catalogService);
SortedSet<BillingEvent> events = api.getBillingEventsForAccount(new UUID(0L,0L));
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancel.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancel.java
index 3326bc8..1e725bf 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancel.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancel.java
@@ -22,6 +22,7 @@ import static org.testng.Assert.assertTrue;
import static org.testng.Assert.assertFalse;
import com.ning.billing.entitlement.api.ApiTestListener.NextEvent;
+import com.ning.billing.entitlement.api.billing.EntitlementBillingApiException;
import com.ning.billing.util.clock.DefaultClock;
import org.joda.time.DateTime;
import org.testng.Assert;
@@ -80,7 +81,7 @@ public abstract class TestUserApiCancel extends TestApiBase {
}
- protected void testCancelSubscriptionEOTWithChargeThroughDate() {
+ protected void testCancelSubscriptionEOTWithChargeThroughDate() throws EntitlementBillingApiException {
log.info("Starting testCancelSubscriptionEOTWithChargeThroughDate");
try {
@@ -176,7 +177,7 @@ public abstract class TestUserApiCancel extends TestApiBase {
// Similar test to testCancelSubscriptionEOTWithChargeThroughDate except we uncancel and check things
// are as they used to be and we can move forward without hitting cancellation
//
- protected void testUncancel() {
+ protected void testUncancel() throws EntitlementBillingApiException {
log.info("Starting testUncancel");
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancelMemory.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancelMemory.java
index 630d925..dbcc680 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancelMemory.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancelMemory.java
@@ -19,6 +19,7 @@ package com.ning.billing.entitlement.api.user;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Stage;
+import com.ning.billing.entitlement.api.billing.EntitlementBillingApiException;
import com.ning.billing.entitlement.glue.MockEngineModuleMemory;
import org.testng.annotations.Test;
@@ -38,7 +39,7 @@ public class TestUserApiCancelMemory extends TestUserApiCancel {
@Override
@Test(enabled=true, groups={"fast"})
- public void testCancelSubscriptionEOTWithChargeThroughDate() {
+ public void testCancelSubscriptionEOTWithChargeThroughDate() throws EntitlementBillingApiException {
super.testCancelSubscriptionEOTWithChargeThroughDate();
}
@@ -50,7 +51,7 @@ public class TestUserApiCancelMemory extends TestUserApiCancel {
@Override
@Test(enabled=true, groups={"fast"})
- public void testUncancel() {
+ public void testUncancel() throws EntitlementBillingApiException {
super.testUncancel();
}
}
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancelSql.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancelSql.java
index 87491c7..840f357 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancelSql.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancelSql.java
@@ -19,6 +19,7 @@ package com.ning.billing.entitlement.api.user;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Stage;
+import com.ning.billing.entitlement.api.billing.EntitlementBillingApiException;
import com.ning.billing.entitlement.glue.MockEngineModuleSql;
import org.testng.annotations.Test;
@@ -33,7 +34,7 @@ public class TestUserApiCancelSql extends TestUserApiCancel {
}
@Test(enabled= false, groups={"stress"})
- public void stressTest() {
+ public void stressTest() throws EntitlementBillingApiException {
for (int i = 0; i < MAX_STRESS_ITERATIONS; i++) {
cleanupTest();
setupTest();
@@ -55,7 +56,7 @@ public class TestUserApiCancelSql extends TestUserApiCancel {
@Override
@Test(enabled=true, groups={"sql"})
- public void testCancelSubscriptionEOTWithChargeThroughDate() {
+ public void testCancelSubscriptionEOTWithChargeThroughDate() throws EntitlementBillingApiException {
super.testCancelSubscriptionEOTWithChargeThroughDate();
}
@@ -67,7 +68,7 @@ public class TestUserApiCancelSql extends TestUserApiCancel {
@Override
@Test(enabled=true, groups={"sql"})
- public void testUncancel() {
+ public void testUncancel() throws EntitlementBillingApiException {
super.testUncancel();
}
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlan.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlan.java
index 51c3d8b..78616be 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlan.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlan.java
@@ -37,6 +37,7 @@ import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.entitlement.api.TestApiBase;
import com.ning.billing.entitlement.api.ApiTestListener.NextEvent;
+import com.ning.billing.entitlement.api.billing.EntitlementBillingApiException;
import com.ning.billing.entitlement.events.EntitlementEvent;
import com.ning.billing.entitlement.events.user.ApiEvent;
import com.ning.billing.util.clock.DefaultClock;
@@ -100,12 +101,12 @@ public abstract class TestUserApiChangePlan extends TestApiBase {
}
- protected void testChangePlanBundleAlignEOTWithChargeThroughDate() {
+ protected void testChangePlanBundleAlignEOTWithChargeThroughDate() throws EntitlementBillingApiException {
testChangePlanBundleAlignEOTWithChargeThroughDate("Shotgun", BillingPeriod.ANNUAL, "gunclubDiscount", "Pistol", BillingPeriod.ANNUAL, "gunclubDiscount");
}
private void testChangePlanBundleAlignEOTWithChargeThroughDate(String fromProd, BillingPeriod fromTerm, String fromPlanSet,
- String toProd, BillingPeriod toTerm, String toPlanSet) {
+ String toProd, BillingPeriod toTerm, String toPlanSet) throws EntitlementBillingApiException {
log.info("Starting testChangeSubscriptionEOTWithChargeThroughDate");
try {
@@ -216,12 +217,12 @@ public abstract class TestUserApiChangePlan extends TestApiBase {
}
- protected void testChangePlanChangePlanAlignEOTWithChargeThroughDate() {
+ protected void testChangePlanChangePlanAlignEOTWithChargeThroughDate() throws EntitlementBillingApiException {
tChangePlanChangePlanAlignEOTWithChargeThroughDate("Shotgun", BillingPeriod.ANNUAL, PriceListSet.DEFAULT_PRICELIST_NAME, "Assault-Rifle", BillingPeriod.ANNUAL, "rescue");
}
private void tChangePlanChangePlanAlignEOTWithChargeThroughDate(String fromProd, BillingPeriod fromTerm, String fromPlanSet,
- String toProd, BillingPeriod toTerm, String toPlanSet) {
+ String toProd, BillingPeriod toTerm, String toPlanSet) throws EntitlementBillingApiException {
log.info("Starting testChangePlanBundleAlignEOTWithChargeThroughDate");
@@ -297,7 +298,7 @@ public abstract class TestUserApiChangePlan extends TestApiBase {
}
}
- protected void testMultipleChangeLastIMM() {
+ protected void testMultipleChangeLastIMM() throws EntitlementBillingApiException {
try {
SubscriptionData subscription = createSubscription("Assault-Rifle", BillingPeriod.MONTHLY, "gunclubDiscount");
@@ -344,7 +345,7 @@ public abstract class TestUserApiChangePlan extends TestApiBase {
}
}
- protected void testMultipleChangeLastEOT() {
+ protected void testMultipleChangeLastEOT() throws EntitlementBillingApiException {
try {
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlanMemory.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlanMemory.java
index aecaaac..253da07 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlanMemory.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlanMemory.java
@@ -19,6 +19,7 @@ package com.ning.billing.entitlement.api.user;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Stage;
+import com.ning.billing.entitlement.api.billing.EntitlementBillingApiException;
import com.ning.billing.entitlement.glue.MockEngineModuleMemory;
import org.testng.annotations.Test;
@@ -38,7 +39,7 @@ public class TestUserApiChangePlanMemory extends TestUserApiChangePlan {
@Override
@Test(enabled=true, groups={"fast"})
- public void testChangePlanBundleAlignEOTWithChargeThroughDate() {
+ public void testChangePlanBundleAlignEOTWithChargeThroughDate() throws EntitlementBillingApiException {
super.testChangePlanBundleAlignEOTWithChargeThroughDate();
}
@@ -50,20 +51,20 @@ public class TestUserApiChangePlanMemory extends TestUserApiChangePlan {
@Override
@Test(enabled=true, groups={"fast"})
- public void testMultipleChangeLastIMM() {
+ public void testMultipleChangeLastIMM() throws EntitlementBillingApiException {
super.testMultipleChangeLastIMM();
}
@Override
@Test(enabled=true, groups={"fast"})
- public void testMultipleChangeLastEOT() {
+ public void testMultipleChangeLastEOT() throws EntitlementBillingApiException {
super.testMultipleChangeLastEOT();
}
// Set to false until we implement rescue example.
@Override
@Test(enabled=false, groups={"fast"})
- public void testChangePlanChangePlanAlignEOTWithChargeThroughDate() {
+ public void testChangePlanChangePlanAlignEOTWithChargeThroughDate() throws EntitlementBillingApiException {
super.testChangePlanChangePlanAlignEOTWithChargeThroughDate();
}
}
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlanSql.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlanSql.java
index f5ad803..92aa652 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlanSql.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlanSql.java
@@ -19,6 +19,7 @@ package com.ning.billing.entitlement.api.user;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Stage;
+import com.ning.billing.entitlement.api.billing.EntitlementBillingApiException;
import com.ning.billing.entitlement.glue.MockEngineModuleSql;
import org.testng.annotations.Test;
@@ -32,7 +33,7 @@ public class TestUserApiChangePlanSql extends TestUserApiChangePlan {
}
@Test(enabled= true, groups={"stress"})
- public void stressTest() {
+ public void stressTest() throws EntitlementBillingApiException {
for (int i = 0; i < MAX_STRESS_ITERATIONS; i++) {
cleanupTest();
setupTest();
@@ -60,7 +61,7 @@ public class TestUserApiChangePlanSql extends TestUserApiChangePlan {
@Override
@Test(enabled=true, groups={"sql"})
- public void testChangePlanBundleAlignEOTWithChargeThroughDate() {
+ public void testChangePlanBundleAlignEOTWithChargeThroughDate() throws EntitlementBillingApiException {
super.testChangePlanBundleAlignEOTWithChargeThroughDate();
}
@@ -72,20 +73,20 @@ public class TestUserApiChangePlanSql extends TestUserApiChangePlan {
@Override
@Test(enabled=true, groups={"sql"})
- public void testMultipleChangeLastIMM() {
+ public void testMultipleChangeLastIMM() throws EntitlementBillingApiException {
super.testMultipleChangeLastIMM();
}
@Override
@Test(enabled=true, groups={"sql"})
- public void testMultipleChangeLastEOT() {
+ public void testMultipleChangeLastEOT() throws EntitlementBillingApiException {
super.testMultipleChangeLastEOT();
}
// rescue not implemented yet
@Override
@Test(enabled=false, groups={"sql"})
- public void testChangePlanChangePlanAlignEOTWithChargeThroughDate() {
+ public void testChangePlanChangePlanAlignEOTWithChargeThroughDate() throws EntitlementBillingApiException {
super.testChangePlanChangePlanAlignEOTWithChargeThroughDate();
}
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiDemos.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiDemos.java
index 4a8b4b1..7fceab9 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiDemos.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiDemos.java
@@ -29,6 +29,7 @@ import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.entitlement.api.TestApiBase;
import com.ning.billing.entitlement.api.ApiTestListener.NextEvent;
+import com.ning.billing.entitlement.api.billing.EntitlementBillingApiException;
import com.ning.billing.entitlement.glue.MockEngineModuleSql;
import com.ning.billing.util.clock.DefaultClock;
import org.joda.time.DateTime;
@@ -64,7 +65,7 @@ public class TestUserApiDemos extends TestApiBase {
* 8. Cancel EOT
*/
@Test(enabled=true, groups="demos")
- public void testDemo1() {
+ public void testDemo1() throws EntitlementBillingApiException {
try {
System.out.println("DEMO 1 START");
@@ -189,7 +190,7 @@ public class TestUserApiDemos extends TestApiBase {
}
@Test(enabled= true, groups={"stress"})
- public void stressTest() {
+ public void stressTest() throws EntitlementBillingApiException {
for (int i = 0; i < 100; i++) {
cleanupTest();
setupTest();
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiScenarios.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiScenarios.java
index 84d1031..f69b36a 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiScenarios.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiScenarios.java
@@ -26,6 +26,7 @@ import com.ning.billing.catalog.api.PlanPhase;
import com.ning.billing.entitlement.api.ApiTestListener.NextEvent;
import com.ning.billing.entitlement.api.TestApiBase;
+import com.ning.billing.entitlement.api.billing.EntitlementBillingApiException;
import com.ning.billing.entitlement.glue.MockEngineModuleSql;
import com.ning.billing.util.clock.DefaultClock;
import org.joda.time.DateTime;
@@ -42,7 +43,7 @@ public class TestUserApiScenarios extends TestApiBase {
}
@Test(enabled=true)
- public void testChangeIMMCancelUncancelChangeEOT() {
+ public void testChangeIMMCancelUncancelChangeEOT() throws EntitlementBillingApiException {
log.info("Starting testChangeIMMCancelUncancelChangeEOT");
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoMemory.java b/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoMemory.java
index 86e458f..d5719e4 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoMemory.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoMemory.java
@@ -16,20 +16,30 @@
package com.ning.billing.entitlement.engine.dao;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.TreeSet;
+import java.util.UUID;
+import org.joda.time.DateTime;
+import org.skife.jdbi.v2.sqlobject.mixins.Transmogrifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.google.inject.Inject;
import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.catalog.api.TimeUnit;
import com.ning.billing.config.EntitlementConfig;
-
+import com.ning.billing.entitlement.api.billing.EntitlementBillingApiException;
import com.ning.billing.entitlement.api.migration.AccountMigrationData;
import com.ning.billing.entitlement.api.migration.AccountMigrationData.BundleMigrationData;
import com.ning.billing.entitlement.api.migration.AccountMigrationData.SubscriptionMigrationData;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
-import com.ning.billing.entitlement.api.user.SubscriptionData;
import com.ning.billing.entitlement.api.user.SubscriptionBundleData;
+import com.ning.billing.entitlement.api.user.SubscriptionData;
import com.ning.billing.entitlement.api.user.SubscriptionFactory;
-
import com.ning.billing.entitlement.api.user.SubscriptionFactory.SubscriptionBuilder;
import com.ning.billing.entitlement.engine.core.Engine;
import com.ning.billing.entitlement.events.EntitlementEvent;
@@ -38,20 +48,10 @@ import com.ning.billing.entitlement.events.user.ApiEvent;
import com.ning.billing.entitlement.events.user.ApiEventType;
import com.ning.billing.util.clock.Clock;
import com.ning.billing.util.notificationq.NotificationKey;
-import com.ning.billing.util.notificationq.NotificationLifecycle;
import com.ning.billing.util.notificationq.NotificationQueue;
import com.ning.billing.util.notificationq.NotificationQueueService;
import com.ning.billing.util.notificationq.NotificationQueueService.NoSuchNotificationQueue;
-import org.joda.time.DateTime;
-import org.skife.jdbi.v2.sqlobject.mixins.Transmogrifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.*;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-
public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlementDao {
protected final static Logger log = LoggerFactory.getLogger(EntitlementDao.class);
@@ -65,7 +65,9 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
private final NotificationQueueService notificationQueueService;
@Inject
- public MockEntitlementDaoMemory(Clock clock, EntitlementConfig config, SubscriptionFactory factory, NotificationQueueService notificationQueueService) {
+ public MockEntitlementDaoMemory(final Clock clock, final EntitlementConfig config,
+ final SubscriptionFactory factory,
+ final NotificationQueueService notificationQueueService) {
super();
this.clock = clock;
this.config = config;
@@ -84,9 +86,9 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
}
@Override
- public List<SubscriptionBundle> getSubscriptionBundleForAccount(UUID accountId) {
+ public List<SubscriptionBundle> getSubscriptionBundleForAccount(final UUID accountId) {
List<SubscriptionBundle> results = new ArrayList<SubscriptionBundle>();
- for (SubscriptionBundle cur : bundles) {
+ for (final SubscriptionBundle cur : bundles) {
if (cur.getAccountId().equals(accountId)) {
results.add(cur);
}
@@ -95,8 +97,8 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
}
@Override
- public SubscriptionBundle getSubscriptionBundleFromId(UUID bundleId) {
- for (SubscriptionBundle cur : bundles) {
+ public SubscriptionBundle getSubscriptionBundleFromId(final UUID bundleId) {
+ for (final SubscriptionBundle cur : bundles) {
if (cur.getId().equals(bundleId)) {
return cur;
}
@@ -105,8 +107,8 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
}
@Override
- public SubscriptionBundle getSubscriptionBundleFromKey(String bundleKey) {
- for (SubscriptionBundle cur : bundles) {
+ public SubscriptionBundle getSubscriptionBundleFromKey(final String bundleKey) {
+ for (final SubscriptionBundle cur : bundles) {
if (cur.getKey().equals(bundleKey)) {
return cur;
}
@@ -116,14 +118,14 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
@Override
- public SubscriptionBundle createSubscriptionBundle(SubscriptionBundleData bundle) {
+ public SubscriptionBundle createSubscriptionBundle(final SubscriptionBundleData bundle) {
bundles.add(bundle);
return getSubscriptionBundleFromId(bundle.getId());
}
@Override
- public Subscription getSubscriptionFromId(UUID subscriptionId) {
- for (Subscription cur : subscriptions) {
+ public Subscription getSubscriptionFromId(final UUID subscriptionId) {
+ for (final Subscription cur : subscriptions) {
if (cur.getId().equals(subscriptionId)) {
return buildSubscription((SubscriptionData) cur);
}
@@ -132,9 +134,14 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
}
@Override
- public List<Subscription> getSubscriptionsForKey(String bundleKey) {
+ public UUID getAccountIdFromSubscriptionId(final UUID subscriptionId) throws EntitlementBillingApiException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public List<Subscription> getSubscriptionsForKey(final String bundleKey) {
- for (SubscriptionBundle cur : bundles) {
+ for (final SubscriptionBundle cur : bundles) {
if (cur.getKey().equals(bundleKey)) {
return getSubscriptions(cur.getId());
}
@@ -144,11 +151,11 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
@Override
- public void createSubscription(SubscriptionData subscription, List<EntitlementEvent> initalEvents) {
+ public void createSubscription(final SubscriptionData subscription, final List<EntitlementEvent> initialEvents) {
synchronized(events) {
- events.addAll(initalEvents);
- for (final EntitlementEvent cur : initalEvents) {
+ events.addAll(initialEvents);
+ for (final EntitlementEvent cur : initialEvents) {
recordFutureNotificationFromTransaction(null, cur.getEffectiveDate(), new NotificationKey() {
@Override
public String toString() {
@@ -162,10 +169,10 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
}
@Override
- public List<Subscription> getSubscriptions(UUID bundleId) {
+ public List<Subscription> getSubscriptions(final UUID bundleId) {
List<Subscription> results = new ArrayList<Subscription>();
- for (Subscription cur : subscriptions) {
+ for (final Subscription cur : subscriptions) {
if (cur.getBundleId().equals(bundleId)) {
results.add(buildSubscription((SubscriptionData) cur));
}
@@ -174,10 +181,10 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
}
@Override
- public List<EntitlementEvent> getEventsForSubscription(UUID subscriptionId) {
+ public List<EntitlementEvent> getEventsForSubscription(final UUID subscriptionId) {
synchronized(events) {
List<EntitlementEvent> results = new LinkedList<EntitlementEvent>();
- for (EntitlementEvent cur : events) {
+ for (final EntitlementEvent cur : events) {
if (cur.getSubscriptionId().equals(subscriptionId)) {
results.add(cur);
}
@@ -187,10 +194,10 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
}
@Override
- public List<EntitlementEvent> getPendingEventsForSubscription(UUID subscriptionId) {
+ public List<EntitlementEvent> getPendingEventsForSubscription(final UUID subscriptionId) {
synchronized(events) {
List<EntitlementEvent> results = new LinkedList<EntitlementEvent>();
- for (EntitlementEvent cur : events) {
+ for (final EntitlementEvent cur : events) {
if (cur.isActive() &&
cur.getEffectiveDate().isAfter(clock.getUTCNow()) &&
cur.getSubscriptionId().equals(subscriptionId)) {
@@ -203,8 +210,8 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
@Override
- public Subscription getBaseSubscription(UUID bundleId) {
- for (Subscription cur : subscriptions) {
+ public Subscription getBaseSubscription(final UUID bundleId) {
+ for (final Subscription cur : subscriptions) {
if (cur.getBundleId().equals(bundleId) &&
cur.getCurrentPlan().getProduct().getCategory() == ProductCategory.BASE) {
return buildSubscription((SubscriptionData) cur);
@@ -214,19 +221,19 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
}
@Override
- public void createNextPhaseEvent(UUID subscriptionId, EntitlementEvent nextPhase) {
+ public void createNextPhaseEvent(final UUID subscriptionId, final EntitlementEvent nextPhase) {
cancelNextPhaseEvent(subscriptionId);
insertEvent(nextPhase);
}
- private Subscription buildSubscription(SubscriptionData in) {
+ private Subscription buildSubscription(final SubscriptionData in) {
return factory.createSubscription(new SubscriptionBuilder(in), getEventsForSubscription(in.getId()));
}
@Override
- public void updateSubscription(SubscriptionData subscription) {
+ public void updateSubscription(final SubscriptionData subscription) {
boolean found = false;
Iterator<Subscription> it = subscriptions.iterator();
@@ -244,7 +251,7 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
}
@Override
- public void cancelSubscription(UUID subscriptionId, EntitlementEvent cancelEvent) {
+ public void cancelSubscription(final UUID subscriptionId, final EntitlementEvent cancelEvent) {
synchronized (cancelEvent) {
cancelNextPhaseEvent(subscriptionId);
insertEvent(cancelEvent);
@@ -252,7 +259,7 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
}
@Override
- public void changePlan(UUID subscriptionId, List<EntitlementEvent> changeEvents) {
+ public void changePlan(final UUID subscriptionId, final List<EntitlementEvent> changeEvents) {
synchronized(events) {
cancelNextChangeEvent(subscriptionId);
cancelNextPhaseEvent(subscriptionId);
@@ -280,7 +287,7 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
}
}
- private void cancelNextPhaseEvent(UUID subscriptionId) {
+ private void cancelNextPhaseEvent(final UUID subscriptionId) {
Subscription curSubscription = getSubscriptionFromId(subscriptionId);
if (curSubscription.getCurrentPhase() == null ||
@@ -307,7 +314,7 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
}
- private void cancelNextChangeEvent(UUID subscriptionId) {
+ private void cancelNextChangeEvent(final UUID subscriptionId) {
synchronized(events) {
@@ -328,7 +335,7 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
}
@Override
- public void uncancelSubscription(UUID subscriptionId, List<EntitlementEvent> uncancelEvents) {
+ public void uncancelSubscription(final UUID subscriptionId, final List<EntitlementEvent> uncancelEvents) {
synchronized (events) {
boolean foundCancel = false;
@@ -346,7 +353,7 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
}
}
if (foundCancel) {
- for (EntitlementEvent cur : uncancelEvents) {
+ for (final EntitlementEvent cur : uncancelEvents) {
insertEvent(cur);
}
}
@@ -360,9 +367,9 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
undoMigration(accountId);
- for (BundleMigrationData curBundle : accountData.getData()) {
+ for (final BundleMigrationData curBundle : accountData.getData()) {
SubscriptionBundleData bundleData = curBundle.getData();
- for (SubscriptionMigrationData curSubscription : curBundle.getSubscriptions()) {
+ for (final SubscriptionMigrationData curSubscription : curBundle.getSubscriptions()) {
SubscriptionData subData = curSubscription.getData();
for (final EntitlementEvent curEvent : curSubscription.getInitialEvents()) {
events.add(curEvent);
@@ -382,15 +389,15 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
}
@Override
- public void undoMigration(UUID accountId) {
+ public void undoMigration(final UUID accountId) {
synchronized(events) {
List<SubscriptionBundle> allBundles = getSubscriptionBundleForAccount(accountId);
- for (SubscriptionBundle bundle : allBundles) {
+ for (final SubscriptionBundle bundle : allBundles) {
List<Subscription> allSubscriptions = getSubscriptions(bundle.getId());
- for (Subscription subscription : allSubscriptions) {
+ for (final Subscription subscription : allSubscriptions) {
List<EntitlementEvent> allEvents = getEventsForSubscription(subscription.getId());
- for (EntitlementEvent event : allEvents) {
+ for (final EntitlementEvent event : allEvents) {
events.remove(event);
}
subscriptions.remove(subscription);
@@ -402,9 +409,9 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
}
@Override
- public EntitlementEvent getEventById(UUID eventId) {
+ public EntitlementEvent getEventById(final UUID eventId) {
synchronized(events) {
- for (EntitlementEvent cur : events) {
+ for (final EntitlementEvent cur : events) {
if (cur.getId().equals(eventId)) {
return cur;
}
invoice/pom.xml 5(+5 -0)
diff --git a/invoice/pom.xml b/invoice/pom.xml
index 8c939ca..76c7fdc 100644
--- a/invoice/pom.xml
+++ b/invoice/pom.xml
@@ -21,6 +21,11 @@
<packaging>jar</packaging>
<dependencies>
<dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>com.ning.billing</groupId>
<artifactId>killbill-api</artifactId>
</dependency>
diff --git a/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceUserApi.java b/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceUserApi.java
index 22f4990..1629a14 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceUserApi.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceUserApi.java
@@ -19,6 +19,7 @@ package com.ning.billing.invoice.api.user;
import com.google.inject.Inject;
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.api.InvoiceUserApi;
import com.ning.billing.invoice.dao.DefaultInvoiceDao;
import com.ning.billing.invoice.dao.InvoiceDao;
@@ -34,32 +35,38 @@ public class DefaultInvoiceUserApi implements InvoiceUserApi {
private final InvoiceDao dao;
@Inject
- public DefaultInvoiceUserApi(InvoiceDao dao) {
+ public DefaultInvoiceUserApi(final InvoiceDao dao) {
this.dao = dao;
}
@Override
- public List<UUID> getInvoicesForPayment(DateTime targetDate, int numberOfDays) {
+ public List<UUID> getInvoicesForPayment(final DateTime targetDate, final int numberOfDays) {
return dao.getInvoicesForPayment(targetDate.toDate(), numberOfDays);
}
@Override
- public List<Invoice> getInvoicesByAccount(UUID accountId) {
+ public List<Invoice> getInvoicesByAccount(final UUID accountId) {
return dao.getInvoicesByAccount(accountId.toString());
}
@Override
- public Invoice getInvoice(UUID invoiceId) {
+ public List<InvoiceItem> getInvoiceItemsByAccount(final UUID accountId) {
+ return dao.getInvoiceItemsByAccount(accountId.toString());
+ }
+
+ @Override
+ public Invoice getInvoice(final UUID invoiceId) {
return dao.getById(invoiceId.toString());
}
@Override
- public void paymentAttemptFailed(UUID invoiceId, UUID paymentId, DateTime paymentAttemptDate) {
+ public void paymentAttemptFailed(final UUID invoiceId, final UUID paymentId, final DateTime paymentAttemptDate) {
dao.notifyFailedPayment(invoiceId.toString(), paymentId.toString(), paymentAttemptDate.toDate());
}
@Override
- public void paymentAttemptSuccessful(UUID invoiceId, BigDecimal amount, Currency currency, UUID paymentId, DateTime paymentDate) {
+ public void paymentAttemptSuccessful(final UUID invoiceId, final BigDecimal amount, final Currency currency,
+ final UUID paymentId, final DateTime paymentDate) {
dao.notifySuccessfulPayment(invoiceId.toString(), amount, currency.toString(), paymentId.toString(), paymentDate.toDate());
}
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
index 20f33c7..49e1124 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
@@ -16,8 +16,6 @@
package com.ning.billing.invoice.dao;
-import sun.reflect.generics.reflectiveObjects.NotImplementedException;
-
import com.google.inject.Inject;
import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.api.InvoiceCreationNotification;
@@ -36,25 +34,32 @@ import java.util.List;
import java.util.UUID;
public class DefaultInvoiceDao implements InvoiceDao {
- private final InvoiceSqlDao invoiceDao;
+ private final InvoiceSqlDao invoiceSqlDao;
+ private final InvoiceItemSqlDao invoiceItemSqlDao;
private final EventBus eventBus;
private final static Logger log = LoggerFactory.getLogger(DefaultInvoiceDao.class);
@Inject
public DefaultInvoiceDao(final IDBI dbi, final EventBus eventBus) {
- this.invoiceDao = dbi.onDemand(InvoiceSqlDao.class);
+ this.invoiceSqlDao = dbi.onDemand(InvoiceSqlDao.class);
+ this.invoiceItemSqlDao = dbi.onDemand(InvoiceItemSqlDao.class);
this.eventBus = eventBus;
}
@Override
public List<Invoice> getInvoicesByAccount(final String accountId) {
- return invoiceDao.getInvoicesByAccount(accountId);
+ return invoiceSqlDao.getInvoicesByAccount(accountId);
+ }
+
+ @Override
+ public List<InvoiceItem> getInvoiceItemsByAccount(final String accountId) {
+ return invoiceItemSqlDao.getInvoiceItemsByAccount(accountId);
}
@Override
public List<Invoice> get() {
- return invoiceDao.inTransaction(new Transaction<List<Invoice>, InvoiceSqlDao>() {
+ return invoiceSqlDao.inTransaction(new Transaction<List<Invoice>, InvoiceSqlDao>() {
@Override
public List<Invoice> inTransaction(final InvoiceSqlDao invoiceDao, final TransactionStatus status) throws Exception {
List<Invoice> invoices = invoiceDao.get();
@@ -72,7 +77,7 @@ public class DefaultInvoiceDao implements InvoiceDao {
@Override
public Invoice getById(final String invoiceId) {
- return invoiceDao.inTransaction(new Transaction<Invoice, InvoiceSqlDao>() {
+ return invoiceSqlDao.inTransaction(new Transaction<Invoice, InvoiceSqlDao>() {
@Override
public Invoice inTransaction(final InvoiceSqlDao invoiceDao, final TransactionStatus status) throws Exception {
Invoice invoice = invoiceDao.getById(invoiceId);
@@ -90,7 +95,7 @@ public class DefaultInvoiceDao implements InvoiceDao {
@Override
public void create(final Invoice invoice) {
- invoiceDao.inTransaction(new Transaction<Void, InvoiceSqlDao>() {
+ invoiceSqlDao.inTransaction(new Transaction<Void, InvoiceSqlDao>() {
@Override
public Void inTransaction(final InvoiceSqlDao invoiceDao, final TransactionStatus status) throws Exception {
Invoice currentInvoice = invoiceDao.getById(invoice.getId().toString());
@@ -107,6 +112,8 @@ public class DefaultInvoiceDao implements InvoiceDao {
invoice.getAmountOutstanding(), invoice.getCurrency(),
invoice.getInvoiceDate());
eventBus.post(event);
+
+
}
return null;
@@ -116,7 +123,7 @@ public class DefaultInvoiceDao implements InvoiceDao {
@Override
public List<Invoice> getInvoicesBySubscription(final String subscriptionId) {
- return invoiceDao.inTransaction(new Transaction<List<Invoice>, InvoiceSqlDao>() {
+ return invoiceSqlDao.inTransaction(new Transaction<List<Invoice>, InvoiceSqlDao>() {
@Override
public List<Invoice> inTransaction(InvoiceSqlDao invoiceDao, TransactionStatus status) throws Exception {
List<Invoice> invoices = invoiceDao.getInvoicesBySubscription(subscriptionId);
@@ -134,21 +141,21 @@ public class DefaultInvoiceDao implements InvoiceDao {
@Override
public List<UUID> getInvoicesForPayment(Date targetDate, int numberOfDays) {
- return invoiceDao.getInvoicesForPayment(targetDate, numberOfDays);
+ return invoiceSqlDao.getInvoicesForPayment(targetDate, numberOfDays);
}
@Override
public void notifySuccessfulPayment(String invoiceId, BigDecimal paymentAmount, String currency, String paymentId, Date paymentDate) {
- invoiceDao.notifySuccessfulPayment(invoiceId, paymentAmount, currency, paymentId, paymentDate);
+ invoiceSqlDao.notifySuccessfulPayment(invoiceId, paymentAmount, currency, paymentId, paymentDate);
}
@Override
public void notifyFailedPayment(String invoiceId, String paymentId, Date paymentAttemptDate) {
- invoiceDao.notifyFailedPayment(invoiceId, paymentId, paymentAttemptDate);
+ invoiceSqlDao.notifyFailedPayment(invoiceId, paymentId, paymentAttemptDate);
}
@Override
public void test() {
- invoiceDao.test();
+ invoiceSqlDao.test();
}
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java
index e9306b2..3b388a2 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java
@@ -21,6 +21,7 @@ import java.util.Date;
import java.util.List;
import java.util.UUID;
import com.ning.billing.invoice.api.Invoice;
+import com.ning.billing.invoice.api.InvoiceItem;
public interface InvoiceDao {
void create(Invoice invoice);
@@ -31,6 +32,8 @@ public interface InvoiceDao {
List<Invoice> getInvoicesByAccount(final String accountId);
+ List<InvoiceItem> getInvoiceItemsByAccount(final String accountId);
+
List<Invoice> getInvoicesBySubscription(final String subscriptionId);
List<UUID> getInvoicesForPayment(final Date targetDate,
diff --git a/invoice/src/main/java/com/ning/billing/invoice/InvoiceListener.java b/invoice/src/main/java/com/ning/billing/invoice/InvoiceListener.java
new file mode 100644
index 0000000..1a1cd13
--- /dev/null
+++ b/invoice/src/main/java/com/ning/billing/invoice/InvoiceListener.java
@@ -0,0 +1,108 @@
+/*
+ * 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;
+
+import java.util.SortedSet;
+import java.util.UUID;
+import org.joda.time.DateTime;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.google.common.eventbus.Subscribe;
+import com.google.inject.Inject;
+import com.ning.billing.ErrorCode;
+import com.ning.billing.account.api.Account;
+import com.ning.billing.account.api.AccountUserApi;
+import com.ning.billing.catalog.api.Currency;
+import com.ning.billing.entitlement.api.billing.BillingEvent;
+import com.ning.billing.entitlement.api.billing.EntitlementBillingApi;
+import com.ning.billing.entitlement.api.billing.EntitlementBillingApiException;
+import com.ning.billing.entitlement.api.user.SubscriptionTransition;
+import com.ning.billing.invoice.api.BillingEventSet;
+import com.ning.billing.invoice.api.Invoice;
+import com.ning.billing.invoice.api.InvoiceApiException;
+import com.ning.billing.invoice.api.InvoiceUserApi;
+import com.ning.billing.invoice.dao.InvoiceDao;
+import com.ning.billing.invoice.model.InvoiceGenerator;
+import com.ning.billing.invoice.model.InvoiceItemList;
+
+public class InvoiceListener {
+ private final static Logger log = LoggerFactory.getLogger(InvoiceListener.class);
+
+ private final InvoiceGenerator generator;
+ private final EntitlementBillingApi entitlementBillingApi;
+ private final AccountUserApi accountUserApi;
+ private final InvoiceUserApi invoiceUserApi;
+ private final InvoiceDao invoiceDao;
+
+ @Inject
+ public InvoiceListener(final InvoiceGenerator generator, final AccountUserApi accountUserApi,
+ final EntitlementBillingApi entitlementBillingApi,
+ final InvoiceUserApi invoiceUserApi,
+ final InvoiceDao invoiceDao) {
+ this.generator = generator;
+ this.entitlementBillingApi = entitlementBillingApi;
+ this.accountUserApi = accountUserApi;
+ this.invoiceUserApi = invoiceUserApi;
+ this.invoiceDao = invoiceDao;
+ }
+
+ @Subscribe
+ public void handleSubscriptionTransition(final SubscriptionTransition transition) {
+ UUID subscriptionId = transition.getSubscriptionId();
+ if (subscriptionId == null) {
+ log.error("Failed handling entitlement change.", new InvoiceApiException(ErrorCode.INVOICE_INVALID_TRANSITION));
+ return;
+ }
+
+ UUID accountId = null;
+ try {
+ accountId = entitlementBillingApi.getAccountIdFromSubscriptionId(subscriptionId);
+ } catch (EntitlementBillingApiException e) {
+ log.error("Failed handling entitlement change.", e);
+ return;
+ }
+
+ if (accountId == null) {
+ log.error("Failed handling entitlement change.",
+ new InvoiceApiException(ErrorCode.INVOICE_NO_ACCOUNT_ID_FOR_SUBSCRIPTION_ID, subscriptionId.toString()));
+ return;
+ }
+
+ Account account = accountUserApi.getAccountById(accountId);
+ if (account == null) {
+ log.error("Failed handling entitlement change.",
+ new InvoiceApiException(ErrorCode.INVOICE_ACCOUNT_ID_INVALID, accountId.toString()));
+ return;
+ }
+
+ SortedSet<BillingEvent> events = entitlementBillingApi.getBillingEventsForAccount(accountId);
+ BillingEventSet billingEvents = new BillingEventSet();
+ billingEvents.addAll(events);
+
+ DateTime targetDate = new DateTime();
+ Currency targetCurrency = account.getCurrency();
+
+ InvoiceItemList invoiceItemList = (InvoiceItemList) invoiceUserApi.getInvoiceItemsByAccount(accountId);
+ Invoice invoice = generator.generateInvoice(accountId, billingEvents, invoiceItemList, targetDate, targetCurrency);
+
+ if (invoice != null) {
+ if (invoice.getNumberOfItems() > 0) {
+ invoiceDao.create(invoice);
+ }
+ }
+ }
+}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java
index 3b9311e..575604e 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java
@@ -38,7 +38,8 @@ import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.api.InvoiceItem;
public class DefaultInvoiceGenerator implements InvoiceGenerator {
- private static final Logger log = LoggerFactory.getLogger(DefaultInvoiceGenerator.class);
+ private static final Logger log = LoggerFactory.getLogger(DefaultInvoiceGenerator.class);
+
@Override
public Invoice generateInvoice(final UUID accountId, final BillingEventSet events, final InvoiceItemList existingItems, final DateTime targetDate, final Currency targetCurrency) {
if (events == null) {return new DefaultInvoice(accountId, targetDate, targetCurrency);}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemList.java b/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemList.java
index fb82f06..2e462df 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemList.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemList.java
@@ -16,11 +16,10 @@
package com.ning.billing.invoice.model;
-import com.ning.billing.invoice.api.InvoiceItem;
-
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
+import com.ning.billing.invoice.api.InvoiceItem;
public class InvoiceItemList extends ArrayList<InvoiceItem> {
private static final int NUMBER_OF_DECIMALS = InvoicingConfiguration.getNumberOfDecimals();