Details
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/AccountApiExceptionMapper.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/AccountApiExceptionMapper.java
index 26a1908..a9484fb 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/AccountApiExceptionMapper.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/AccountApiExceptionMapper.java
@@ -54,8 +54,10 @@ public class AccountApiExceptionMapper extends ExceptionMapperBase implements Ex
return buildBadRequestResponse(exception, uriInfo);
} else if (exception.getCode() == ErrorCode.ACCOUNT_UPDATE_FAILED.getCode()) {
return buildInternalErrorResponse(exception, uriInfo);
+ } else if (exception.getCode() == ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_RECORD_ID.getCode()) {
+ return buildNotFoundResponse(exception, uriInfo);
} else {
- return buildBadRequestResponse(exception, uriInfo);
+ return fallback(exception, uriInfo);
}
}
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/BlockingApiExceptionMapper.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/BlockingApiExceptionMapper.java
index 7f23095..aed9c10 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/BlockingApiExceptionMapper.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/BlockingApiExceptionMapper.java
@@ -37,6 +37,6 @@ public class BlockingApiExceptionMapper extends ExceptionMapperBase implements E
@Override
public Response toResponse(final BlockingApiException exception) {
- return buildBadRequestResponse(exception, uriInfo);
+ return fallback(exception, uriInfo);
}
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/CatalogApiExceptionMapper.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/CatalogApiExceptionMapper.java
index d5a464d..fe85c6f 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/CatalogApiExceptionMapper.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/CatalogApiExceptionMapper.java
@@ -37,6 +37,6 @@ public class CatalogApiExceptionMapper extends ExceptionMapperBase implements Ex
@Override
public Response toResponse(final CatalogApiException exception) {
- return buildBadRequestResponse(exception, uriInfo);
+ return fallback(exception, uriInfo);
}
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/EmailApiExceptionMapper.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/EmailApiExceptionMapper.java
index e619556..ffdf1c9 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/EmailApiExceptionMapper.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/EmailApiExceptionMapper.java
@@ -37,6 +37,6 @@ public class EmailApiExceptionMapper extends ExceptionMapperBase implements Exce
@Override
public Response toResponse(final EmailApiException exception) {
- return buildInternalErrorResponse(exception, uriInfo);
+ return fallback(exception, uriInfo);
}
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/EntitlementApiExceptionMapper.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/EntitlementApiExceptionMapper.java
index 5dcfa3b..c4506cb 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/EntitlementApiExceptionMapper.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/EntitlementApiExceptionMapper.java
@@ -45,7 +45,7 @@ public class EntitlementApiExceptionMapper extends ExceptionMapperBase implement
} else if (exception.getCode() == ErrorCode.SUB_INVALID_SUBSCRIPTION_ID.getCode()) {
return buildNotFoundResponse(exception, uriInfo);
} else {
- return buildBadRequestResponse(exception, uriInfo);
+ return fallback(exception, uriInfo);
}
}
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/EntityPersistenceExceptionMapper.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/EntityPersistenceExceptionMapper.java
index d7c6194..f9301b7 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/EntityPersistenceExceptionMapper.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/EntityPersistenceExceptionMapper.java
@@ -37,6 +37,6 @@ public class EntityPersistenceExceptionMapper extends ExceptionMapperBase implem
@Override
public Response toResponse(final EntityPersistenceException exception) {
- return buildInternalErrorResponse(exception, uriInfo);
+ return fallback(exception, uriInfo);
}
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/ExceptionMapperBase.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/ExceptionMapperBase.java
index 2c82fa6..c070c79 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/ExceptionMapperBase.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/ExceptionMapperBase.java
@@ -24,7 +24,22 @@ import javax.ws.rs.core.UriInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.ning.billing.BillingExceptionBase;
+import com.ning.billing.account.api.AccountApiException;
+import com.ning.billing.catalog.api.CatalogApiException;
+import com.ning.billing.entitlement.api.BlockingApiException;
+import com.ning.billing.entitlement.api.EntitlementApiException;
+import com.ning.billing.entitlement.api.SubscriptionApiException;
+import com.ning.billing.entity.EntityPersistenceException;
+import com.ning.billing.invoice.api.InvoiceApiException;
import com.ning.billing.jaxrs.json.BillingExceptionJson;
+import com.ning.billing.overdue.OverdueApiException;
+import com.ning.billing.payment.api.PaymentApiException;
+import com.ning.billing.subscription.api.SubscriptionBillingApiException;
+import com.ning.billing.subscription.api.timeline.SubscriptionBaseRepairException;
+import com.ning.billing.util.api.TagApiException;
+import com.ning.billing.util.api.TagDefinitionApiException;
+import com.ning.billing.util.email.EmailApiException;
import com.ning.billing.util.jackson.ObjectMapper;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -34,6 +49,67 @@ public abstract class ExceptionMapperBase {
private static final Logger log = LoggerFactory.getLogger(ExceptionMapperBase.class);
private static final ObjectMapper mapper = new ObjectMapper();
+ protected Response fallback(final Exception exception, final UriInfo uriInfo) {
+ if (exception.getCause() == null) {
+ return buildBadRequestResponse(exception, uriInfo);
+ } else {
+ return doFallback(exception, uriInfo);
+ }
+ }
+
+ private Response doFallback(final Exception exception, final UriInfo uriInfo) {
+ if (exception.getCause() == null || !(exception.getCause() instanceof BillingExceptionBase)) {
+ return buildBadRequestResponse(exception, uriInfo);
+ }
+
+ final BillingExceptionBase cause = (BillingExceptionBase) exception.getCause();
+ if (cause instanceof AccountApiException) {
+ final AccountApiExceptionMapper mapper = new AccountApiExceptionMapper(uriInfo);
+ return mapper.toResponse((AccountApiException) cause);
+ } else if (cause instanceof BlockingApiException) {
+ final BlockingApiExceptionMapper mapper = new BlockingApiExceptionMapper(uriInfo);
+ return mapper.toResponse((BlockingApiException) cause);
+ } else if (cause instanceof CatalogApiException) {
+ final CatalogApiExceptionMapper mapper = new CatalogApiExceptionMapper(uriInfo);
+ return mapper.toResponse((CatalogApiException) cause);
+ } else if (cause instanceof EmailApiException) {
+ final EmailApiExceptionMapper mapper = new EmailApiExceptionMapper(uriInfo);
+ return mapper.toResponse((EmailApiException) cause);
+ } else if (cause instanceof EntitlementApiException) {
+ final EntitlementApiExceptionMapper mapper = new EntitlementApiExceptionMapper(uriInfo);
+ return mapper.toResponse((EntitlementApiException) cause);
+ } else if (cause instanceof EntityPersistenceException) {
+ final EntityPersistenceExceptionMapper mapper = new EntityPersistenceExceptionMapper(uriInfo);
+ return mapper.toResponse((EntityPersistenceException) cause);
+ } else if (cause instanceof InvoiceApiException) {
+ final InvoiceApiExceptionMapper mapper = new InvoiceApiExceptionMapper(uriInfo);
+ return mapper.toResponse((InvoiceApiException) cause);
+ } else if (cause instanceof OverdueApiException) {
+ final OverdueApiExceptionMapper mapper = new OverdueApiExceptionMapper(uriInfo);
+ return mapper.toResponse((OverdueApiException) cause);
+ } else if (cause instanceof PaymentApiException) {
+ final PaymentApiExceptionMapper mapper = new PaymentApiExceptionMapper(uriInfo);
+ return mapper.toResponse((PaymentApiException) cause);
+ } else if (cause instanceof SubscriptionApiException) {
+ final SubscriptionApiExceptionMapper mapper = new SubscriptionApiExceptionMapper(uriInfo);
+ return mapper.toResponse((SubscriptionApiException) cause);
+ } else if (cause instanceof SubscriptionBillingApiException) {
+ final SubscriptionBillingApiExceptionMapper mapper = new SubscriptionBillingApiExceptionMapper(uriInfo);
+ return mapper.toResponse((SubscriptionBillingApiException) cause);
+ } else if (cause instanceof SubscriptionBaseRepairException) {
+ final SubscriptionRepairExceptionMapper mapper = new SubscriptionRepairExceptionMapper(uriInfo);
+ return mapper.toResponse((SubscriptionBaseRepairException) cause);
+ } else if (cause instanceof TagApiException) {
+ final TagApiExceptionMapper mapper = new TagApiExceptionMapper(uriInfo);
+ return mapper.toResponse((TagApiException) cause);
+ } else if (cause instanceof TagDefinitionApiException) {
+ final TagDefinitionApiExceptionMapper mapper = new TagDefinitionApiExceptionMapper(uriInfo);
+ return mapper.toResponse((TagDefinitionApiException) cause);
+ } else {
+ return buildBadRequestResponse(cause, uriInfo);
+ }
+ }
+
protected Response buildConflictingRequestResponse(final Exception e, final UriInfo uriInfo) {
// Log the full stacktrace
log.warn("Conflicting request", e);
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/InvoiceApiExceptionMapper.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/InvoiceApiExceptionMapper.java
index 6dc12e4..8f19f44 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/InvoiceApiExceptionMapper.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/InvoiceApiExceptionMapper.java
@@ -69,7 +69,7 @@ public class InvoiceApiExceptionMapper extends ExceptionMapperBase implements Ex
} else if (exception.getCode() == ErrorCode.EXTERNAL_CHARGE_AMOUNT_INVALID.getCode()) {
return buildBadRequestResponse(exception, uriInfo);
} else {
- return buildBadRequestResponse(exception, uriInfo);
+ return fallback(exception, uriInfo);
}
}
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/OverdueApiExceptionMapper.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/OverdueApiExceptionMapper.java
index 13b5e44..061f0f0 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/OverdueApiExceptionMapper.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/OverdueApiExceptionMapper.java
@@ -37,6 +37,6 @@ public class OverdueApiExceptionMapper extends ExceptionMapperBase implements Ex
@Override
public Response toResponse(final OverdueApiException exception) {
- return buildBadRequestResponse(exception, uriInfo);
+ return fallback(exception, uriInfo);
}
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/PaymentApiExceptionMapper.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/PaymentApiExceptionMapper.java
index f4678e2..e1bafc0 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/PaymentApiExceptionMapper.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/PaymentApiExceptionMapper.java
@@ -99,7 +99,7 @@ public class PaymentApiExceptionMapper extends ExceptionMapperBase implements Ex
} else if (exception.getCode() == ErrorCode.PAYMENT_UPD_PAYMENT_PROVIDER_ACCOUNT.getCode()) {
return buildInternalErrorResponse(exception, uriInfo);
} else {
- return buildBadRequestResponse(exception, uriInfo);
+ return fallback(exception, uriInfo);
}
}
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/SubscriptionApiExceptionMapper.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/SubscriptionApiExceptionMapper.java
index cdcc153..36a9bd0 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/SubscriptionApiExceptionMapper.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/SubscriptionApiExceptionMapper.java
@@ -25,7 +25,6 @@ import javax.ws.rs.ext.Provider;
import com.ning.billing.ErrorCode;
import com.ning.billing.entitlement.api.SubscriptionApiException;
-import com.ning.billing.subscription.api.user.SubscriptionBaseApiException;
@Singleton
@Provider
@@ -81,10 +80,10 @@ public class SubscriptionApiExceptionMapper extends ExceptionMapperBase implemen
return buildNotFoundResponse(exception, uriInfo);
} else if (exception.getCode() == ErrorCode.SUB_RECREATE_BAD_STATE.getCode()) {
return buildInternalErrorResponse(exception, uriInfo);
- } else if (exception.getCode() == ErrorCode.SUB_UNCANCEL_BAD_STATE.getCode()) {
+ } else if (exception.getCode() == ErrorCode.SUB_UNCANCEL_BAD_STATE.getCode()) {
return buildInternalErrorResponse(exception, uriInfo);
} else {
- return buildBadRequestResponse(exception, uriInfo);
+ return fallback(exception, uriInfo);
}
}
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/SubscriptionBillingApiExceptionMapper.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/SubscriptionBillingApiExceptionMapper.java
index 2b38fe8..b48434e 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/SubscriptionBillingApiExceptionMapper.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/SubscriptionBillingApiExceptionMapper.java
@@ -37,6 +37,6 @@ public class SubscriptionBillingApiExceptionMapper extends ExceptionMapperBase i
@Override
public Response toResponse(final SubscriptionBillingApiException exception) {
- return buildBadRequestResponse(exception, uriInfo);
+ return fallback(exception, uriInfo);
}
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/SubscriptionRepairExceptionMapper.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/SubscriptionRepairExceptionMapper.java
index 0947a82..f00f0c0 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/SubscriptionRepairExceptionMapper.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/mappers/SubscriptionRepairExceptionMapper.java
@@ -69,7 +69,7 @@ public class SubscriptionRepairExceptionMapper extends ExceptionMapperBase imple
} else if (exception.getCode() == ErrorCode.SUB_REPAIR_VIEW_CHANGED.getCode()) {
return buildBadRequestResponse(exception, uriInfo);
} else {
- return buildBadRequestResponse(exception, uriInfo);
+ return fallback(exception, uriInfo);
}
}
}
diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestBundle.java b/server/src/test/java/com/ning/billing/jaxrs/TestBundle.java
index 97201a2..b99874d 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestBundle.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestBundle.java
@@ -95,7 +95,7 @@ public class TestBundle extends TestJaxrsBase {
queryParams.put(JaxrsResource.QUERY_EXTERNAL_KEY, "56566");
uri = JaxrsResource.ACCOUNTS_PATH + "/" + accountJson.getAccountId() + "/" + JaxrsResource.BUNDLES;
response = doGet(uri, queryParams, DEFAULT_HTTP_TIMEOUT_SEC);
- Assert.assertEquals(response.getStatusCode(), Status.NOT_FOUND.getStatusCode());
+ Assert.assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
uri = JaxrsResource.ACCOUNTS_PATH + "/" + accountJson.getAccountId() + "/" + JaxrsResource.BUNDLES;
response = doGet(uri, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);