You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@falcon.apache.org by aj...@apache.org on 2016/01/06 15:07:49 UTC

falcon git commit: FALCON-1705 Standardization of error handling in falcon Server. Contributed by Praveen Adlakha.

Repository: falcon
Updated Branches:
  refs/heads/0.9 d856c0780 -> 2cbf5030c


FALCON-1705  Standardization of error handling in falcon Server. Contributed by Praveen Adlakha.


Project: http://git-wip-us.apache.org/repos/asf/falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/falcon/commit/2cbf5030
Tree: http://git-wip-us.apache.org/repos/asf/falcon/tree/2cbf5030
Diff: http://git-wip-us.apache.org/repos/asf/falcon/diff/2cbf5030

Branch: refs/heads/0.9
Commit: 2cbf5030c5ebbad1ce524c9bb048c0e886be7ed4
Parents: d856c07
Author: Ajay Yadava <aj...@gmail.com>
Authored: Wed Jan 6 18:25:22 2016 +0530
Committer: Ajay Yadava <aj...@gmail.com>
Committed: Wed Jan 6 19:18:46 2016 +0530

----------------------------------------------------------------------
 CHANGES.txt                                     |  2 +
 .../org/apache/falcon/FalconWebException.java   | 89 +++++---------------
 .../falcon/resource/AbstractEntityManager.java  | 54 ++++++------
 .../resource/AbstractInstanceManager.java       | 85 +++++++++----------
 .../AbstractSchedulableEntityManager.java       | 50 +++++------
 .../falcon/resource/channel/HTTPChannel.java    |  4 +-
 .../metadata/LineageMetadataResource.java       | 20 ++---
 .../metadata/MetadataDiscoveryResource.java     |  4 +-
 .../falcon/resource/proxy/BufferedRequest.java  |  2 +-
 .../resource/proxy/InstanceManagerProxy.java    | 39 ++++-----
 .../proxy/SchedulableEntityManagerProxy.java    | 54 ++++++------
 .../resource/SchedulableEntityManager.java      | 13 ++-
 12 files changed, 180 insertions(+), 236 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/falcon/blob/2cbf5030/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 5677175..fbb5dc9 100755
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -43,6 +43,8 @@ Proposed Release Version: 0.9
     FALCON-1213 Base framework of the native scheduler(Pallavi Rao)
 
   IMPROVEMENTS
+    FALCON-1705 Standardization of error handling in falcon Server(Praveen Adlakha via Ajay Yadava)
+
     FALCON-1640 Cascading Delete for instances in Native Scheduler(Pavan Kumar Kolamuri via Ajay Yadava)
 
     FALCON-1683 Inconsistent behavior when user tries to switch schedulers(Pallavi Rao via Ajay Yadava)

http://git-wip-us.apache.org/repos/asf/falcon/blob/2cbf5030/prism/src/main/java/org/apache/falcon/FalconWebException.java
----------------------------------------------------------------------
diff --git a/prism/src/main/java/org/apache/falcon/FalconWebException.java b/prism/src/main/java/org/apache/falcon/FalconWebException.java
index 0b6c38e..663420a 100644
--- a/prism/src/main/java/org/apache/falcon/FalconWebException.java
+++ b/prism/src/main/java/org/apache/falcon/FalconWebException.java
@@ -18,19 +18,15 @@
 
 package org.apache.falcon;
 
-import org.apache.falcon.resource.APIResult;
-import org.apache.falcon.resource.InstanceDependencyResult;
-import org.apache.falcon.resource.InstancesResult;
-import org.apache.falcon.resource.InstancesSummaryResult;
-import org.apache.falcon.resource.TriageResult;
-import org.apache.hadoop.security.authorize.AuthorizationException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
+import org.apache.falcon.resource.APIResult;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * Exception for REST APIs.
  */
