Details
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/BlockingStateJson.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/BlockingStateJson.java
index 3d4cd25..90e83df 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/BlockingStateJson.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/BlockingStateJson.java
@@ -22,8 +22,11 @@ import java.util.UUID;
import javax.annotation.Nullable;
+import org.joda.time.DateTime;
import org.joda.time.LocalDate;
+import org.killbill.billing.entitlement.api.BlockingState;
import org.killbill.billing.entitlement.api.BlockingStateType;
+import org.killbill.billing.util.audit.AccountAuditLogs;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -38,7 +41,7 @@ public class BlockingStateJson extends JsonBase {
private final Boolean blockChange;
private final Boolean blockEntitlement;
private final Boolean blockBilling;
- private final LocalDate effectiveDate;
+ private final DateTime effectiveDate;
private final BlockingStateType type;
@JsonCreator
@@ -48,7 +51,7 @@ public class BlockingStateJson extends JsonBase {
@JsonProperty("blockChange") final Boolean blockChange,
@JsonProperty("blockEntitlement") final Boolean blockEntitlement,
@JsonProperty("blockBilling") final Boolean blockBilling,
- @JsonProperty("effectiveDate") final LocalDate effectiveDate,
+ @JsonProperty("effectiveDate") final DateTime effectiveDate,
@JsonProperty("type") final BlockingStateType type,
@JsonProperty("auditLogs") @Nullable final List<AuditLogJson> auditLogs) {
super(auditLogs);
@@ -62,6 +65,19 @@ public class BlockingStateJson extends JsonBase {
this.type = type;
}
+ public BlockingStateJson(final BlockingState input, final AccountAuditLogs accountAuditLogs) {
+ this(input.getBlockedId().toString(),
+ input.getStateName(),
+ input.getService(),
+ input.isBlockChange(),
+ input.isBlockEntitlement(),
+ input.isBlockBilling(),
+ input.getEffectiveDate(),
+ input.getType(),
+ toAuditLogJson(accountAuditLogs == null ? null : accountAuditLogs.getAuditLogsForBlockingState(input.getId())));
+ }
+
+
public String getBlockedId() {
return blockedId;
}
@@ -86,7 +102,7 @@ public class BlockingStateJson extends JsonBase {
return blockBilling;
}
- public LocalDate getEffectiveDate() {
+ public DateTime getEffectiveDate() {
return effectiveDate;
}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
index 692900c..9ccb3f7 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
@@ -51,6 +51,7 @@ import javax.ws.rs.core.UriInfo;
import org.killbill.billing.ErrorCode;
import org.killbill.billing.ObjectType;
+import org.killbill.billing.OrderingType;
import org.killbill.billing.account.api.Account;
import org.killbill.billing.account.api.AccountApiException;
import org.killbill.billing.account.api.AccountData;
@@ -58,6 +59,9 @@ import org.killbill.billing.account.api.AccountEmail;
import org.killbill.billing.account.api.AccountUserApi;
import org.killbill.billing.account.api.MutableAccountData;
import org.killbill.billing.catalog.api.Currency;
+import org.killbill.billing.entitlement.api.BlockingState;
+import org.killbill.billing.entitlement.api.BlockingStateType;
+import org.killbill.billing.entitlement.api.EntitlementApiException;
import org.killbill.billing.entitlement.api.SubscriptionApi;
import org.killbill.billing.entitlement.api.SubscriptionApiException;
import org.killbill.billing.entitlement.api.SubscriptionBundle;
@@ -70,6 +74,7 @@ import org.killbill.billing.jaxrs.JaxrsExecutors;
import org.killbill.billing.jaxrs.json.AccountEmailJson;
import org.killbill.billing.jaxrs.json.AccountJson;
import org.killbill.billing.jaxrs.json.AccountTimelineJson;
+import org.killbill.billing.jaxrs.json.BlockingStateJson;
import org.killbill.billing.jaxrs.json.BundleJson;
import org.killbill.billing.jaxrs.json.CustomFieldJson;
import org.killbill.billing.jaxrs.json.InvoiceEmailJson;
@@ -159,7 +164,7 @@ public class AccountResource extends JaxRsResourceBase {
final JaxrsExecutors jaxrsExecutors,
final JaxrsConfig jaxrsConfig,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountApi, paymentApi, subscriptionApi, clock, context);
this.subscriptionApi = subscriptionApi;
this.invoiceApi = invoiceApi;
this.invoicePaymentApi = invoicePaymentApi;
@@ -967,6 +972,57 @@ public class AccountResource extends JaxRsResourceBase {
return Response.status(Status.OK).entity(new OverdueStateJson(overdueState, paymentConfig)).build();
}
+
+ /*
+ * ************************* BLOCKING STATE *****************************
+ */
+
+ @TimedResource
+ @GET
+ @Path("/{accountId:" + UUID_PATTERN + "}/" + BLOCK)
+ @Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve blocking states for account", response = BlockingStateJson.class, responseContainer = "List")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied")})
+ public Response getBlockingStates(@PathParam(ID_PARAM_NAME) final String id,
+ @QueryParam(QUERY_BLOCKING_STATE_TYPES) final List<BlockingStateType> typeFilter,
+ @QueryParam(QUERY_BLOCKING_STATE_SVCS) final List<String> svcsFilter,
+ @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
+ @javax.ws.rs.core.Context final HttpServletRequest request) throws EntitlementApiException {
+
+ final TenantContext tenantContext = this.context.createContext(request);
+ final UUID accountId = UUID.fromString(id);
+ final Iterable<BlockingState> blockingStates = subscriptionApi.getBlockingStates(accountId, typeFilter, svcsFilter, OrderingType.ASCENDING, SubscriptionApi.ALL_EVENTS, tenantContext);
+ final AccountAuditLogs accountAuditLogs = auditUserApi.getAccountAuditLogs(accountId, auditMode.getLevel(), tenantContext);
+
+ final List<BlockingStateJson> result = ImmutableList.copyOf(Iterables.transform(blockingStates, new Function<BlockingState, BlockingStateJson>() {
+ @Override
+ public BlockingStateJson apply(final BlockingState input) {
+ return new BlockingStateJson(input, accountAuditLogs);
+ }
+ }));
+
+ return Response.status(Status.OK).entity(result).build();
+ }
+
+ @TimedResource
+ @PUT
+ @Path("/{accountId:" + UUID_PATTERN + "}/" + BLOCK)
+ @Consumes(APPLICATION_JSON)
+ @ApiOperation(value = "Block an account")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
+ public Response addAccountBlockingState(final BlockingStateJson json,
+ @PathParam(ID_PARAM_NAME) final String id,
+ @QueryParam(QUERY_REQUESTED_DT) final String requestedDate,
+ @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
+ @HeaderParam(HDR_CREATED_BY) final String createdBy,
+ @HeaderParam(HDR_REASON) final String reason,
+ @HeaderParam(HDR_COMMENT) final String comment,
+ @javax.ws.rs.core.Context final HttpServletRequest request) throws SubscriptionApiException, EntitlementApiException, AccountApiException {
+ return addBlockingState(json, id, BlockingStateType.ACCOUNT, requestedDate, pluginPropertiesString, createdBy, reason, comment, request);
+ }
+
+
/*
* ************************* CUSTOM FIELDS *****************************
*/
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AdminResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AdminResource.java
index ed98edb..dbd6cbe 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AdminResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AdminResource.java
@@ -67,7 +67,7 @@ public class AdminResource extends JaxRsResourceBase {
@Inject
public AdminResource(final JaxrsUriBuilder uriBuilder, final TagUserApi tagUserApi, final CustomFieldUserApi customFieldUserApi, final AuditUserApi auditUserApi, final AccountUserApi accountUserApi, final PaymentApi paymentApi, final AdminPaymentApi adminPaymentApi, final Clock clock, final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
this.adminPaymentApi = adminPaymentApi;
}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/BundleResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/BundleResource.java
index fb483a6..a09e5db 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/BundleResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/BundleResource.java
@@ -44,7 +44,6 @@ import org.killbill.billing.ObjectType;
import org.killbill.billing.account.api.AccountApiException;
import org.killbill.billing.account.api.AccountUserApi;
import org.killbill.billing.catalog.api.BillingActionPolicy;
-import org.killbill.billing.entitlement.api.BlockingState;
import org.killbill.billing.entitlement.api.BlockingStateType;
import org.killbill.billing.entitlement.api.EntitlementApi;
import org.killbill.billing.entitlement.api.EntitlementApiException;
@@ -57,7 +56,6 @@ import org.killbill.billing.jaxrs.json.CustomFieldJson;
import org.killbill.billing.jaxrs.json.TagJson;
import org.killbill.billing.jaxrs.util.Context;
import org.killbill.billing.jaxrs.util.JaxrsUriBuilder;
-import org.killbill.billing.junction.DefaultBlockingState;
import org.killbill.billing.payment.api.PaymentApi;
import org.killbill.billing.payment.api.PluginProperty;
import org.killbill.billing.util.api.AuditUserApi;
@@ -103,7 +101,7 @@ public class BundleResource extends JaxRsResourceBase {
final PaymentApi paymentApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, subscriptionApi, clock, context);
this.entitlementApi = entitlementApi;
this.subscriptionApi = subscriptionApi;
}
@@ -211,7 +209,7 @@ public class BundleResource extends JaxRsResourceBase {
final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
final CallContext callContext = context.createContext(createdBy, reason, comment, request);
final UUID bundleId = UUID.fromString(id);
- final LocalDate inputLocalDate = toLocalDate(requestedDate, callContext);
+ final LocalDate inputLocalDate = toLocalDate(requestedDate);
entitlementApi.pause(bundleId, inputLocalDate, pluginProperties, callContext);
return Response.status(Status.OK).build();
}
@@ -234,7 +232,7 @@ public class BundleResource extends JaxRsResourceBase {
final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
final CallContext callContext = context.createContext(createdBy, reason, comment, request);
final UUID bundleId = UUID.fromString(id);
- final LocalDate inputLocalDate = toLocalDate(requestedDate, callContext);
+ final LocalDate inputLocalDate = toLocalDate(requestedDate);
entitlementApi.resume(bundleId, inputLocalDate, pluginProperties, callContext);
return Response.status(Status.OK).build();
}
@@ -254,20 +252,7 @@ public class BundleResource extends JaxRsResourceBase {
@HeaderParam(HDR_REASON) final String reason,
@HeaderParam(HDR_COMMENT) final String comment,
@javax.ws.rs.core.Context final HttpServletRequest request) throws SubscriptionApiException, EntitlementApiException, AccountApiException {
-
- final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
- final CallContext callContext = context.createContext(createdBy, reason, comment, request);
- final UUID bundleId = UUID.fromString(id);
-
- final boolean isBlockBilling = (json.isBlockBilling() != null && json.isBlockBilling());
- final boolean isBlockEntitlement = (json.isBlockEntitlement() != null && json.isBlockEntitlement());
- final boolean isBlockChange = (json.isBlockChange() != null && json.isBlockChange());
-
- final LocalDate resolvedRequestedDate = requestedDate != null ? toLocalDate(requestedDate, callContext) : toLocalDate(requestedDate, callContext);
-
- final BlockingState input = new DefaultBlockingState(bundleId, BlockingStateType.SUBSCRIPTION_BUNDLE, json.getStateName(), json.getService(), isBlockChange, isBlockEntitlement, isBlockBilling, null);
- subscriptionApi.addBlockingState(input, resolvedRequestedDate, pluginProperties, callContext);
- return Response.status(Status.OK).build();
+ return addBlockingState(json, id, BlockingStateType.SUBSCRIPTION_BUNDLE, requestedDate, pluginPropertiesString, createdBy, reason, comment, request);
}
@@ -364,7 +349,7 @@ public class BundleResource extends JaxRsResourceBase {
final UUID bundleId = UUID.fromString(id);
final SubscriptionBundle bundle = subscriptionApi.getSubscriptionBundle(bundleId, callContext);
- final LocalDate inputLocalDate = toLocalDate(requestedDate, callContext);
+ final LocalDate inputLocalDate = toLocalDate(requestedDate);
final UUID newBundleId = entitlementApi.transferEntitlementsOverrideBillingPolicy(bundle.getAccountId(), UUID.fromString(json.getAccountId()), bundle.getExternalKey(), inputLocalDate, policy, pluginProperties, callContext);
return uriBuilder.buildResponse(BundleResource.class, "getBundle", newBundleId, uriInfo.getBaseUri().toString());
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java
index 35db125..04f7f8b 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java
@@ -89,7 +89,7 @@ public class CatalogResource extends JaxRsResourceBase {
final CatalogUserApi catalogUserApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
this.catalogUserApi = catalogUserApi;
}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/ComboPaymentResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/ComboPaymentResource.java
index e308641..6c87b6c 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/ComboPaymentResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/ComboPaymentResource.java
@@ -59,7 +59,7 @@ public abstract class ComboPaymentResource extends JaxRsResourceBase {
final PaymentApi paymentApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
}
protected Account getOrCreateAccount(final AccountJson accountJson, final CallContext callContext) throws AccountApiException {
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CreditResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CreditResource.java
index 2d46215..c1af109 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CreditResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CreditResource.java
@@ -76,7 +76,7 @@ public class CreditResource extends JaxRsResourceBase {
final PaymentApi paymentApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
this.invoiceUserApi = invoiceUserApi;
this.accountUserApi = accountUserApi;
}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CustomFieldResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CustomFieldResource.java
index 488850c..d2b5c80 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CustomFieldResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CustomFieldResource.java
@@ -69,7 +69,7 @@ public class CustomFieldResource extends JaxRsResourceBase {
final PaymentApi paymentApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
}
@TimedResource
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/ExportResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/ExportResource.java
index 64d7145..7b7527f 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/ExportResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/ExportResource.java
@@ -67,7 +67,7 @@ public class ExportResource extends JaxRsResourceBase {
final PaymentApi paymentApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
this.exportUserApi = exportUserApi;
}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoicePaymentResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoicePaymentResource.java
index 9ee85d0..f44ca2b 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoicePaymentResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoicePaymentResource.java
@@ -98,7 +98,7 @@ public class InvoicePaymentResource extends JaxRsResourceBase {
final InvoicePaymentApi invoicePaymentApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
this.invoicePaymentApi = invoicePaymentApi;
}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
index 6548f1a..3226cd4 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
@@ -157,7 +157,7 @@ public class InvoiceResource extends JaxRsResourceBase {
final AuditUserApi auditUserApi,
final TenantUserApi tenantApi,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
this.invoiceApi = invoiceApi;
this.invoiceNotifier = invoiceNotifier;
this.tenantApi = tenantApi;
@@ -299,7 +299,7 @@ public class InvoiceResource extends JaxRsResourceBase {
@javax.ws.rs.core.Context final HttpServletRequest request,
@javax.ws.rs.core.Context final UriInfo uriInfo) throws AccountApiException, InvoiceApiException {
final CallContext callContext = context.createContext(createdBy, reason, comment, request);
- final LocalDate inputDate = toLocalDate(targetDate, callContext);
+ final LocalDate inputDate = toLocalDate(targetDate);
try {
final Invoice generatedInvoice = invoiceApi.triggerInvoiceGeneration(UUID.fromString(accountId), inputDate, null,
@@ -361,10 +361,10 @@ public class InvoiceResource extends JaxRsResourceBase {
} else if (DryRunType.SUBSCRIPTION_ACTION.name().equals(dryRunSubscriptionSpec.getDryRunType()) && dryRunSubscriptionSpec.getEffectiveDate() != null) {
inputDate = dryRunSubscriptionSpec.getEffectiveDate();
} else {
- inputDate = toLocalDate(targetDate, callContext);
+ inputDate = toLocalDate(targetDate);
}
} else {
- inputDate = toLocalDate(targetDate, callContext);
+ inputDate = toLocalDate(targetDate);
}
// Passing a null or empty body means we are trying to generate an invoice with a (future) targetDate
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
index 0b1bac1..e07b770 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
@@ -85,6 +85,10 @@ public interface JaxrsResource {
public static final String QUERY_ACCOUNT_ID = "accountId";
+ public static final String QUERY_BLOCKING_STATE_TYPES = "blockingStateTypes";
+ public static final String QUERY_BLOCKING_STATE_SVCS = "blockingStateSvcs";
+
+
public static final String QUERY_INVOICE_WITH_ITEMS = "withItems";
public static final String QUERY_WITH_MIGRATION_INVOICES = "withMigrationInvoices";
public static final String QUERY_UNPAID_INVOICES_ONLY = "unpaidInvoicesOnly";
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
index 82cc906..0a5c9d2 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
@@ -30,10 +30,10 @@ import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.UUID;
import javax.annotation.Nullable;
+import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
@@ -49,14 +49,21 @@ import org.killbill.billing.ObjectType;
import org.killbill.billing.account.api.Account;
import org.killbill.billing.account.api.AccountApiException;
import org.killbill.billing.account.api.AccountUserApi;
+import org.killbill.billing.entitlement.api.BlockingState;
+import org.killbill.billing.entitlement.api.BlockingStateType;
+import org.killbill.billing.entitlement.api.EntitlementApiException;
+import org.killbill.billing.entitlement.api.SubscriptionApi;
+import org.killbill.billing.entitlement.api.SubscriptionApiException;
import org.killbill.billing.invoice.api.InvoicePayment;
import org.killbill.billing.invoice.api.InvoicePaymentType;
+import org.killbill.billing.jaxrs.json.BlockingStateJson;
import org.killbill.billing.jaxrs.json.CustomFieldJson;
import org.killbill.billing.jaxrs.json.JsonBase;
import org.killbill.billing.jaxrs.json.PluginPropertyJson;
import org.killbill.billing.jaxrs.json.TagJson;
import org.killbill.billing.jaxrs.util.Context;
import org.killbill.billing.jaxrs.util.JaxrsUriBuilder;
+import org.killbill.billing.junction.DefaultBlockingState;
import org.killbill.billing.payment.api.Payment;
import org.killbill.billing.payment.api.PaymentApi;
import org.killbill.billing.payment.api.PaymentApiException;
@@ -110,6 +117,7 @@ public abstract class JaxRsResourceBase implements JaxrsResource {
protected final AuditUserApi auditUserApi;
protected final AccountUserApi accountUserApi;
protected final PaymentApi paymentApi;
+ protected final SubscriptionApi subscriptionApi;
protected final Context context;
protected final Clock clock;
@@ -122,6 +130,7 @@ public abstract class JaxRsResourceBase implements JaxrsResource {
final AuditUserApi auditUserApi,
final AccountUserApi accountUserApi,
final PaymentApi paymentApi,
+ final SubscriptionApi subscriptionApi,
final Clock clock,
final Context context) {
this.uriBuilder = uriBuilder;
@@ -130,6 +139,7 @@ public abstract class JaxRsResourceBase implements JaxrsResource {
this.auditUserApi = auditUserApi;
this.accountUserApi = accountUserApi;
this.paymentApi = paymentApi;
+ this.subscriptionApi = subscriptionApi;
this.clock = clock;
this.context = context;
}
@@ -138,6 +148,33 @@ public abstract class JaxRsResourceBase implements JaxrsResource {
return null;
}
+ public Response addBlockingState(final BlockingStateJson json,
+ final String id,
+ final BlockingStateType type,
+ final String requestedDate,
+ final List<String> pluginPropertiesString,
+ final String createdBy,
+ final String reason,
+ final String comment,
+ final HttpServletRequest request) throws SubscriptionApiException, EntitlementApiException, AccountApiException {
+
+ final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
+ final CallContext callContext = context.createContext(createdBy, reason, comment, request);
+ final UUID blockableId = UUID.fromString(id);
+
+ final boolean isBlockBilling = (json.isBlockBilling() != null && json.isBlockBilling());
+ final boolean isBlockEntitlement = (json.isBlockEntitlement() != null && json.isBlockEntitlement());
+ final boolean isBlockChange = (json.isBlockChange() != null && json.isBlockChange());
+
+ final LocalDate resolvedRequestedDate = toLocalDate(requestedDate);
+ final BlockingState input = new DefaultBlockingState(blockableId, type, json.getStateName(), json.getService(), isBlockChange, isBlockEntitlement, isBlockBilling, null);
+ subscriptionApi.addBlockingState(input, resolvedRequestedDate, pluginProperties, callContext);
+ return Response.status(Status.OK).build();
+ }
+
+
+
+
protected Response getTags(final UUID accountId, final UUID taggedObjectId, final AuditMode auditMode, final boolean includeDeleted, final TenantContext context) throws TagDefinitionApiException {
final List<Tag> tags = tagUserApi.getTagsForObject(taggedObjectId, getObjectType(), includeDeleted, context);
return createTagResponse(accountId, tags, auditMode, context);
@@ -305,11 +342,11 @@ public abstract class JaxRsResourceBase implements JaxrsResource {
protected LocalDate toLocalDateDefaultToday(final Account account, @Nullable final String inputDate, final TenantContext context) {
// TODO Switch to cached normalized timezone when available
- return MoreObjects.firstNonNull(toLocalDate(inputDate, context), clock.getToday(account.getTimeZone()));
+ return MoreObjects.firstNonNull(toLocalDate(inputDate), clock.getToday(account.getTimeZone()));
}
// API for subscription and invoice generation: keep null, the lower layers will default to now()
- protected LocalDate toLocalDate(@Nullable final String inputDate, final TenantContext context) {
+ protected LocalDate toLocalDate(@Nullable final String inputDate) {
return inputDate == null ? null : LocalDate.parse(inputDate, LOCAL_DATE_FORMATTER);
}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/NodesInfoResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/NodesInfoResource.java
index a699485..5376992 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/NodesInfoResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/NodesInfoResource.java
@@ -87,7 +87,7 @@ public class NodesInfoResource extends JaxRsResourceBase {
final KillbillNodesApi killbillInfoApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
this.killbillInfoApi = killbillInfoApi;
}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/OverdueResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/OverdueResource.java
index bfe8b11..e71dd16 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/OverdueResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/OverdueResource.java
@@ -73,7 +73,7 @@ public class OverdueResource extends JaxRsResourceBase {
final OverdueApi overdueApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
this.overdueApi = overdueApi;
}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentMethodResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentMethodResource.java
index 07fdd5e..cd481c6 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentMethodResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentMethodResource.java
@@ -89,7 +89,7 @@ public class PaymentMethodResource extends JaxRsResourceBase {
final PaymentApi paymentApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
}
@TimedResource(name = "getPaymentMethod")
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PluginInfoResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PluginInfoResource.java
index 8c6ce93..1a3f669 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PluginInfoResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PluginInfoResource.java
@@ -63,7 +63,7 @@ public class PluginInfoResource extends JaxRsResourceBase {
final PluginsInfoApi pluginsInfoApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
this.pluginsInfoApi = pluginsInfoApi;
}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PluginResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PluginResource.java
index 6be2cdb..593dd18 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PluginResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PluginResource.java
@@ -93,7 +93,7 @@ public class PluginResource extends JaxRsResourceBase {
final PaymentApi paymentApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
this.osgiServlet = osgiServlet;
}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SecurityResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SecurityResource.java
index ac8a283..234af38 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SecurityResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SecurityResource.java
@@ -80,7 +80,7 @@ public class SecurityResource extends JaxRsResourceBase {
final PaymentApi paymentApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
this.securityApi = securityApi;
}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SubscriptionResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SubscriptionResource.java
index d5662dd..4672815 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SubscriptionResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SubscriptionResource.java
@@ -52,6 +52,7 @@ import org.killbill.billing.catalog.api.PlanPhasePriceOverride;
import org.killbill.billing.catalog.api.PlanPhaseSpecifier;
import org.killbill.billing.catalog.api.PlanSpecifier;
import org.killbill.billing.catalog.api.ProductCategory;
+import org.killbill.billing.entitlement.api.BlockingStateType;
import org.killbill.billing.entitlement.api.Entitlement;
import org.killbill.billing.entitlement.api.Entitlement.EntitlementActionPolicy;
import org.killbill.billing.entitlement.api.EntitlementApi;
@@ -68,6 +69,7 @@ import org.killbill.billing.events.NullInvoiceInternalEvent;
import org.killbill.billing.events.PaymentErrorInternalEvent;
import org.killbill.billing.events.PaymentInfoInternalEvent;
import org.killbill.billing.events.PaymentPluginErrorInternalEvent;
+import org.killbill.billing.jaxrs.json.BlockingStateJson;
import org.killbill.billing.jaxrs.json.CustomFieldJson;
import org.killbill.billing.jaxrs.json.PhasePriceOverrideJson;
import org.killbill.billing.jaxrs.json.SubscriptionJson;
@@ -125,7 +127,7 @@ public class SubscriptionResource extends JaxRsResourceBase {
final PaymentApi paymentApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, subscriptionApi, clock, context);
this.killbillHandler = killbillHandler;
this.entitlementApi = entitlementApi;
this.subscriptionApi = subscriptionApi;
@@ -193,8 +195,8 @@ public class SubscriptionResource extends JaxRsResourceBase {
ProductCategory.valueOf(entitlement.getProductCategory()),
BillingPeriod.valueOf(entitlement.getBillingPeriod()), entitlement.getPriceList(), phaseType);
- final LocalDate resolvedEntitlementDate = requestedDate != null ? toLocalDate(requestedDate, callContext) : toLocalDate(entitlementDate, callContext);
- final LocalDate resolvedBillingDate = requestedDate != null ? toLocalDate(requestedDate, callContext) : toLocalDate(billingDate, callContext);
+ final LocalDate resolvedEntitlementDate = requestedDate != null ? toLocalDate(requestedDate) : toLocalDate(entitlementDate);
+ final LocalDate resolvedBillingDate = requestedDate != null ? toLocalDate(requestedDate) : toLocalDate(billingDate);
final PlanSpecifier planSpec = new PlanSpecifier(entitlement.getProductName(),
ProductCategory.valueOf(entitlement.getProductCategory()),
BillingPeriod.valueOf(entitlement.getBillingPeriod()), entitlement.getPriceList());
@@ -326,8 +328,8 @@ public class SubscriptionResource extends JaxRsResourceBase {
entitlementSpecifierList.add(specifier);
}
- final LocalDate resolvedEntitlementDate = requestedDate != null ? toLocalDate(requestedDate, callContext) : toLocalDate(entitlementDate, callContext);
- final LocalDate resolvedBillingDate = requestedDate != null ? toLocalDate(requestedDate, callContext) : toLocalDate(billingDate, callContext);
+ final LocalDate resolvedEntitlementDate = requestedDate != null ? toLocalDate(requestedDate) : toLocalDate(entitlementDate);
+ final LocalDate resolvedBillingDate = requestedDate != null ? toLocalDate(requestedDate) : toLocalDate(billingDate);
return entitlementApi.createBaseEntitlementWithAddOns(account.getId(), baseEntitlement.getExternalKey(), entitlementSpecifierList,
resolvedEntitlementDate, resolvedBillingDate, isMigrated, pluginProperties, callContext);
}
@@ -405,7 +407,7 @@ public class SubscriptionResource extends JaxRsResourceBase {
final UUID uuid = UUID.fromString(subscriptionId);
final Entitlement current = entitlementApi.getEntitlementForId(uuid, callContext);
- final LocalDate inputLocalDate = toLocalDate(requestedDate, callContext);
+ final LocalDate inputLocalDate = toLocalDate(requestedDate);
final Entitlement newEntitlement;
final Account account = accountUserApi.getAccountById(current.getAccountId(), callContext);
@@ -446,6 +448,28 @@ public class SubscriptionResource extends JaxRsResourceBase {
return callCompletionCreation.withSynchronization(callback, timeoutSec, callCompletion, callContext);
}
+
+ @TimedResource
+ @PUT
+ @Path("/{subscriptionId:" + UUID_PATTERN + "}/" + BLOCK)
+ @Consumes(APPLICATION_JSON)
+ @ApiOperation(value = "Block a subscription")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid subscription id supplied"),
+ @ApiResponse(code = 404, message = "Subscription not found")})
+ public Response addSubscriptionBlockingState(final BlockingStateJson json,
+ @PathParam(ID_PARAM_NAME) final String id,
+ @QueryParam(QUERY_REQUESTED_DT) final String requestedDate,
+ @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
+ @HeaderParam(HDR_CREATED_BY) final String createdBy,
+ @HeaderParam(HDR_REASON) final String reason,
+ @HeaderParam(HDR_COMMENT) final String comment,
+ @javax.ws.rs.core.Context final HttpServletRequest request) throws SubscriptionApiException, EntitlementApiException, AccountApiException {
+
+ return addBlockingState(json, id, BlockingStateType.SUBSCRIPTION, requestedDate, pluginPropertiesString, createdBy, reason, comment, request);
+ }
+
+
+
@TimedResource
@DELETE
@Path("/{subscriptionId:" + UUID_PATTERN + "}")
@@ -480,7 +504,7 @@ public class SubscriptionResource extends JaxRsResourceBase {
final UUID uuid = UUID.fromString(subscriptionId);
final Entitlement current = entitlementApi.getEntitlementForId(uuid, ctx);
- final LocalDate inputLocalDate = toLocalDate(requestedDate, callContext);
+ final LocalDate inputLocalDate = toLocalDate(requestedDate);
final Entitlement newEntitlement;
if (billingPolicyString == null && entitlementPolicyString == null) {
newEntitlement = current.cancelEntitlementWithDate(inputLocalDate, useRequestedDateForBilling, pluginProperties, ctx);
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TagDefinitionResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TagDefinitionResource.java
index f5536f2..b4511a1 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TagDefinitionResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TagDefinitionResource.java
@@ -75,7 +75,7 @@ public class TagDefinitionResource extends JaxRsResourceBase {
final PaymentApi paymentApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
}
@TimedResource
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TagResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TagResource.java
index 305aa45..5a5bb6a 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TagResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TagResource.java
@@ -73,7 +73,7 @@ public class TagResource extends JaxRsResourceBase {
final PaymentApi paymentApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
}
@TimedResource
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TenantResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TenantResource.java
index edc51c0..ff55211 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TenantResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TenantResource.java
@@ -81,7 +81,7 @@ public class TenantResource extends JaxRsResourceBase {
final PaymentApi paymentApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
this.tenantApi = tenantApi;
}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TestResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TestResource.java
index ed9e462..a90bae3 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TestResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TestResource.java
@@ -96,7 +96,7 @@ public class TestResource extends JaxRsResourceBase {
final AuditUserApi auditUserApi, final AccountUserApi accountUserApi, final RecordIdApi recordIdApi,
final PersistentBus persistentBus, final NotificationQueueService notificationQueueService, final PaymentApi paymentApi,
final Clock clock, final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
this.persistentBus = persistentBus;
this.notificationQueueService = notificationQueueService;
this.recordIdApi = recordIdApi;
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TransactionResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TransactionResource.java
index 322731d..60566af 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TransactionResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TransactionResource.java
@@ -70,7 +70,7 @@ public class TransactionResource extends JaxRsResourceBase {
final PaymentApi paymentApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
}
@TimedResource
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/UsageResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/UsageResource.java
index b55db89..6265979 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/UsageResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/UsageResource.java
@@ -85,7 +85,7 @@ public class UsageResource extends JaxRsResourceBase {
final EntitlementApi entitlementApi,
final Clock clock,
final Context context) {
- super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
this.usageUserApi = usageUserApi;
this.entitlementApi = entitlementApi;
}
diff --git a/jaxrs/src/test/java/org/killbill/billing/jaxrs/resources/TestJaxRsResourceBase.java b/jaxrs/src/test/java/org/killbill/billing/jaxrs/resources/TestJaxRsResourceBase.java
index ecf1d44..85195c0 100644
--- a/jaxrs/src/test/java/org/killbill/billing/jaxrs/resources/TestJaxRsResourceBase.java
+++ b/jaxrs/src/test/java/org/killbill/billing/jaxrs/resources/TestJaxRsResourceBase.java
@@ -64,7 +64,7 @@ public class TestJaxRsResourceBase extends JaxrsTestSuiteNoDB {
private static final class JaxRsResourceBaseTest extends JaxRsResourceBase {
public JaxRsResourceBaseTest() {
- super(null, null, null, null, null, null, null, null);
+ super(null, null, null, null, null, null, null, null, null);
}
}
}
diff --git a/jaxrs/src/test/java/org/killbill/billing/jaxrs/TestDateConversion.java b/jaxrs/src/test/java/org/killbill/billing/jaxrs/TestDateConversion.java
index a754a75..f70b3e4 100644
--- a/jaxrs/src/test/java/org/killbill/billing/jaxrs/TestDateConversion.java
+++ b/jaxrs/src/test/java/org/killbill/billing/jaxrs/TestDateConversion.java
@@ -38,7 +38,7 @@ import org.killbill.billing.util.UUIDs;
public class TestDateConversion extends JaxRsResourceBase {
public TestDateConversion() throws AccountApiException {
- super(null, null, null, null, Mockito.mock(AccountUserApi.class), null, new ClockMock(), null);
+ super(null, null, null, null, Mockito.mock(AccountUserApi.class), null, null, new ClockMock(), null);
}
public UUID setupAccount(DateTimeZone accountTimeZone) throws AccountApiException {
@@ -62,7 +62,7 @@ public class TestDateConversion extends JaxRsResourceBase {
public void testNullConversion() throws AccountApiException {
final String input = null;
- final LocalDate result = toLocalDate(input, null);
+ final LocalDate result = toLocalDate(input);
Assert.assertNull(result);
final UUID accountId = setupAccount(DateTimeZone.forOffsetHours(-8));
@@ -76,7 +76,7 @@ public class TestDateConversion extends JaxRsResourceBase {
public void testLocalDateConversion() throws AccountApiException {
final UUID accountId = setupAccount(DateTimeZone.forOffsetHours(-8));
final String input = "2013-08-25";
- final LocalDate result = toLocalDate(input, null);
+ final LocalDate result = toLocalDate(input);
Assert.assertTrue(result.compareTo(new LocalDate(2013, 8, 25)) == 0);
}
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestBundle.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestBundle.java
index fbc8a31..7a1f6af 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestBundle.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestBundle.java
@@ -25,17 +25,22 @@ import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.killbill.billing.catalog.api.BillingPeriod;
import org.killbill.billing.catalog.api.ProductCategory;
-import org.killbill.billing.client.KillBillClientException;
import org.killbill.billing.client.model.Account;
import org.killbill.billing.client.model.BlockingState;
+import org.killbill.billing.client.model.BlockingStates;
import org.killbill.billing.client.model.Bundle;
import org.killbill.billing.client.model.Bundles;
+import org.killbill.billing.client.model.PluginProperty;
import org.killbill.billing.client.model.Subscription;
import org.killbill.billing.entitlement.api.BlockingStateType;
import org.killbill.billing.entitlement.api.Entitlement.EntitlementState;
+import org.killbill.billing.util.api.AuditLevel;
import org.testng.Assert;
import org.testng.annotations.Test;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotEquals;
@@ -134,19 +139,30 @@ public class TestBundle extends TestJaxrsBase {
assertEquals(bundle.getAccountId(), accountJson.getAccountId());
assertEquals(bundle.getExternalKey(), bundleExternalKey);
- final BlockingState blockingState = new BlockingState(bundle.getBundleId(), "block", "service", false, true, true, clock.getToday(DateTimeZone.forID(accountJson.getTimeZone())), BlockingStateType.SUBSCRIPTION_BUNDLE, null);
- killBillClient.setBlockingState(bundle.getBundleId(), blockingState, createdBy, reason, comment);
+ final BlockingState blockingState = new BlockingState(bundle.getBundleId(), "block", "service", false, true, true, null, BlockingStateType.SUBSCRIPTION_BUNDLE, null);
+ killBillClient.setBlockingState(bundle.getBundleId(), blockingState, clock.getToday(DateTimeZone.forID(accountJson.getTimeZone())), ImmutableMap.<String, String>of(), createdBy, reason, comment);
final Subscription subscription = killBillClient.getSubscription(entitlement.getSubscriptionId());
assertEquals(subscription.getState(), EntitlementState.BLOCKED);
clock.addDays(1);
- final BlockingState unblockingState = new BlockingState(bundle.getBundleId(), "unblock", "service", false, false, false, clock.getToday(DateTimeZone.forID(accountJson.getTimeZone())), BlockingStateType.SUBSCRIPTION_BUNDLE, null);
- killBillClient.setBlockingState(bundle.getBundleId(), unblockingState, createdBy, reason, comment);
+ final BlockingState unblockingState = new BlockingState(bundle.getBundleId(), "unblock", "service", false, false, false, null, BlockingStateType.SUBSCRIPTION_BUNDLE, null);
+ killBillClient.setBlockingState(bundle.getBundleId(), unblockingState, clock.getToday(DateTimeZone.forID(accountJson.getTimeZone())), ImmutableMap.<String, String>of(), createdBy, reason, comment);
final Subscription subscription2 = killBillClient.getSubscription(entitlement.getSubscriptionId());
assertEquals(subscription2.getState(), EntitlementState.ACTIVE);
+
+ final BlockingStates blockingStates = killBillClient.getBlockingStates(accountJson.getAccountId(), null, ImmutableList.<String>of("service"), AuditLevel.FULL);
+ Assert.assertEquals(blockingStates.size(), 2);
+
+
+ final BlockingStates blockingStates2 = killBillClient.getBlockingStates(accountJson.getAccountId(), ImmutableList.<BlockingStateType>of(BlockingStateType.SUBSCRIPTION_BUNDLE), null, AuditLevel.FULL);
+ Assert.assertEquals(blockingStates2.size(), 2);
+
+
+ final BlockingStates blockingStates3 = killBillClient.getBlockingStates(accountJson.getAccountId(), null, null, AuditLevel.FULL);
+ Assert.assertEquals(blockingStates3.size(), 3);
}