killbill-aplcache

jaxrs: revisit exception handling for PaymentMethodResource Signed-off-by:

7/18/2012 6:07:20 PM

Details

diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/PaymentMethodResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/PaymentMethodResource.java
index 45961b3..91012ee 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/PaymentMethodResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/PaymentMethodResource.java
@@ -13,8 +13,11 @@
  * License for the specific language governing permissions and limitations
  * under the License.
  */
+
 package com.ning.billing.jaxrs.resources;
 
+import java.util.UUID;
+
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
 import javax.ws.rs.DefaultValue;
@@ -27,13 +30,7 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
-import java.util.UUID;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
 import com.ning.billing.account.api.Account;
 import com.ning.billing.account.api.AccountApiException;
 import com.ning.billing.account.api.AccountUserApi;
@@ -47,76 +44,60 @@ import com.ning.billing.util.api.CustomFieldUserApi;
 import com.ning.billing.util.api.TagUserApi;
 import com.ning.billing.util.dao.ObjectType;
 
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
 import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
 
 @Singleton
 @Path(JaxrsResource.PAYMENT_METHODS_PATH)
 public class PaymentMethodResource extends JaxRsResourceBase {
 
-    private static final Logger log = LoggerFactory.getLogger(PaymentMethodResource.class);
-
     private final PaymentApi paymentApi;
     private final AccountUserApi accountApi;
     private final Context context;
 
     @Inject
-    public PaymentMethodResource(final JaxrsUriBuilder uriBuilder, final AccountUserApi accountApi,
-                                 final PaymentApi paymentApi, final TagUserApi tagUserApi,
-                                 final CustomFieldUserApi customFieldUserApi, final Context context) {
-        super(uriBuilder, tagUserApi,customFieldUserApi);
+    public PaymentMethodResource(final JaxrsUriBuilder uriBuilder,
+                                 final AccountUserApi accountApi,
+                                 final PaymentApi paymentApi,
+                                 final TagUserApi tagUserApi,
+                                 final CustomFieldUserApi customFieldUserApi,
+                                 final Context context) {
+        super(uriBuilder, tagUserApi, customFieldUserApi);
         this.paymentApi = paymentApi;
         this.accountApi = accountApi;
         this.context = context;
     }
 
-
     @GET
     @Path("/{paymentMethodId:" + UUID_PATTERN + "}")
     @Produces(APPLICATION_JSON)
     public Response getPaymentMethod(@PathParam("paymentMethodId") final String paymentMethodId,
-                                     @QueryParam(QUERY_PAYMENT_METHOD_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo) {
-        try {
-            PaymentMethod paymentMethod = paymentApi.getPaymentMethodById(UUID.fromString(paymentMethodId));
-            final Account account = accountApi.getAccountById(paymentMethod.getAccountId());
-            if (withPluginInfo) {
-                paymentMethod = paymentApi.getPaymentMethod(account, paymentMethod.getId(), true);
-            }
-            final PaymentMethodJson json = PaymentMethodJson.toPaymentMethodJson(account, paymentMethod);
-
-            return Response.status(Status.OK).entity(json).build();
-        } catch (AccountApiException e) {
-            return Response.status(Status.NO_CONTENT).build();
-        } catch (PaymentApiException e) {
-            return Response.status(Status.NO_CONTENT).entity("PaymentMethod does not exist").build();
+                                     @QueryParam(QUERY_PAYMENT_METHOD_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo) throws AccountApiException, PaymentApiException {
+        PaymentMethod paymentMethod = paymentApi.getPaymentMethodById(UUID.fromString(paymentMethodId));
+        final Account account = accountApi.getAccountById(paymentMethod.getAccountId());
+        if (withPluginInfo) {
+            paymentMethod = paymentApi.getPaymentMethod(account, paymentMethod.getId(), true);
         }
-    }
+        final PaymentMethodJson json = PaymentMethodJson.toPaymentMethodJson(account, paymentMethod);
 
+        return Response.status(Status.OK).entity(json).build();
+    }
 
     @PUT
     @Consumes(APPLICATION_JSON)
     @Produces(APPLICATION_JSON)
     @Path("/{paymentMethodId:" + UUID_PATTERN + "}")
     public Response updatePaymentMethod(final PaymentMethodJson json,
-                                        @PathParam("paymentMethodId") final String paymentMethodId,
-                                        @HeaderParam(HDR_CREATED_BY) final String createdBy,
-                                        @HeaderParam(HDR_REASON) final String reason,
-                                        @HeaderParam(HDR_COMMENT) final String comment) {
-        try {
-
-            final PaymentMethod input = json.toPaymentMethod();
-            final PaymentMethod paymentMethod = paymentApi.getPaymentMethodById(UUID.fromString(paymentMethodId));
-
-            final Account account = accountApi.getAccountById(paymentMethod.getAccountId());
-
-            paymentApi.updatePaymentMethod(account, paymentMethod.getId(), input.getPluginDetail());
-            return getPaymentMethod(paymentMethod.getId().toString(), false);
-        } catch (PaymentApiException e) {
-            return Response.status(Status.NO_CONTENT).entity("PaymentMethod does not exist").build();
-        } catch (AccountApiException e) {
-            return Response.status(Status.NO_CONTENT).build();
-        } catch (IllegalArgumentException e) {
-            return Response.status(Status.BAD_REQUEST).entity(e.getMessage()).build();
-        }
+                                        @PathParam("paymentMethodId") final String paymentMethodId) throws PaymentApiException, AccountApiException {
+        final PaymentMethod input = json.toPaymentMethod();
+        final PaymentMethod paymentMethod = paymentApi.getPaymentMethodById(UUID.fromString(paymentMethodId));
+        final Account account = accountApi.getAccountById(paymentMethod.getAccountId());
+
+        paymentApi.updatePaymentMethod(account, paymentMethod.getId(), input.getPluginDetail());
+
+        return getPaymentMethod(paymentMethod.getId().toString(), false);
     }
 
     @DELETE
@@ -125,20 +106,13 @@ public class PaymentMethodResource extends JaxRsResourceBase {
     public Response deletePaymentMethod(@PathParam("paymentMethodId") final String paymentMethodId,
                                         @HeaderParam(HDR_CREATED_BY) final String createdBy,
                                         @HeaderParam(HDR_REASON) final String reason,
-                                        @HeaderParam(HDR_COMMENT) final String comment) {
-        try {
-
-            final PaymentMethod paymentMethod = paymentApi.getPaymentMethodById(UUID.fromString(paymentMethodId));
-            final Account account = accountApi.getAccountById(paymentMethod.getAccountId());
-            paymentApi.deletedPaymentMethod(account, UUID.fromString(paymentMethodId), context.createContext(createdBy, reason, comment));
-            return Response.status(Status.OK).build();
-        } catch (PaymentApiException e) {
-            return Response.status(Status.NO_CONTENT).entity("PaymentMethod does not exist").build();
-        } catch (AccountApiException e) {
-            return Response.status(Status.NO_CONTENT).build();
-        } catch (IllegalArgumentException e) {
-            return Response.status(Status.BAD_REQUEST).entity(e.getMessage()).build();
-        }
+                                        @HeaderParam(HDR_COMMENT) final String comment) throws PaymentApiException, AccountApiException {
+        final PaymentMethod paymentMethod = paymentApi.getPaymentMethodById(UUID.fromString(paymentMethodId));
+        final Account account = accountApi.getAccountById(paymentMethod.getAccountId());
+
+        paymentApi.deletedPaymentMethod(account, UUID.fromString(paymentMethodId), context.createContext(createdBy, reason, comment));
+
+        return Response.status(Status.OK).build();
     }
 
     @Override