@@ -38,81 +34,38 @@ public class FalconWebException extends WebApplicationException {
 
     private static final Logger LOG = LoggerFactory.getLogger(FalconWebException.class);
 
-    public static FalconWebException newException(Throwable e,
-                                                  Response.Status status) {
-        if (e instanceof AuthorizationException) {
-            status = Response.Status.FORBIDDEN;
-        }
-
-        return newException(getMessage(e), status);
-    }
-
-    public static FalconWebException newTriageResultException(Throwable e, Response.Status status) {
-        String message = getMessage(e);
-        LOG.error("Triage failed: {}\nError: {}", status, message);
-        APIResult result = new TriageResult(APIResult.Status.FAILED, message);
-        return new FalconWebException(e, Response.status(status).entity(result).type(MediaType.TEXT_XML_TYPE).build());
-    }
-
-    public static FalconWebException newInstanceSummaryException(Throwable e, Response.Status status) {
-        String message = getMessage(e);
-        LOG.error("Action failed: {}\nError: {}", status, message);
-        APIResult result = new InstancesSummaryResult(APIResult.Status.FAILED, message);
-        return new FalconWebException(e, Response.status(status).entity(result).type(MediaType.TEXT_XML_TYPE).build());
-    }
-
-    public static FalconWebException newInstanceDependencyResult(Throwable e, Response.Status status) {
-        return newInstanceDependencyResult(getMessage(e), status);
-    }
-
-    public static FalconWebException newInstanceDependencyResult(String message, Response.Status status) {
+    public static FalconWebException newMetadataResourceException(String message, Response.Status status) {
         LOG.error("Action failed: {}\nError: {}", status, message);
-        APIResult result = new InstanceDependencyResult(APIResult.Status.FAILED, message);
+        // Using MediaType.TEXT_PLAIN for newMetadataResourceException to ensure backward compatibility.
         return new FalconWebException(new Exception(message),
-                Response.status(status).entity(result).type(MediaType.TEXT_XML_TYPE).build());
-    }
-
-    public static FalconWebException newException(String message, Response.Status status) {
-        APIResult result = new APIResult(APIResult.Status.FAILED, message);
-        return newException(result, status);
+                Response.status(status).entity(message).type(MediaType.TEXT_PLAIN).build());
     }
 
-    public static FalconWebException newException(APIResult result, Response.Status status) {
-        LOG.error("Action failed: {}\nError: {}", status, result.getMessage());
-        return new FalconWebException(new FalconException(result.getMessage()),
-                Response.status(status).entity(result).type(MediaType.TEXT_XML_TYPE).build());
+    public static FalconWebException newAPIException(Throwable throwable) {
+        return newAPIException(throwable, Response.Status.BAD_REQUEST);
     }
 
-    public static FalconWebException newInstanceException(String message, Response.Status status) {
-        return newInstanceException(new FalconException(message), status);
+    public static FalconWebException newAPIException(Throwable throwable, Response.Status status) {
+        String message = getMessage(throwable);
+        return newAPIException(message, status);
     }
 
-    public static FalconWebException newInstanceException(Throwable e, Response.Status status) {
-        LOG.error("Action failed: {}\nError: {}", status, e.getMessage());
-        APIResult result = new InstancesResult(APIResult.Status.FAILED, e.getMessage());
-        return new FalconWebException(e, Response.status(status).entity(result).type(MediaType.TEXT_XML_TYPE).build());
+    public static FalconWebException newAPIException(String message) {
+        return newAPIException(message, Response.Status.BAD_REQUEST);
     }
 
-    public static FalconWebException newMetadataResourceException(String message, Response.Status status) {
-        LOG.error("Action failed: {}\nError: {}", status, message);
-        // Using MediaType.TEXT_PLAIN for newMetadataResourceException to ensure backward compatibility.
-        return new FalconWebException(new Exception(message),
-                Response.status(status).entity(message).type(MediaType.TEXT_PLAIN).build());
+    public static FalconWebException newAPIException(String message, Response.Status status) {
+        Response response = Response.status(status)
+                .entity(new APIResult(APIResult.Status.FAILED, message))
+                .type(MediaType.TEXT_XML_TYPE)
+                .build();
+        return new FalconWebException(response);
     }
 
     private static String getMessage(Throwable e) {
         return e.getCause()==null? e.getMessage():e.getMessage() + "\nCausedBy: " + e.getCause().getMessage();
     }
 
-
-    public static FalconWebException newAPIException(String message) {
-        Response response = Response.status(Response.Status.BAD_REQUEST)
-                            .entity(new APIResult(APIResult.Status.FAILED, message))
-                            .type(MediaType.TEXT_XML_TYPE)
-                            .build();
-        return new FalconWebException(response);
-    }
-
     public FalconWebException(Response response) {
         super(response);
     }

http://git-wip-us.apache.org/repos/asf/falcon/blob/2cbf5030/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java
----------------------------------------------------------------------
diff --git a/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java b/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java
index 0ea2e4e..c32123d 100644
--- a/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java
+++ b/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java
@@ -101,9 +101,8 @@ public abstract class AbstractEntityManager {
         }
         if (StringUtils.isNotEmpty(colo) && !colo.equals("*")) {
             if (!DeploymentUtil.getCurrentColo().equals(colo)) {
-                throw FalconWebException.newException(
-                        "Current colo (" + DeploymentUtil.getCurrentColo() + ") is not " + colo,
-                        Response.Status.BAD_REQUEST);
+                throw FalconWebException.newAPIException("Current colo (" + DeploymentUtil.getCurrentColo()
+                        + ") is not " + colo);
             }
         }
     }
@@ -127,8 +126,7 @@ public abstract class AbstractEntityManager {
         } else {
             colos = new HashSet<String>(Arrays.asList(coloExpr.split(",")));
             if (!applicableColos.containsAll(colos)) {
-                throw FalconWebException.newException("Given colos not applicable for entity operation",
-                        Response.Status.BAD_REQUEST);
+                throw FalconWebException.newAPIException("Given colos not applicable for entity operation");
             }
         }
         return colos;
@@ -146,7 +144,7 @@ public abstract class AbstractEntityManager {
 
             return getApplicableColos(type, EntityUtil.getEntity(type, name));
         } catch (FalconException e) {
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -168,7 +166,7 @@ public abstract class AbstractEntityManager {
             }
             return colos;
         } catch (FalconException e) {
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -194,7 +192,7 @@ public abstract class AbstractEntityManager {
             return new APIResult(APIResult.Status.SUCCEEDED, "Submit successful (" + type + ") " + entity.getName());
         } catch (Throwable e) {
             LOG.error("Unable to persist entity object", e);
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -210,7 +208,7 @@ public abstract class AbstractEntityManager {
             return validate(request.getInputStream(), type, skipDryRun);
         } catch (IOException e) {
             LOG.error("Unable to get InputStream from Request", request, e);
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -235,7 +233,7 @@ public abstract class AbstractEntityManager {
                     "Validated successfully (" + entityType + ") " + entity.getName());
         } catch (Throwable e) {
             LOG.error("Validation failed for entity ({})", type, e);
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -278,7 +276,7 @@ public abstract class AbstractEntityManager {
                     entity + "(" + type + ") removed successfully " + removedFromEngine);
         } catch (Throwable e) {
             LOG.error("Unable to reach workflow engine for deletion or deletion failed", e);
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         } finally {
             releaseEntityLocks(entity, tokenList);
         }
@@ -290,13 +288,13 @@ public abstract class AbstractEntityManager {
             return update(request.getInputStream(), type, entityName, colo, skipDryRun);
         } catch (IOException e) {
             LOG.error("Unable to get InputStream from Request", request, e);
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
 
     }
 
     protected APIResult update(InputStream inputStream, String type, String entityName,
-                            String colo, Boolean skipDryRun) {
+                               String colo, Boolean skipDryRun) {
         checkColo(colo);
         List<Entity> tokenList = new ArrayList<>();
         try {
@@ -332,7 +330,7 @@ public abstract class AbstractEntityManager {
             return new APIResult(APIResult.Status.SUCCEEDED, result.toString());
         } catch (Throwable e) {
             LOG.error("Update failed", e);
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         } finally {
             ConfigurationStore.get().cleanupUpdateInit();
             releaseEntityLocks(entityName, tokenList);
@@ -561,7 +559,7 @@ public abstract class AbstractEntityManager {
             throw e;
         } catch (Exception e) {
             LOG.error("Unable to get status for entity {} ({})", entity, type, e);
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -596,7 +594,7 @@ public abstract class AbstractEntityManager {
             return EntityUtil.getEntityDependencies(entityObj);
         } catch (Exception e) {
             LOG.error("Unable to get dependencies for entityName {} ({})", entityName, type, e);
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -652,7 +650,7 @@ public abstract class AbstractEntityManager {
             }
         } catch (Exception e) {
             LOG.error("Failed to get entity list", e);
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
 
         // sort entities and pagination
@@ -685,8 +683,7 @@ public abstract class AbstractEntityManager {
             try {
                 EntityList.EntityFilterByFields.valueOf(entry.getKey().toUpperCase());
             } catch (IllegalArgumentException e) {
-                throw FalconWebException.newInstanceException(
-                        "Invalid filter key: " + entry.getKey(), Response.Status.BAD_REQUEST);
+                throw FalconWebException.newAPIException("Invalid filter key: " + entry.getKey());
             }
         }
         return filterByFieldsValues;
@@ -724,7 +721,7 @@ public abstract class AbstractEntityManager {
                 }
             } catch (FalconException e1) {
                 LOG.error("Unable to get list for entities for ({})", entityType.getEntityClass().getSimpleName(), e1);
-                throw FalconWebException.newException(e1, Response.Status.BAD_REQUEST);
+                throw FalconWebException.newAPIException(e1);
             }
 
             if (SecurityUtil.isAuthorizationEnabled() && !isEntityAuthorized(entity)) {
@@ -955,9 +952,9 @@ public abstract class AbstractEntityManager {
 
         case PIPELINES:
             if (!entity.getEntityType().equals(EntityType.PROCESS)) {
-                throw FalconWebException.newException(
-                        "Invalid filterBy key for non process entities " + pair.getKey(),
-                        Response.Status.BAD_REQUEST);
+                throw FalconWebException.newAPIException("Invalid filterBy key for non"
+                    + " process entities " + pair.getKey());
+
             }
             return isFilteredByPipelines(pair.getValue(), EntityUtil.getPipelines(entity));
 
@@ -1009,7 +1006,7 @@ public abstract class AbstractEntityManager {
 
         String err = "Value for param sortOrder should be \"asc\" or \"desc\". It is  : " + sortOrder;
         LOG.error(err);
-        throw FalconWebException.newException(err, Response.Status.BAD_REQUEST);
+        throw FalconWebException.newAPIException(err);
     }
 
     protected int getRequiredNumberOfResults(int arraySize, int offset, int numresults) {
@@ -1021,8 +1018,7 @@ public abstract class AbstractEntityManager {
 
         if (numresults < 1) {
             LOG.error("Value for param numResults should be > than 0  : {}", numresults);
-            throw FalconWebException.newException("Value for param numResults should be > than 0  : " + numresults,
-                    Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException("Value for param numResults should be > than 0  : " + numresults);
         }
 
         if (offset < 0) { offset = 0; }
@@ -1084,7 +1080,7 @@ public abstract class AbstractEntityManager {
             return entity.toString();
         } catch (Throwable e) {
             LOG.error("Unable to get entity definition from config store for ({}): {}", type, entityName, e);
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
 
         }
     }
@@ -1126,10 +1122,10 @@ public abstract class AbstractEntityManager {
             return result;
 
         } catch (IllegalArgumentException e) {
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         } catch (Throwable throwable) {
             LOG.error("reverse look up failed", throwable);
-            throw FalconWebException.newException(throwable, Response.Status.INTERNAL_SERVER_ERROR);
+            throw FalconWebException.newAPIException(throwable, Response.Status.INTERNAL_SERVER_ERROR);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/falcon/blob/2cbf5030/prism/src/main/java/org/apache/falcon/resource/AbstractInstanceManager.java
----------------------------------------------------------------------
diff --git a/prism/src/main/java/org/apache/falcon/resource/AbstractInstanceManager.java b/prism/src/main/java/org/apache/falcon/resource/AbstractInstanceManager.java
index d50d111..9e81209 100644
--- a/prism/src/main/java/org/apache/falcon/resource/AbstractInstanceManager.java
+++ b/prism/src/main/java/org/apache/falcon/resource/AbstractInstanceManager.java
@@ -18,6 +18,25 @@
 
 package org.apache.falcon.resource;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Queue;
+import java.util.Set;
+
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletRequest;
+
 import org.apache.commons.lang3.StringUtils;
 import org.apache.falcon.FalconException;
 import org.apache.falcon.FalconWebException;
@@ -44,28 +63,10 @@ import org.apache.falcon.resource.InstancesResult.Instance;
 import org.apache.falcon.resource.InstancesSummaryResult.InstanceSummary;
 import org.apache.falcon.util.DeploymentUtil;
 import org.apache.falcon.workflow.engine.AbstractWorkflowEngine;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.servlet.ServletInputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.core.Response;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.Properties;
-import java.util.Queue;
-import java.util.Set;
-
 /**
  * A base class for managing Entity's Instance operations.
  */
@@ -79,14 +80,12 @@ public abstract class AbstractInstanceManager extends AbstractEntityManager {
 
     protected EntityType checkType(String type) {
         if (StringUtils.isEmpty(type)) {
-            throw FalconWebException.newInstanceException("entity type is empty",
-                    Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException("entity type is empty");
         } else {
             EntityType entityType = EntityType.getEnum(type);
             if (entityType == EntityType.CLUSTER) {
-                throw FalconWebException.newInstanceException(
-                        "Instance management functions don't apply to Cluster entities",
-                        Response.Status.BAD_REQUEST);
+                throw FalconWebException.newAPIException(
+                        "Instance management functions don't apply to Cluster entities");
             }
             return entityType;
         }
@@ -129,7 +128,7 @@ public abstract class AbstractInstanceManager extends AbstractEntityManager {
                     filterBy, orderBy, sortOrder, offset, numResults);
         } catch (Throwable e) {
             LOG.error("Failed to get running instances", e);
-            throw FalconWebException.newInstanceException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -143,11 +142,9 @@ public abstract class AbstractInstanceManager extends AbstractEntityManager {
                     getEarliestDate(entry.getValue());
                 }
             } catch (IllegalArgumentException e) {
-                throw FalconWebException.newInstanceException(
-                        "Invalid filter key: " + entry.getKey(), Response.Status.BAD_REQUEST);
+                throw FalconWebException.newAPIException("Invalid filter key: " + entry.getKey());
             } catch (FalconException e) {
-                throw FalconWebException.newInstanceException(
-                        "Invalid date value for key: " + entry.getKey(), Response.Status.BAD_REQUEST);
+                throw FalconWebException.newAPIException("Invalid date value for key: " + entry.getKey());
             }
         }
     }
@@ -228,14 +225,14 @@ public abstract class AbstractInstanceManager extends AbstractEntityManager {
                     break;
 
                 default:
-                    throw FalconWebException.newInstanceDependencyResult("Instance dependency isn't supported for type:"
-                        + entityType, Response.Status.BAD_REQUEST);
+                    throw FalconWebException.newAPIException("Instance dependency isn't supported for type:"
+                        + entityType);
                 }
             }
 
         } catch (Throwable throwable) {
             LOG.error("Failed to get instance dependencies:", throwable);
-            throw FalconWebException.newInstanceDependencyResult(throwable, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(throwable);
         }
 
         InstanceDependencyResult res = new InstanceDependencyResult(APIResult.Status.SUCCEEDED, "Success!");
@@ -261,7 +258,7 @@ public abstract class AbstractInstanceManager extends AbstractEntityManager {
 
         } catch (Throwable e) {
             LOG.error("Failed to get instance summary", e);
-            throw FalconWebException.newInstanceSummaryException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -282,8 +279,7 @@ public abstract class AbstractInstanceManager extends AbstractEntityManager {
             return result;
         } catch (Exception e) {
             LOG.error("Failed to get logs for instances", e);
-            throw FalconWebException.newInstanceException(e,
-                    Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -552,7 +548,7 @@ public abstract class AbstractInstanceManager extends AbstractEntityManager {
             return wfEngine.getInstanceParams(entityObject, start, end, lifeCycles);
         } catch (Throwable e) {
             LOG.error("Failed to display params of an instance", e);
-            throw FalconWebException.newInstanceException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -578,7 +574,7 @@ public abstract class AbstractInstanceManager extends AbstractEntityManager {
                     startAndEndDate.first, startAndEndDate.second, props, lifeCycles);
         } catch (Throwable e) {
             LOG.error("Failed to kill instances", e);
-            throw FalconWebException.newInstanceException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -604,7 +600,7 @@ public abstract class AbstractInstanceManager extends AbstractEntityManager {
                     startAndEndDate.first, startAndEndDate.second, props, lifeCycles);
         } catch (Throwable e) {
             LOG.error("Failed to suspend instances", e);
-            throw FalconWebException.newInstanceException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -630,7 +626,7 @@ public abstract class AbstractInstanceManager extends AbstractEntityManager {
                     startAndEndDate.first, startAndEndDate.second, props, lifeCycles);
         } catch (Throwable e) {
             LOG.error("Failed to resume instances", e);
-            throw FalconWebException.newInstanceException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -666,20 +662,19 @@ public abstract class AbstractInstanceManager extends AbstractEntityManager {
             return result;
         } catch (IllegalArgumentException e) { // bad entityType
             LOG.error("Bad Entity Type: {}", entityType);
-            throw FalconWebException.newTriageResultException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         } catch (EntityNotRegisteredException e) { // bad entityName
             LOG.error("Bad Entity Name : {}", entityName);
-            throw FalconWebException.newTriageResultException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         } catch (Throwable e) {
             LOG.error("Failed to triage", e);
-            throw FalconWebException.newTriageResultException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
     private void checkName(String entityName) {
         if (StringUtils.isBlank(entityName)) {
-            throw FalconWebException.newInstanceException("Instance name is mandatory and shouldn't be blank",
-                    Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException("Instance name is mandatory and shouldn't be blank");
         }
     }
 
@@ -831,7 +826,7 @@ public abstract class AbstractInstanceManager extends AbstractEntityManager {
                     startAndEndDate.first, startAndEndDate.second, props, lifeCycles, isForced);
         } catch (Exception e) {
             LOG.error("Failed to rerun instances", e);
-            throw FalconWebException.newInstanceException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
     //RESUME CHECKSTYLE CHECK ParameterNumberCheck

http://git-wip-us.apache.org/repos/asf/falcon/blob/2cbf5030/prism/src/main/java/org/apache/falcon/resource/AbstractSchedulableEntityManager.java
----------------------------------------------------------------------
diff --git a/prism/src/main/java/org/apache/falcon/resource/AbstractSchedulableEntityManager.java b/prism/src/main/java/org/apache/falcon/resource/AbstractSchedulableEntityManager.java
index 88131f3..18df32f 100644
--- a/prism/src/main/java/org/apache/falcon/resource/AbstractSchedulableEntityManager.java
+++ b/prism/src/main/java/org/apache/falcon/resource/AbstractSchedulableEntityManager.java
@@ -18,6 +18,19 @@
 
 package org.apache.falcon.resource;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Context;
+
 import org.apache.commons.lang3.StringUtils;
 import org.apache.falcon.FalconException;
 import org.apache.falcon.FalconWebException;
@@ -35,22 +48,10 @@ import org.apache.falcon.service.FeedSLAMonitoringService;
 import org.apache.falcon.util.DeploymentUtil;
 import org.apache.falcon.workflow.WorkflowEngineFactory;
 import org.apache.hadoop.security.authorize.AuthorizationException;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.Response;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 /**
  * REST resource of allowed actions on Schedulable Entities, Only Process and
  * Feed can have schedulable actions.
@@ -82,12 +83,12 @@ public abstract class AbstractSchedulableEntityManager extends AbstractInstanceM
             return new APIResult(APIResult.Status.SUCCEEDED, entity + "(" + type + ") scheduled successfully");
         } catch (Throwable e) {
             LOG.error("Unable to schedule workflow", e);
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
     protected synchronized void scheduleInternal(String type, String entity, Boolean skipDryRun,
-            Map<String, String> properties) throws FalconException, AuthorizationException {
+                                 Map<String, String> properties) throws FalconException, AuthorizationException {
 
         checkSchedulableEntity(type);
         Entity entityObj = null;
@@ -111,7 +112,7 @@ public abstract class AbstractSchedulableEntityManager extends AbstractInstanceM
     }
 
     public static void validateSlaParams(String entityType, String entityName, String start, String end,
-                                  String colo) throws FalconException {
+                                         String colo) throws FalconException {
         EntityType type = EntityType.getEnum(entityType);
         if (type != EntityType.FEED) {
             throw new ValidationException("SLA monitoring is not supported for: " + type);
@@ -169,7 +170,7 @@ public abstract class AbstractSchedulableEntityManager extends AbstractInstanceM
                 }
             }
         } catch (FalconException e) {
-            throw FalconWebException.newInstanceException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
         SchedulableEntityInstanceResult result = new SchedulableEntityInstanceResult(APIResult.Status.SUCCEEDED,
                 "Success!");
@@ -200,7 +201,7 @@ public abstract class AbstractSchedulableEntityManager extends AbstractInstanceM
                     entity.getName() + "(" + type + ") scheduled successfully");
         } catch (Throwable e) {
             LOG.error("Unable to submit and schedule ", e);
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -227,7 +228,7 @@ public abstract class AbstractSchedulableEntityManager extends AbstractInstanceM
             return new APIResult(APIResult.Status.SUCCEEDED, entity + "(" + type + ") suspended successfully");
         } catch (Throwable e) {
             LOG.error("Unable to suspend entity", e);
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -255,7 +256,7 @@ public abstract class AbstractSchedulableEntityManager extends AbstractInstanceM
             return new APIResult(APIResult.Status.SUCCEEDED, entity + "(" + type + ") resumed successfully");
         } catch (Throwable e) {
             LOG.error("Unable to resume entity", e);
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -301,7 +302,7 @@ public abstract class AbstractSchedulableEntityManager extends AbstractInstanceM
             colo = ((Cluster) configStore.get(EntityType.CLUSTER, cluster)).getColo();
         } catch (Exception e) {
             LOG.error("Failed to get entities", e);
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
 
         List<EntitySummaryResult.EntitySummary> entitySummaries = new ArrayList<EntitySummaryResult.EntitySummary>();
@@ -358,7 +359,7 @@ public abstract class AbstractSchedulableEntityManager extends AbstractInstanceM
             }
         } catch (Throwable e) {
             LOG.error("Touch failed", e);
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
         return new APIResult(APIResult.Status.SUCCEEDED, result.toString());
     }
@@ -367,9 +368,8 @@ public abstract class AbstractSchedulableEntityManager extends AbstractInstanceM
     private void validateTypeForEntitySummary(String type) {
         EntityType entityType = EntityType.getEnum(type);
         if (!entityType.isSchedulable()) {
-            throw FalconWebException.newException("Invalid entity type " + type
-                + " for EntitySummary API. Valid options are feed or process",
-                Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException("Invalid entity type " + type
+                            + " for EntitySummary API. Valid options are feed or process");
         }
     }
     //RESUME CHECKSTYLE CHECK ParameterNumberCheck

http://git-wip-us.apache.org/repos/asf/falcon/blob/2cbf5030/prism/src/main/java/org/apache/falcon/resource/channel/HTTPChannel.java
----------------------------------------------------------------------
diff --git a/prism/src/main/java/org/apache/falcon/resource/channel/HTTPChannel.java b/prism/src/main/java/org/apache/falcon/resource/channel/HTTPChannel.java
index 41be13f..1b53120 100644
--- a/prism/src/main/java/org/apache/falcon/resource/channel/HTTPChannel.java
+++ b/prism/src/main/java/org/apache/falcon/resource/channel/HTTPChannel.java
@@ -119,8 +119,8 @@ public class HTTPChannel extends AbstractChannel {
             } else if (response.getClientResponseStatus().getStatusCode()
                     == Response.Status.BAD_REQUEST.getStatusCode()) {
                 LOG.error("Request failed: {}", response.getClientResponseStatus().getStatusCode());
-                throw FalconWebException.newInstanceException(response.
-                        getEntity(APIResult.class).getMessage(), Response.Status.BAD_REQUEST);
+                throw FalconWebException.newAPIException(response.
+                        getEntity(APIResult.class).getMessage());
             } else {
                 LOG.error("Request failed: {}", response.getClientResponseStatus().getStatusCode());
                 throw new FalconException(response.getEntity(String.class));

http://git-wip-us.apache.org/repos/asf/falcon/blob/2cbf5030/prism/src/main/java/org/apache/falcon/resource/metadata/LineageMetadataResource.java
----------------------------------------------------------------------
diff --git a/prism/src/main/java/org/apache/falcon/resource/metadata/LineageMetadataResource.java b/prism/src/main/java/org/apache/falcon/resource/metadata/LineageMetadataResource.java
index 8c5346f..1b57e67 100644
--- a/prism/src/main/java/org/apache/falcon/resource/metadata/LineageMetadataResource.java
+++ b/prism/src/main/java/org/apache/falcon/resource/metadata/LineageMetadataResource.java
@@ -92,7 +92,7 @@ public class LineageMetadataResource extends AbstractMetadataResource {
             GraphUtils.dump(getGraph(), file);
             return Response.ok().build();
         } catch (Exception e) {
-            throw FalconWebException.newException(e, Response.Status.INTERNAL_SERVER_ERROR);
+            throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR);
         }
     }
 
@@ -125,17 +125,15 @@ public class LineageMetadataResource extends AbstractMetadataResource {
                 }
             } catch (Exception e) {
                 LOG.error("Error while fetching entity lineage: ", e);
-                throw FalconWebException.newException(e, Response.Status.INTERNAL_SERVER_ERROR);
+                throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR);
             }
 
             if (processes.isEmpty()) {
-                throw FalconWebException.newException("No processes belonging to pipeline " + pipeline,
-                        Response.Status.BAD_REQUEST);
+                throw FalconWebException.newAPIException("No processes belonging to pipeline " + pipeline);
             }
             return Response.ok(buildJSONGraph(processes)).build();
         } else {
-            throw FalconWebException.newException("Pipeline name can not be blank",
-                    Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException("Pipeline name can not be blank");
         }
     }
 
@@ -155,7 +153,7 @@ public class LineageMetadataResource extends AbstractMetadataResource {
             JSONObject response = buildJSONResponse(getGraph().getVertices());
             return Response.ok(response).build();
         } catch (JSONException e) {
-            throw FalconWebException.newException(e, Response.Status.INTERNAL_SERVER_ERROR);
+            throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR);
         }
     }
 
@@ -181,7 +179,7 @@ public class LineageMetadataResource extends AbstractMetadataResource {
                     vertex, getVertexIndexedKeys(), GraphSONMode.NORMAL));
             return Response.ok(response).build();
         } catch (JSONException e) {
-            throw FalconWebException.newException(e, Response.Status.INTERNAL_SERVER_ERROR);
+            throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR);
         }
     }
 
@@ -224,7 +222,7 @@ public class LineageMetadataResource extends AbstractMetadataResource {
             response.put(TOTAL_SIZE, vertexProperties.size());
             return Response.ok(response).build();
         } catch (JSONException e) {
-            throw FalconWebException.newException(e, Response.Status.INTERNAL_SERVER_ERROR);
+            throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR);
         }
     }
 
@@ -429,7 +427,7 @@ public class LineageMetadataResource extends AbstractMetadataResource {
             return Response.ok(response).build();
 
         } catch (JSONException e) {
-            throw FalconWebException.newException(e, Response.Status.INTERNAL_SERVER_ERROR);
+            throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR);
         }
     }
 
@@ -461,7 +459,7 @@ public class LineageMetadataResource extends AbstractMetadataResource {
                     edge, getEdgeIndexedKeys(), GraphSONMode.NORMAL));
             return Response.ok(response).build();
         } catch (JSONException e) {
-            throw FalconWebException.newException(e, Response.Status.INTERNAL_SERVER_ERROR);
+            throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/falcon/blob/2cbf5030/prism/src/main/java/org/apache/falcon/resource/metadata/MetadataDiscoveryResource.java
----------------------------------------------------------------------
diff --git a/prism/src/main/java/org/apache/falcon/resource/metadata/MetadataDiscoveryResource.java b/prism/src/main/java/org/apache/falcon/resource/metadata/MetadataDiscoveryResource.java
index 60c1089..0f7701c 100644
--- a/prism/src/main/java/org/apache/falcon/resource/metadata/MetadataDiscoveryResource.java
+++ b/prism/src/main/java/org/apache/falcon/resource/metadata/MetadataDiscoveryResource.java
@@ -85,7 +85,7 @@ public class MetadataDiscoveryResource extends AbstractMetadataResource {
             response.put(TOTAL_SIZE, dimensionValues.length());
             return Response.ok(response).build();
         } catch (JSONException e) {
-            throw FalconWebException.newException(e, Response.Status.INTERNAL_SERVER_ERROR);
+            throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR);
         }
     }
 
@@ -124,7 +124,7 @@ public class MetadataDiscoveryResource extends AbstractMetadataResource {
             vertexProperties.put("outVertices", getAdjacentVerticesJson(outEdges, Direction.IN));
 
         } catch (JSONException e) {
-            throw FalconWebException.newException(e, Response.Status.INTERNAL_SERVER_ERROR);
+            throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR);
         }
 
         return Response.ok(vertexProperties).build();

http://git-wip-us.apache.org/repos/asf/falcon/blob/2cbf5030/prism/src/main/java/org/apache/falcon/resource/proxy/BufferedRequest.java
----------------------------------------------------------------------
diff --git a/prism/src/main/java/org/apache/falcon/resource/proxy/BufferedRequest.java b/prism/src/main/java/org/apache/falcon/resource/proxy/BufferedRequest.java
index 85041f9..4e73d5d 100644
--- a/prism/src/main/java/org/apache/falcon/resource/proxy/BufferedRequest.java
+++ b/prism/src/main/java/org/apache/falcon/resource/proxy/BufferedRequest.java
@@ -85,7 +85,7 @@ public class BufferedRequest implements HttpServletRequest {
             };
             stream.mark(10 * 1024 * 1024);
         } catch (IOException e) {
-            throw FalconWebException.newException(e, Response.Status.INTERNAL_SERVER_ERROR);
+            throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/falcon/blob/2cbf5030/prism/src/main/java/org/apache/falcon/resource/proxy/InstanceManagerProxy.java
----------------------------------------------------------------------
diff --git a/prism/src/main/java/org/apache/falcon/resource/proxy/InstanceManagerProxy.java b/prism/src/main/java/org/apache/falcon/resource/proxy/InstanceManagerProxy.java
index 801bd10..0c6be2d 100644
--- a/prism/src/main/java/org/apache/falcon/resource/proxy/InstanceManagerProxy.java
+++ b/prism/src/main/java/org/apache/falcon/resource/proxy/InstanceManagerProxy.java
@@ -18,6 +18,23 @@
 
 package org.apache.falcon.resource.proxy;
 
+import java.lang.reflect.Constructor;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+
 import org.apache.falcon.FalconException;
 import org.apache.falcon.FalconRuntimException;
 import org.apache.falcon.FalconWebException;
@@ -33,26 +50,10 @@ import org.apache.falcon.resource.InstancesSummaryResult;
 import org.apache.falcon.resource.TriageResult;
 import org.apache.falcon.resource.channel.Channel;
 import org.apache.falcon.resource.channel.ChannelFactory;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.DefaultValue;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.lang.reflect.Constructor;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 /**
  * A proxy implementation of the entity instance operations.
  */
@@ -625,12 +626,12 @@ public class InstanceManagerProxy extends AbstractInstanceManager {
                 } catch (Throwable e) {
                     LOG.error("Failed to fetch results for colo:{}", colo, e);
                     results.put(colo, getResultInstance(APIResult.Status.FAILED,
-                        e.getClass().getName() + "::" + e.getMessage()));
+                            e.getClass().getName() + "::" + e.getMessage()));
                 }
             }
             T finalResult = consolidateResult(results, clazz);
             if (finalResult.getStatus() != APIResult.Status.SUCCEEDED) {
-                throw FalconWebException.newException(finalResult, Response.Status.BAD_REQUEST);
+                throw FalconWebException.newAPIException(finalResult.getMessage());
             } else {
                 return finalResult;
             }

http://git-wip-us.apache.org/repos/asf/falcon/blob/2cbf5030/prism/src/main/java/org/apache/falcon/resource/proxy/SchedulableEntityManagerProxy.java
----------------------------------------------------------------------
diff --git a/prism/src/main/java/org/apache/falcon/resource/proxy/SchedulableEntityManagerProxy.java b/prism/src/main/java/org/apache/falcon/resource/proxy/SchedulableEntityManagerProxy.java
index dfed5af..f721bd0 100644
--- a/prism/src/main/java/org/apache/falcon/resource/proxy/SchedulableEntityManagerProxy.java
+++ b/prism/src/main/java/org/apache/falcon/resource/proxy/SchedulableEntityManagerProxy.java
@@ -18,6 +18,25 @@
 
 package org.apache.falcon.resource.proxy;
 
+import java.lang.reflect.Constructor;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+
 import org.apache.commons.lang.StringUtils;
 import org.apache.falcon.FalconException;
 import org.apache.falcon.FalconRuntimException;
@@ -39,25 +58,6 @@ import org.apache.falcon.resource.channel.Channel;
 import org.apache.falcon.resource.channel.ChannelFactory;
 import org.apache.falcon.util.DeploymentUtil;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.DefaultValue;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.lang.reflect.Constructor;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
 /**
  * A proxy implementation of the schedulable entity operations.
  */
@@ -124,10 +124,10 @@ public class SchedulableEntityManagerProxy extends AbstractSchedulableEntityMana
         try {
             validateSlaParams(entityType, entityName, start, end, colo);
         } catch (Exception e) {
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
         return new EntityProxy<SchedulableEntityInstanceResult>(entityType, entityName,
-            SchedulableEntityInstanceResult.class) {
+                SchedulableEntityInstanceResult.class) {
             @Override
             protected Set<String> getColosToApply() {
                 return getApplicableColos(entityType, entityName);
@@ -191,8 +191,8 @@ public class SchedulableEntityManagerProxy extends AbstractSchedulableEntityMana
         // If the submitted entity is a cluster, ensure its spec. has one of the valid colos
         String colo = ((Cluster) entity).getColo();
         if (!applicableColos.contains(colo)) {
-            throw FalconWebException.newException("The colo mentioned in the cluster specification, "
-                    + colo + ", is not listed in Prism runtime.", Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException("The colo mentioned in the cluster specification, "
+                    + colo + ", is not listed in Prism runtime.");
         }
     }
 
@@ -203,7 +203,7 @@ public class SchedulableEntityManagerProxy extends AbstractSchedulableEntityMana
             request.getInputStream().reset();
             return entity;
         } catch (Exception e) {
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
     }
 
@@ -228,7 +228,7 @@ public class SchedulableEntityManagerProxy extends AbstractSchedulableEntityMana
             entity = deserializeEntity(bufferedRequest.getInputStream(), entityType);
             bufferedRequest.getInputStream().reset();
         } catch (Exception e) {
-            throw FalconWebException.newException("Unable to parse the request", Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException("Unable to parse entity definition");
         }
         return new EntityProxy(type, entity.getName()) {
             @Override
@@ -274,7 +274,7 @@ public class SchedulableEntityManagerProxy extends AbstractSchedulableEntityMana
                     return new APIResult(APIResult.Status.SUCCEEDED,
                             entity + "(" + type + ") doesn't exist. Nothing to do");
                 } catch (FalconException e) {
-                    throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+                    throw FalconWebException.newAPIException(e);
                 }
             }
 
@@ -779,7 +779,7 @@ public class SchedulableEntityManagerProxy extends AbstractSchedulableEntityMana
 
             T finalResult = consolidateResult(results, clazz);
             if (finalResult.getStatus() == APIResult.Status.FAILED) {
-                throw FalconWebException.newException(finalResult, Response.Status.BAD_REQUEST);
+                throw FalconWebException.newAPIException(finalResult.getMessage());
             } else {
                 return finalResult;
             }

http://git-wip-us.apache.org/repos/asf/falcon/blob/2cbf5030/webapp/src/main/java/org/apache/falcon/resource/SchedulableEntityManager.java
----------------------------------------------------------------------
diff --git a/webapp/src/main/java/org/apache/falcon/resource/SchedulableEntityManager.java b/webapp/src/main/java/org/apache/falcon/resource/SchedulableEntityManager.java
index 0c7786f..8f8f56f 100644
--- a/webapp/src/main/java/org/apache/falcon/resource/SchedulableEntityManager.java
+++ b/webapp/src/main/java/org/apache/falcon/resource/SchedulableEntityManager.java
@@ -18,11 +18,6 @@
 
 package org.apache.falcon.resource;
 
-import org.apache.commons.lang.StringUtils;
-import org.apache.falcon.FalconWebException;
-import org.apache.falcon.monitors.Dimension;
-import org.apache.falcon.monitors.Monitored;
-
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DefaultValue;
@@ -34,7 +29,11 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.falcon.FalconWebException;
+import org.apache.falcon.monitors.Dimension;
+import org.apache.falcon.monitors.Monitored;
 
 /**
  * Entity management operations as REST API for feed and process.
@@ -67,7 +66,7 @@ public class SchedulableEntityManager extends AbstractSchedulableEntityManager {
         try {
             validateSlaParams(entityType, entityName, start, end, colo);
         } catch (Exception e) {
-            throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);
+            throw FalconWebException.newAPIException(e);
         }
         return super.getFeedSLAMissPendingAlerts(entityName, start, end, colo);
     }