killbill-uncached
Changes
bin/db-helper 5(+4 -1)
Details
bin/db-helper 5(+4 -1)
diff --git a/bin/db-helper b/bin/db-helper
index cc8b746..5a8d82a 100755
--- a/bin/db-helper
+++ b/bin/db-helper
@@ -35,6 +35,9 @@ TEST_ALSO=
DDL_FILE=
CLEAN_FILE=
+# Egrep like for skipping some modules until they are ready
+SKIP="(usage|server)"
+
function usage() {
echo -n "./db_helper "
echo -n " -a <create|clean|dump>"
@@ -48,7 +51,7 @@ function usage() {
}
function get_modules() {
- local modules=`grep module $POM | grep -v modules | cut -d '>' -f 2 | cut -d '<' -f 1`
+ local modules=`grep module $POM | grep -v modules | cut -d '>' -f 2 | cut -d '<' -f 1 | egrep -v "$SKIP"`
echo $modules
}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/transfer/DefaultEntitlementTransferApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/transfer/DefaultEntitlementTransferApi.java
index 46baa72..4fef890 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/transfer/DefaultEntitlementTransferApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/transfer/DefaultEntitlementTransferApi.java
@@ -88,26 +88,11 @@ public class DefaultEntitlementTransferApi implements EntitlementTransferApi {
final DateTime effectiveDate = existingEvent.getEffectiveDate().isBefore(transferDate) ? transferDate : existingEvent.getEffectiveDate();
- // STEPH Issue with catalog for NO_BILLING_PERIOD
- /*
final PlanPhaseSpecifier spec = existingEvent.getPlanPhaseSpecifier();
- final Plan currentPlan = catalog.findPlan(spec.getProductName(), spec.getBillingPeriod(), spec.getPriceListName(), existingEvent.getEffectiveDate());
- PlanPhase currentPhase = null;
- for (PlanPhase curPhase : currentPlan.getAllPhases()) {
- if (curPhase.getPhaseType() == spec.getPhaseType()) {
- currentPhase = curPhase;
- break;
- }
- }
-
- *
- */
-
- final PlanPhaseSpecifier spec = existingEvent.getPlanPhaseSpecifier();
- final PlanPhase currentPhase = catalog.findPhase(existingEvent.getPlanPhaseName(), effectiveDate, subscription.getAlignStartDate());
+ final PlanPhase currentPhase = existingEvent.getPlanPhaseName() != null ? catalog.findPhase(existingEvent.getPlanPhaseName(), effectiveDate, subscription.getAlignStartDate()) : null;
- final ApiEventBuilder apiBuilder = new ApiEventBuilder()
+ final ApiEventBuilder apiBuilder = currentPhase != null ?new ApiEventBuilder()
.setSubscriptionId(subscription.getId())
.setEventPlan(currentPhase.getPlan().getName())
.setEventPlanPhase(currentPhase.getName())
@@ -117,7 +102,7 @@ public class DefaultEntitlementTransferApi implements EntitlementTransferApi {
.setEffectiveDate(effectiveDate)
.setRequestedDate(effectiveDate)
.setUserToken(context.getUserToken())
- .setFromDisk(true);
+ .setFromDisk(true) : null;
switch(existingEvent.getSubscriptionTransitionType()) {
case TRANSFER:
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountJson.java
index a83e8b7..ac02a22 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountJson.java
@@ -30,24 +30,24 @@ import com.fasterxml.jackson.annotation.JsonProperty;
public class AccountJson extends AccountJsonSimple {
- private final String name;
- private final Integer length;
- private final String email;
- private final BillCycleDayJson billCycleDayJson;
- private final String currency;
- private final String paymentMethodId;
- private final String timeZone;
- private final String address1;
- private final String address2;
- private final String postalCode;
- private final String company;
- private final String city;
- private final String state;
- private final String country;
- private final String locale;
- private final String phone;
- private final Boolean isMigrated;
- private final Boolean isNotifiedForInvoices;
+ protected final String name;
+ protected final Integer length;
+ protected final String email;
+ protected final BillCycleDayJson billCycleDayJson;
+ protected final String currency;
+ protected final String paymentMethodId;
+ protected final String timeZone;
+ protected final String address1;
+ protected final String address2;
+ protected final String postalCode;
+ protected final String company;
+ protected final String city;
+ protected final String state;
+ protected final String country;
+ protected final String locale;
+ protected final String phone;
+ protected final Boolean isMigrated;
+ protected final Boolean isNotifiedForInvoices;
public AccountJson(final Account account) {
super(account.getId().toString(), account.getExternalKey());
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountJsonWithBalance.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountJsonWithBalance.java
new file mode 100644
index 0000000..b204a48
--- /dev/null
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountJsonWithBalance.java
@@ -0,0 +1,64 @@
+/*
+ * 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.jaxrs.json;
+
+import java.math.BigDecimal;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ning.billing.account.api.Account;
+
+
+public class AccountJsonWithBalance extends AccountJson {
+
+ private final BigDecimal accountBalance;
+
+ public AccountJsonWithBalance(final Account account, final BigDecimal accountBalance) {
+ super(account);
+ this.accountBalance = accountBalance;
+ }
+
+ @JsonCreator
+ public AccountJsonWithBalance(@JsonProperty("accountId") final String accountId,
+ @JsonProperty("name") final String name,
+ @JsonProperty("firstNameLength") final Integer length,
+ @JsonProperty("externalKey") final String externalKey,
+ @JsonProperty("email") final String email,
+ @JsonProperty("billCycleDay") final BillCycleDayJson billCycleDay,
+ @JsonProperty("currency") final String currency,
+ @JsonProperty("paymentMethodId") final String paymentMethodId,
+ @JsonProperty("timezone") final String timeZone,
+ @JsonProperty("address1") final String address1,
+ @JsonProperty("address2") final String address2,
+ @JsonProperty("postalCode") final String postalCode,
+ @JsonProperty("company") final String company,
+ @JsonProperty("city") final String city,
+ @JsonProperty("state") final String state,
+ @JsonProperty("country") final String country,
+ @JsonProperty("locale") final String locale,
+ @JsonProperty("phone") final String phone,
+ @JsonProperty("isMigrated") final Boolean isMigrated,
+ @JsonProperty("isNotifiedForInvoices") final Boolean isNotifiedForInvoices,
+ @JsonProperty("accountBalance") final BigDecimal accountBalance) {
+ super(accountId, name, length, externalKey, email, billCycleDay, currency, paymentMethodId, timeZone,
+ address1, address2, postalCode, company, city, state, country, locale, phone, isMigrated, isNotifiedForInvoices);
+ this.accountBalance = accountBalance;
+ }
+
+ public BigDecimal getAccountBalance() {
+ return accountBalance;
+ }
+}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonNoEvents.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonNoEvents.java
index 4d5ecb6..d7df43b 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonNoEvents.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonNoEvents.java
@@ -28,6 +28,7 @@ import com.ning.billing.util.audit.AuditLog;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
+
public class SubscriptionJsonNoEvents extends SubscriptionJsonSimple {
private final DateTime startDate;
@@ -61,6 +62,7 @@ public class SubscriptionJsonNoEvents extends SubscriptionJsonSimple {
this.cancelledDate = cancelledDate;
}
+
public SubscriptionJsonNoEvents(final Subscription data, @Nullable final List<AuditLog> auditLogs) {
this(data.getId().toString(),
data.getBundleId().toString(),
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
index 3c97ee0..ee4a6fc 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
@@ -16,6 +16,7 @@
package com.ning.billing.jaxrs.resources;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
@@ -37,6 +38,8 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.UriInfo;
+import org.skife.config.Default;
+
import com.ning.billing.ErrorCode;
import com.ning.billing.account.api.Account;
import com.ning.billing.account.api.AccountApiException;
@@ -56,6 +59,7 @@ import com.ning.billing.invoice.api.InvoicePaymentApi;
import com.ning.billing.invoice.api.InvoiceUserApi;
import com.ning.billing.jaxrs.json.AccountEmailJson;
import com.ning.billing.jaxrs.json.AccountJson;
+import com.ning.billing.jaxrs.json.AccountJsonWithBalance;
import com.ning.billing.jaxrs.json.AccountTimelineJson;
import com.ning.billing.jaxrs.json.BundleJsonNoSubscriptions;
import com.ning.billing.jaxrs.json.CustomFieldJson;
@@ -131,10 +135,17 @@ public class AccountResource extends JaxRsResourceBase {
@GET
@Path("/{accountId:" + UUID_PATTERN + "}")
@Produces(APPLICATION_JSON)
- public Response getAccount(@PathParam("accountId") final String accountId) throws AccountApiException {
+ public Response getAccount(@PathParam("accountId") final String accountId,
+ @QueryParam(QUERY_ACCOUNT_WITH_BALANCE) @DefaultValue("false") final Boolean accountWithBalance) throws AccountApiException {
final Account account = accountApi.getAccountById(UUID.fromString(accountId));
- final AccountJson json = new AccountJson(account);
+ AccountJson json = null;
+ if (accountWithBalance) {
+ final BigDecimal accountBalance = invoiceApi.getAccountBalance(account.getId());
+ json = new AccountJsonWithBalance(account, accountBalance);
+ } else {
+ json = new AccountJson(account);
+ }
return Response.status(Status.OK).entity(json).build();
}
@@ -165,9 +176,16 @@ public class AccountResource extends JaxRsResourceBase {
@GET
@Produces(APPLICATION_JSON)
- public Response getAccountByKey(@QueryParam(QUERY_EXTERNAL_KEY) final String externalKey) throws AccountApiException {
+ public Response getAccountByKey(@QueryParam(QUERY_EXTERNAL_KEY) final String externalKey,
+ @QueryParam(QUERY_ACCOUNT_WITH_BALANCE) @DefaultValue("false") final Boolean accountWithBalance) throws AccountApiException {
final Account account = accountApi.getAccountByKey(externalKey);
- final AccountJson json = new AccountJson(account);
+ AccountJson json = null;
+ if (accountWithBalance) {
+ final BigDecimal accountBalance = invoiceApi.getAccountBalance(account.getId());
+ json = new AccountJsonWithBalance(account, accountBalance);
+ } else {
+ json = new AccountJson(account);
+ }
return Response.status(Status.OK).entity(json).build();
}
@@ -196,7 +214,7 @@ public class AccountResource extends JaxRsResourceBase {
final AccountData data = json.toAccountData();
final UUID uuid = UUID.fromString(accountId);
accountApi.updateAccount(uuid, data, context.createContext(createdBy, reason, comment));
- return getAccount(accountId);
+ return getAccount(accountId, false);
}
// Not supported
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/JaxrsResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/JaxrsResource.java
index e52d1c2..3f48212 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/JaxrsResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/JaxrsResource.java
@@ -50,6 +50,8 @@ public interface JaxrsResource {
public static final String QUERY_TARGET_DATE = "targetDate";
public static final String QUERY_POLICY = "policy";
+ public static final String QUERY_ACCOUNT_WITH_BALANCE = "accountWithBalance";
+
public static final String QUERY_ACCOUNT_ID = "accountId";
public static final String QUERY_INVOICE_WITH_ITEMS = "withItems";
diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestAccount.java b/server/src/test/java/com/ning/billing/jaxrs/TestAccount.java
index 9b62599..226f4ea 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestAccount.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestAccount.java
@@ -16,6 +16,7 @@
package com.ning.billing.jaxrs;
+import java.math.BigDecimal;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -29,9 +30,11 @@ import org.testng.Assert;
import org.testng.annotations.Test;
import com.ning.billing.jaxrs.json.AccountJson;
+import com.ning.billing.jaxrs.json.AccountJsonWithBalance;
import com.ning.billing.jaxrs.json.AccountTimelineJson;
import com.ning.billing.jaxrs.json.BillCycleDayJson;
import com.ning.billing.jaxrs.json.CustomFieldJson;
+import com.ning.billing.jaxrs.json.InvoiceJsonSimple;
import com.ning.billing.jaxrs.json.PaymentJsonSimple;
import com.ning.billing.jaxrs.json.PaymentMethodJson;
import com.ning.billing.jaxrs.json.RefundJson;
@@ -41,6 +44,7 @@ import com.ning.billing.jaxrs.resources.JaxrsResource;
import com.ning.http.client.Response;
import com.fasterxml.jackson.core.type.TypeReference;
+import com.google.common.collect.ImmutableMap;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
@@ -67,6 +71,20 @@ public class TestAccount extends TestJaxrsBase {
}
@Test(groups = "slow")
+ public void testAccountWithBalance() throws Exception {
+ final AccountJson accountJson = createAccountNoPMBundleAndSubscriptionAndWaitForFirstInvoice();
+
+ final String uri = JaxrsResource.ACCOUNTS_PATH + "/" + accountJson.getAccountId();
+ final Map<String, String> queryParams = ImmutableMap.<String, String>of(JaxrsResource.QUERY_ACCOUNT_WITH_BALANCE, "true");
+ final Response response = doGet(uri, queryParams, DEFAULT_HTTP_TIMEOUT_SEC);
+ Assert.assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
+ final String baseJson = response.getResponseBody();
+ final AccountJsonWithBalance accountWithBalance = mapper.readValue(baseJson, AccountJsonWithBalance.class);
+ final BigDecimal accountBalance = accountWithBalance.getAccountBalance();
+ Assert.assertTrue(accountBalance.compareTo(BigDecimal.ZERO) > 0);
+ }
+
+ @Test(groups = "slow")
public void testUpdateNonExistentAccount() throws Exception {
final AccountJson input = getAccountJson();
@@ -91,20 +109,6 @@ public class TestAccount extends TestJaxrsBase {
}
@Test(groups = "slow")
- public void testAccountTimeline() throws Exception {
- clock.setTime(new DateTime(2012, 4, 25, 0, 3, 42, 0));
-
- final AccountJson accountJson = createAccountWithPMBundleAndSubscriptionAndWaitForFirstInvoice();
-
- final AccountTimelineJson timeline = getAccountTimeline(accountJson.getAccountId());
- Assert.assertEquals(timeline.getPayments().size(), 1);
- Assert.assertEquals(timeline.getInvoices().size(), 2);
- Assert.assertEquals(timeline.getBundles().size(), 1);
- Assert.assertEquals(timeline.getBundles().get(0).getSubscriptions().size(), 1);
- Assert.assertEquals(timeline.getBundles().get(0).getSubscriptions().get(0).getEvents().size(), 2);
- }
-
- @Test(groups = "slow")
public void testAccountPaymentMethods() throws Exception {
final AccountJson accountJson = createAccount("qwerty", "ytrewq", "qwerty@yahoo.com");
diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestAccountTimeline.java b/server/src/test/java/com/ning/billing/jaxrs/TestAccountTimeline.java
index 189add2..27b0dab 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestAccountTimeline.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestAccountTimeline.java
@@ -43,6 +43,21 @@ public class TestAccountTimeline extends TestJaxrsBase {
private static final String TRANSITION = "Transition";
@Test(groups = "slow")
+ public void testAccountTimeline() throws Exception {
+ clock.setTime(new DateTime(2012, 4, 25, 0, 3, 42, 0));
+
+ final AccountJson accountJson = createAccountWithPMBundleAndSubscriptionAndWaitForFirstInvoice();
+
+ final AccountTimelineJson timeline = getAccountTimeline(accountJson.getAccountId());
+ Assert.assertEquals(timeline.getPayments().size(), 1);
+ Assert.assertEquals(timeline.getInvoices().size(), 2);
+ Assert.assertEquals(timeline.getBundles().size(), 1);
+ Assert.assertEquals(timeline.getBundles().get(0).getSubscriptions().size(), 1);
+ Assert.assertEquals(timeline.getBundles().get(0).getSubscriptions().get(0).getEvents().size(), 2);
+ }
+
+
+ @Test(groups = "slow")
public void testAccountTimelineWithAudits() throws Exception {
final DateTime startTime = clock.getUTCNow();
final AccountJson accountJson = createAccountWithPMBundleAndSubscriptionAndWaitForFirstInvoice();