diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/EntitlementUserApiExceptionMapper.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/EntitlementUserApiExceptionMapper.java
index e6879ce..f40d505 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/EntitlementUserApiExceptionMapper.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/EntitlementUserApiExceptionMapper.java
@@ -16,17 +16,102 @@
package com.ning.billing.jaxrs.mappers;
+import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
+import com.ning.billing.ErrorCode;
import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
@Provider
public class EntitlementUserApiExceptionMapper extends ExceptionMapperBase implements ExceptionMapper<EntitlementUserApiException> {
+ private final UriInfo uriInfo;
+
+ public EntitlementUserApiExceptionMapper(@Context final UriInfo uriInfo) {
+ this.uriInfo = uriInfo;
+ }
+
@Override
public Response toResponse(final EntitlementUserApiException exception) {
- return null;
+ if (exception.getCode() == ErrorCode.ENT_ACCOUNT_IS_OVERDUE_BLOCKED.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_BUNDLE_IS_OVERDUE_BLOCKED.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_CANCEL_BAD_STATE.getCode()) {
+ return buildInternalErrorResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_CHANGE_DRY_RUN_NOT_BP.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_CHANGE_FUTURE_CANCELLED.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_CHANGE_NON_ACTIVE.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_CREATE_AO_ALREADY_INCLUDED.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_CREATE_AO_BP_NON_ACTIVE.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_CREATE_AO_NOT_AVAILABLE.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_CREATE_BAD_PHASE.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_CREATE_BP_EXISTS.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_CREATE_NO_BP.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_CREATE_NO_BUNDLE.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_GET_INVALID_BUNDLE_ID.getCode()) {
+ return buildNotFoundResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_GET_INVALID_BUNDLE_KEY.getCode()) {
+ return buildNotFoundResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_GET_NO_BUNDLE_FOR_SUBSCRIPTION.getCode()) {
+ return buildNotFoundResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_GET_NO_SUCH_BASE_SUBSCRIPTION.getCode()) {
+ return buildNotFoundResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_INVALID_REQUESTED_DATE.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_INVALID_REQUESTED_FUTURE_DATE.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_INVALID_SUBSCRIPTION_ID.getCode()) {
+ return buildNotFoundResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_RECREATE_BAD_STATE.getCode()) {
+ return buildInternalErrorResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_REPAIR_AO_CREATE_BEFORE_BP_START.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_REPAIR_BP_RECREATE_MISSING_AO.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_REPAIR_BP_RECREATE_MISSING_AO_CREATE.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_REPAIR_INVALID_DELETE_SET.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_REPAIR_MISSING_AO_DELETE_EVENT.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_REPAIR_NEW_EVENT_BEFORE_LAST_AO_REMAINING.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_REPAIR_NEW_EVENT_BEFORE_LAST_BP_REMAINING.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_REPAIR_NO_ACTIVE_SUBSCRIPTIONS.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_REPAIR_NON_EXISTENT_DELETE_EVENT.getCode()) {
+ return buildNotFoundResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_REPAIR_SUB_EMPTY.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_REPAIR_SUB_RECREATE_NOT_EMPTY.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_REPAIR_UNKNOWN_BUNDLE.getCode()) {
+ return buildNotFoundResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_REPAIR_UNKNOWN_SUBSCRIPTION.getCode()) {
+ return buildNotFoundResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_REPAIR_UNKNOWN_TYPE.getCode()) {
+ return buildNotFoundResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_REPAIR_VIEW_CHANGED.getCode()) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ENT_UNCANCEL_BAD_STATE.getCode()) {
+ return buildInternalErrorResponse(exception, uriInfo);
+ } else {
+ return buildBadRequestResponse(exception, uriInfo);
+ }
}
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/BundleResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/BundleResource.java
index 3538696..c12e09f 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/BundleResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/BundleResource.java
@@ -16,6 +16,10 @@
package com.ning.billing.jaxrs.resources;
+import java.util.Collection;
+import java.util.List;
+import java.util.UUID;
+
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
@@ -26,19 +30,9 @@ import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
import javax.ws.rs.core.Response.Status;
-import java.util.Collection;
-import java.util.List;
-import java.util.UUID;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import javax.ws.rs.core.UriInfo;
-import com.google.common.base.Function;
-import com.google.common.collect.Collections2;
-import com.google.inject.Inject;
-import com.ning.billing.ErrorCode;
import com.ning.billing.entitlement.api.user.EntitlementUserApi;
import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
import com.ning.billing.entitlement.api.user.Subscription;
@@ -52,12 +46,15 @@ import com.ning.billing.util.api.CustomFieldUserApi;
import com.ning.billing.util.api.TagUserApi;
import com.ning.billing.util.dao.ObjectType;
+import com.google.common.base.Function;
+import com.google.common.collect.Collections2;
+import com.google.inject.Inject;
+
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
@Path(JaxrsResource.BUNDLES_PATH)
public class BundleResource extends JaxRsResourceBase {
- private static final Logger log = LoggerFactory.getLogger(BundleResource.class);
private static final String ID_PARAM_NAME = "bundleId";
private static final String CUSTOM_FIELD_URI = JaxrsResource.CUSTOM_FIELDS;
private static final String TAG_URI = JaxrsResource.TAGS;
@@ -67,8 +64,10 @@ public class BundleResource extends JaxRsResourceBase {
private final JaxrsUriBuilder uriBuilder;
@Inject
- public BundleResource(final JaxrsUriBuilder uriBuilder, final EntitlementUserApi entitlementApi,
- final TagUserApi tagUserApi, final CustomFieldUserApi customFieldUserApi,
+ public BundleResource(final JaxrsUriBuilder uriBuilder,
+ final EntitlementUserApi entitlementApi,
+ final TagUserApi tagUserApi,
+ final CustomFieldUserApi customFieldUserApi,
final Context context) {
super(uriBuilder, tagUserApi, customFieldUserApi);
this.uriBuilder = uriBuilder;
@@ -80,35 +79,17 @@ public class BundleResource extends JaxRsResourceBase {
@Path("/{bundleId:" + UUID_PATTERN + "}")
@Produces(APPLICATION_JSON)
public Response getBundle(@PathParam("bundleId") final String bundleId) throws EntitlementUserApiException {
- try {
- final SubscriptionBundle bundle = entitlementApi.getBundleFromId(UUID.fromString(bundleId));
- final BundleJsonNoSubscriptions json = new BundleJsonNoSubscriptions(bundle);
- return Response.status(Status.OK).entity(json).build();
- } catch (EntitlementUserApiException e) {
- if (e.getCode() == ErrorCode.ENT_GET_INVALID_BUNDLE_ID.getCode()) {
- return Response.status(Status.NO_CONTENT).build();
- } else {
- throw e;
- }
-
- }
+ final SubscriptionBundle bundle = entitlementApi.getBundleFromId(UUID.fromString(bundleId));
+ final BundleJsonNoSubscriptions json = new BundleJsonNoSubscriptions(bundle);
+ return Response.status(Status.OK).entity(json).build();
}
@GET
@Produces(APPLICATION_JSON)
public Response getBundleByKey(@QueryParam(QUERY_EXTERNAL_KEY) final String externalKey) throws EntitlementUserApiException {
- try {
- final SubscriptionBundle bundle = entitlementApi.getBundleForKey(externalKey);
- final BundleJsonNoSubscriptions json = new BundleJsonNoSubscriptions(bundle);
- return Response.status(Status.OK).entity(json).build();
- } catch (EntitlementUserApiException e) {
- if (e.getCode() == ErrorCode.ENT_GET_INVALID_BUNDLE_KEY.getCode()) {
- return Response.status(Status.NO_CONTENT).build();
- } else {
- throw e;
- }
-
- }
+ final SubscriptionBundle bundle = entitlementApi.getBundleForKey(externalKey);
+ final BundleJsonNoSubscriptions json = new BundleJsonNoSubscriptions(bundle);
+ return Response.status(Status.OK).entity(json).build();
}
@POST
@@ -117,46 +98,30 @@ public class BundleResource extends JaxRsResourceBase {
public Response createBundle(final BundleJsonNoSubscriptions json,
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@HeaderParam(HDR_REASON) final String reason,
- @HeaderParam(HDR_COMMENT) final String comment) {
- try {
- final UUID accountId = UUID.fromString(json.getAccountId());
- final SubscriptionBundle bundle = entitlementApi.createBundleForAccount(accountId, json.getExternalKey(),
- context.createContext(createdBy, reason, comment));
- return uriBuilder.buildResponse(BundleResource.class, "getBundle", bundle.getId());
- } catch (EntitlementUserApiException e) {
- log.info(String.format("Failed to create bundle %s", json), e);
- return Response.status(Status.BAD_REQUEST).build();
- } catch (IllegalArgumentException e) {
- return Response.status(Status.BAD_REQUEST).entity(e.getMessage()).build();
- }
+ @HeaderParam(HDR_COMMENT) final String comment) throws EntitlementUserApiException {
+ final UUID accountId = UUID.fromString(json.getAccountId());
+ final SubscriptionBundle bundle = entitlementApi.createBundleForAccount(accountId, json.getExternalKey(),
+ context.createContext(createdBy, reason, comment));
+ return uriBuilder.buildResponse(BundleResource.class, "getBundle", bundle.getId());
}
@GET
@Path("/{bundleId:" + UUID_PATTERN + "}/" + SUBSCRIPTIONS)
@Produces(APPLICATION_JSON)
public Response getBundleSubscriptions(@PathParam("bundleId") final String bundleId) throws EntitlementUserApiException {
- try {
- final UUID uuid = UUID.fromString(bundleId);
- final SubscriptionBundle bundle = entitlementApi.getBundleFromId(uuid);
- if (bundle == null) {
- return Response.status(Status.NO_CONTENT).build();
- }
- final List<Subscription> bundles = entitlementApi.getSubscriptionsForBundle(uuid);
- final Collection<SubscriptionJsonNoEvents> result = Collections2.transform(bundles, new Function<Subscription, SubscriptionJsonNoEvents>() {
- @Override
- public SubscriptionJsonNoEvents apply(final Subscription input) {
- return new SubscriptionJsonNoEvents(input);
- }
- });
- return Response.status(Status.OK).entity(result).build();
- } catch (EntitlementUserApiException e) {
- if (e.getCode() == ErrorCode.ENT_GET_INVALID_BUNDLE_ID.getCode()) {
- return Response.status(Status.NO_CONTENT).build();
- } else {
- throw e;
- }
-
+ final UUID uuid = UUID.fromString(bundleId);
+ final SubscriptionBundle bundle = entitlementApi.getBundleFromId(uuid);
+ if (bundle == null) {
+ return Response.status(Status.NO_CONTENT).build();
}
+ final List<Subscription> bundles = entitlementApi.getSubscriptionsForBundle(uuid);
+ final Collection<SubscriptionJsonNoEvents> result = Collections2.transform(bundles, new Function<Subscription, SubscriptionJsonNoEvents>() {
+ @Override
+ public SubscriptionJsonNoEvents apply(final Subscription input) {
+ return new SubscriptionJsonNoEvents(input);
+ }
+ });
+ return Response.status(Status.OK).entity(result).build();
}
@GET
@@ -174,8 +139,9 @@ public class BundleResource extends JaxRsResourceBase {
final List<CustomFieldJson> customFields,
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@HeaderParam(HDR_REASON) final String reason,
- @HeaderParam(HDR_COMMENT) final String comment) {
- return super.createCustomFields(UUID.fromString(id), customFields,
+ @HeaderParam(HDR_COMMENT) final String comment,
+ @javax.ws.rs.core.Context final UriInfo uriInfo) {
+ return super.createCustomFields(UUID.fromString(id), customFields, uriInfo,
context.createContext(createdBy, reason, comment));
}
@@ -187,8 +153,9 @@ public class BundleResource extends JaxRsResourceBase {
@QueryParam(QUERY_CUSTOM_FIELDS) final String customFieldList,
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@HeaderParam(HDR_REASON) final String reason,
- @HeaderParam(HDR_COMMENT) final String comment) {
- return super.deleteCustomFields(UUID.fromString(id), customFieldList,
+ @HeaderParam(HDR_COMMENT) final String comment,
+ @javax.ws.rs.core.Context final UriInfo uriInfo) {
+ return super.deleteCustomFields(UUID.fromString(id), customFieldList, uriInfo,
context.createContext(createdBy, reason, comment));
}
@@ -221,9 +188,9 @@ public class BundleResource extends JaxRsResourceBase {
@QueryParam(QUERY_TAGS) final String tagList,
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@HeaderParam(HDR_REASON) final String reason,
- @HeaderParam(HDR_COMMENT) final String comment) {
-
- return super.deleteTags(UUID.fromString(id), tagList,
+ @HeaderParam(HDR_COMMENT) final String comment,
+ @javax.ws.rs.core.Context final UriInfo uriInfo) {
+ return super.deleteTags(UUID.fromString(id), tagList, uriInfo,
context.createContext(createdBy, reason, comment));
}