You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@falcon.apache.org by sh...@apache.org on 2015/01/09 11:24:27 UTC

falcon git commit: FALCON-749 Improve error printed in falcon CLI. Contributed by Suresh Srinivas

Repository: falcon
Updated Branches:
  refs/heads/master b17baec7d -> 4a9151efc


FALCON-749 Improve error printed in falcon CLI. Contributed by Suresh Srinivas


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

Branch: refs/heads/master
Commit: 4a9151efc0a17248d93ba6c588bef7e2b05c7f19
Parents: b17baec
Author: shwethags <sh...@inmobi.com>
Authored: Fri Jan 9 15:53:46 2015 +0530
Committer: shwethags <sh...@inmobi.com>
Committed: Fri Jan 9 15:53:46 2015 +0530

----------------------------------------------------------------------
 CHANGES.txt                                       |  2 ++
 .../java/org/apache/falcon/cli/FalconCLI.java     |  4 ++--
 .../org/apache/falcon/client/FalconClient.java    |  7 +++----
 .../org/apache/falcon/entity/v0/EntityType.java   | 10 ++++++++++
 .../java/org/apache/falcon/entity/EntityUtil.java |  2 +-
 .../security/DefaultAuthorizationProvider.java    |  2 +-
 .../org/apache/falcon/entity/EntityTypeTest.java  | 15 +++++++++++++++
 .../falcon/resource/AbstractEntityManager.java    | 18 +++++++++---------
 .../falcon/resource/AbstractInstanceManager.java  |  4 ++--
 .../AbstractSchedulableEntityManager.java         |  4 ++--
 .../proxy/SchedulableEntityManagerProxy.java      |  2 +-
 .../security/FalconAuthorizationFilter.java       |  2 +-
 12 files changed, 49 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/falcon/blob/4a9151ef/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 2752376..8781a8e 100755
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -7,6 +7,8 @@ Trunk (Unreleased)
   NEW FEATURES
 
   IMPROVEMENTS
+   FALCON-749 Improve error printed in falcon CLI. (Suresh Srinivas via Shwetha GS)
+
    FALCON-977 Drop incubator/incubating from falcon codebase. (Shwetha GS
    via Srikanth Sundarrajan)
 

http://git-wip-us.apache.org/repos/asf/falcon/blob/4a9151ef/client/src/main/java/org/apache/falcon/cli/FalconCLI.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/falcon/cli/FalconCLI.java b/client/src/main/java/org/apache/falcon/cli/FalconCLI.java
index ca514c1..3620c3b 100644
--- a/client/src/main/java/org/apache/falcon/cli/FalconCLI.java
+++ b/client/src/main/java/org/apache/falcon/cli/FalconCLI.java
@@ -382,7 +382,7 @@ public class FalconCLI {
                 FalconClient.DEFAULT_NUM_RESULTS, "numResults");
         Integer numInstances = parseIntegerInput(commandLine.getOptionValue(NUM_INSTANCES_OPT), 7, "numInstances");
         validateNotEmpty(entityType, ENTITY_TYPE_OPT);
-        EntityType entityTypeEnum = EntityType.valueOf(entityType.toUpperCase());
+        EntityType entityTypeEnum = EntityType.getEnum(entityType);
         validateSortOrder(sortOrder);
         String entityAction = "entity";
 
@@ -462,7 +462,7 @@ public class FalconCLI {
     }
 
     private void validateEntityTypeForSummary(String type) throws FalconCLIException {
-        EntityType entityType = EntityType.valueOf(type.toUpperCase());
+        EntityType entityType = EntityType.getEnum(type);
         if (!entityType.isSchedulable()) {
             throw new FalconCLIException("Invalid entity type " + entityType
                     + " for EntitySummary API. Valid options are feed or process");

http://git-wip-us.apache.org/repos/asf/falcon/blob/4a9151ef/client/src/main/java/org/apache/falcon/client/FalconClient.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/falcon/client/FalconClient.java b/client/src/main/java/org/apache/falcon/client/FalconClient.java
index 7f1bc27..5064e46 100644
--- a/client/src/main/java/org/apache/falcon/client/FalconClient.java
+++ b/client/src/main/java/org/apache/falcon/client/FalconClient.java
@@ -673,8 +673,7 @@ public class FalconClient {
         checkIfSuccessful(clientResponse);
         String entity = clientResponse.getEntity(String.class);
 
-        return Entity.fromString(EntityType.valueOf(entityType.toUpperCase()),
-            entity);
+        return Entity.fromString(EntityType.getEnum(entityType), entity);
 
     }
 
@@ -758,7 +757,7 @@ public class FalconClient {
 
     private void checkLifeCycleOption(List<LifeCycle> lifeCycles, String type) throws FalconCLIException {
         if (lifeCycles != null && !lifeCycles.isEmpty()) {
-            EntityType entityType = EntityType.valueOf(type.toUpperCase().trim());
+            EntityType entityType = EntityType.getEnum(type);
             for (LifeCycle lifeCycle : lifeCycles) {
                 if (entityType != lifeCycle.getTag().getType()) {
                     throw new FalconCLIException("Incorrect lifecycle: " + lifeCycle + "for given type: " + type);
@@ -771,7 +770,7 @@ public class FalconClient {
         if (type == null || type.isEmpty()) {
             throw new FalconCLIException("entity type is empty");
         } else {
-            EntityType entityType = EntityType.valueOf(type.toUpperCase().trim());
+            EntityType entityType = EntityType.getEnum(type);
             if (entityType == EntityType.CLUSTER) {
                 throw new FalconCLIException(
                         "Instance management functions don't apply to Cluster entities");

http://git-wip-us.apache.org/repos/asf/falcon/blob/4a9151ef/client/src/main/java/org/apache/falcon/entity/v0/EntityType.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/falcon/entity/v0/EntityType.java b/client/src/main/java/org/apache/falcon/entity/v0/EntityType.java
index bc7b1f2..13c85a4 100644
--- a/client/src/main/java/org/apache/falcon/entity/v0/EntityType.java
+++ b/client/src/main/java/org/apache/falcon/entity/v0/EntityType.java
@@ -25,6 +25,7 @@ import org.apache.falcon.entity.v0.process.Process;
 import javax.xml.bind.*;
 import javax.xml.validation.Schema;
 import javax.xml.validation.SchemaFactory;
+import java.util.Arrays;
 
 /**
  * Enum for types of entities in Falcon Process, Feed and Cluster.
@@ -95,4 +96,13 @@ public enum EntityType {
     public String[] getImmutableProperties() {
         return immutableProperties;
     }
+
+    public static EntityType getEnum(String type) {
+        try {
+            return EntityType.valueOf(type.toUpperCase().trim());
+        } catch (IllegalArgumentException iae) {
+            throw new IllegalArgumentException("Invalid entity type: " + type + ". Expected "
+                    + Arrays.toString(values()).toLowerCase() + ".");
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/falcon/blob/4a9151ef/common/src/main/java/org/apache/falcon/entity/EntityUtil.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/falcon/entity/EntityUtil.java b/common/src/main/java/org/apache/falcon/entity/EntityUtil.java
index 1a5d30c..febbe50 100644
--- a/common/src/main/java/org/apache/falcon/entity/EntityUtil.java
+++ b/common/src/main/java/org/apache/falcon/entity/EntityUtil.java
@@ -81,7 +81,7 @@ public final class EntityUtil {
     public static <T extends Entity> T getEntity(String type, String entityName) throws FalconException {
         EntityType entityType;
         try {
-            entityType = EntityType.valueOf(type.toUpperCase());
+            entityType = EntityType.getEnum(type);
         } catch (IllegalArgumentException e) {
             throw new FalconException("Invalid entity type: " + type, e);
         }

http://git-wip-us.apache.org/repos/asf/falcon/blob/4a9151ef/common/src/main/java/org/apache/falcon/security/DefaultAuthorizationProvider.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/falcon/security/DefaultAuthorizationProvider.java b/common/src/main/java/org/apache/falcon/security/DefaultAuthorizationProvider.java
index d2d48c7..f6da2cf 100644
--- a/common/src/main/java/org/apache/falcon/security/DefaultAuthorizationProvider.java
+++ b/common/src/main/java/org/apache/falcon/security/DefaultAuthorizationProvider.java
@@ -316,7 +316,7 @@ public class DefaultAuthorizationProvider implements AuthorizationProvider {
         throws EntityNotRegisteredException, AuthorizationException {
 
         try {
-            EntityType type = EntityType.valueOf(entityType.toUpperCase());
+            EntityType type = EntityType.getEnum(entityType);
             return EntityUtil.getEntity(type, entityName);
         } catch (FalconException e) {
             if (e instanceof EntityNotRegisteredException) {

http://git-wip-us.apache.org/repos/asf/falcon/blob/4a9151ef/common/src/test/java/org/apache/falcon/entity/EntityTypeTest.java
----------------------------------------------------------------------
diff --git a/common/src/test/java/org/apache/falcon/entity/EntityTypeTest.java b/common/src/test/java/org/apache/falcon/entity/EntityTypeTest.java
index e947f69..640e87d 100644
--- a/common/src/test/java/org/apache/falcon/entity/EntityTypeTest.java
+++ b/common/src/test/java/org/apache/falcon/entity/EntityTypeTest.java
@@ -39,4 +39,19 @@ public class EntityTypeTest {
         Assert.assertTrue(EntityType.FEED.isSchedulable());
         Assert.assertFalse(EntityType.CLUSTER.isSchedulable());
     }
+
+    @Test
+    public void testValidEntityTypes() {
+        Assert.assertEquals(EntityType.FEED, EntityType.getEnum("feed"));
+        Assert.assertEquals(EntityType.FEED, EntityType.getEnum("FeEd"));
+        Assert.assertEquals(EntityType.CLUSTER, EntityType.getEnum("cluster"));
+        Assert.assertEquals(EntityType.CLUSTER, EntityType.getEnum("cluSTER"));
+        Assert.assertEquals(EntityType.PROCESS, EntityType.getEnum("process"));
+        Assert.assertEquals(EntityType.PROCESS, EntityType.getEnum("pRocess"));
+    }
+
+    @Test(expectedExceptions = IllegalArgumentException.class)
+    public void testInvalidEntityTypes() throws Exception {
+        EntityType.getEnum("invalid");
+    }
 }

http://git-wip-us.apache.org/repos/asf/falcon/blob/4a9151ef/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 4a686e7..0d34ef3 100644
--- a/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java
+++ b/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java
@@ -135,7 +135,7 @@ public abstract class AbstractEntityManager {
                 return DeploymentUtil.getDefaultColos();
             }
 
-            if (EntityType.valueOf(type.toUpperCase()) == EntityType.CLUSTER) {
+            if (EntityType.getEnum(type) == EntityType.CLUSTER) {
                 return getAllColos();
             }
 
@@ -151,7 +151,7 @@ public abstract class AbstractEntityManager {
                 return DeploymentUtil.getDefaultColos();
             }
 
-            if (EntityType.valueOf(type.toUpperCase()) == EntityType.CLUSTER) {
+            if (EntityType.getEnum(type) == EntityType.CLUSTER) {
                 return getAllColos();
             }
 
@@ -201,7 +201,7 @@ public abstract class AbstractEntityManager {
      */
     public APIResult validate(HttpServletRequest request, String type) {
         try {
-            EntityType entityType = EntityType.valueOf(type.toUpperCase());
+            EntityType entityType = EntityType.getEnum(type);
             Entity entity = deserializeEntity(request, entityType);
             validate(entity);
 
@@ -235,7 +235,7 @@ public abstract class AbstractEntityManager {
     public APIResult delete(HttpServletRequest request, String type, String entity, String colo) {
         checkColo(colo);
         try {
-            EntityType entityType = EntityType.valueOf(type.toUpperCase());
+            EntityType entityType = EntityType.getEnum(type);
             String removedFromEngine = "";
             try {
                 Entity entityObj = EntityUtil.getEntity(type, entity);
@@ -265,7 +265,7 @@ public abstract class AbstractEntityManager {
     public synchronized APIResult update(HttpServletRequest request, String type, String entityName, String colo) {
         checkColo(colo);
         try {
-            EntityType entityType = EntityType.valueOf(type.toUpperCase());
+            EntityType entityType = EntityType.getEnum(type);
             Entity oldEntity = EntityUtil.getEntity(type, entityName);
             Entity newEntity = deserializeEntity(request, entityType);
             // KLUDGE - Until ACL is mandated entity passed should be decorated for equals check to pass
@@ -343,7 +343,7 @@ public abstract class AbstractEntityManager {
     protected synchronized Entity submitInternal(HttpServletRequest request, String type)
         throws IOException, FalconException {
 
-        EntityType entityType = EntityType.valueOf(type.toUpperCase());
+        EntityType entityType = EntityType.getEnum(type);
         Entity entity = deserializeEntity(request, entityType);
         // KLUDGE - Until ACL is mandated entity passed should be decorated for equals check to pass
         decorateEntityWithACL(entity);
@@ -473,7 +473,7 @@ public abstract class AbstractEntityManager {
         Entity entityObj;
         try {
             entityObj = EntityUtil.getEntity(type, entity);
-            EntityType entityType = EntityType.valueOf(type.toUpperCase());
+            EntityType entityType = EntityType.getEnum(type);
             EntityStatus status = getStatus(entityObj, entityType);
             return new APIResult(Status.SUCCEEDED, status.name());
         } catch (FalconWebException e) {
@@ -575,7 +575,7 @@ public abstract class AbstractEntityManager {
         final Map<String, String> filterByFieldsValues = getFilterByFieldsValues(filterBy);
         final List<String> filterByTags = getFilterByTags(filterTags);
 
-        EntityType entityType = EntityType.valueOf(type.toUpperCase());
+        EntityType entityType = EntityType.getEnum(type);
         Collection<String> entityNames = configStore.getEntities(entityType);
         if (entityNames.isEmpty()) {
             return Collections.emptyList();
@@ -894,7 +894,7 @@ public abstract class AbstractEntityManager {
      */
     public String getEntityDefinition(String type, String entityName) {
         try {
-            EntityType entityType = EntityType.valueOf(type.toUpperCase());
+            EntityType entityType = EntityType.getEnum(type);
             Entity entity = configStore.get(entityType, entityName);
             if (entity == null) {
                 throw new NoSuchElementException(entityName + " (" + type + ") not found");

http://git-wip-us.apache.org/repos/asf/falcon/blob/4a9151ef/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 26a4289..ed30869 100644
--- a/prism/src/main/java/org/apache/falcon/resource/AbstractInstanceManager.java
+++ b/prism/src/main/java/org/apache/falcon/resource/AbstractInstanceManager.java
@@ -55,7 +55,7 @@ public abstract class AbstractInstanceManager extends AbstractEntityManager {
             throw FalconWebException.newInstanceException("entity type is empty",
                     Response.Status.BAD_REQUEST);
         } else {
-            EntityType entityType = EntityType.valueOf(type.toUpperCase());
+            EntityType entityType = EntityType.getEnum(type);
             if (entityType == EntityType.CLUSTER) {
                 throw FalconWebException.newInstanceException(
                         "Instance management functions don't apply to Cluster entities",
@@ -68,7 +68,7 @@ public abstract class AbstractInstanceManager extends AbstractEntityManager {
 
     protected List<LifeCycle> checkAndUpdateLifeCycle(List<LifeCycle> lifeCycleValues,
                                                       String type) throws FalconException {
-        EntityType entityType = EntityType.valueOf(type.toUpperCase().trim());
+        EntityType entityType = EntityType.getEnum(type);
         if (lifeCycleValues == null || lifeCycleValues.isEmpty()) {
             List<LifeCycle> lifeCycles = new ArrayList<LifeCycle>();
             if (entityType == EntityType.PROCESS) {

http://git-wip-us.apache.org/repos/asf/falcon/blob/4a9151ef/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 a4d1f8b..b8d12ee 100644
--- a/prism/src/main/java/org/apache/falcon/resource/AbstractSchedulableEntityManager.java
+++ b/prism/src/main/java/org/apache/falcon/resource/AbstractSchedulableEntityManager.java
@@ -225,7 +225,7 @@ public abstract class AbstractSchedulableEntityManager extends AbstractInstanceM
     }
 
     private void validateTypeForEntitySummary(String type) {
-        EntityType entityType = EntityType.valueOf(type.toUpperCase());
+        EntityType entityType = EntityType.getEnum(type);
         if (!entityType.isSchedulable()) {
             throw FalconWebException.newException("Invalid entity type " + type
                 + " for EntitySummary API. Valid options are feed or process",
@@ -265,7 +265,7 @@ public abstract class AbstractSchedulableEntityManager extends AbstractInstanceM
     }
 
     private void checkSchedulableEntity(String type) throws UnschedulableEntityException {
-        EntityType entityType = EntityType.valueOf(type.toUpperCase());
+        EntityType entityType = EntityType.getEnum(type);
         if (!entityType.isSchedulable()) {
             throw new UnschedulableEntityException(
                     "Entity type (" + type + ") " + " cannot be Scheduled/Suspended/Resumed");

http://git-wip-us.apache.org/repos/asf/falcon/blob/4a9151ef/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 cfa70a0..85e846f 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
@@ -134,7 +134,7 @@ public class SchedulableEntityManagerProxy extends AbstractSchedulableEntityMana
     private Entity getEntity(HttpServletRequest request, String type) {
         try {
             request.getInputStream().reset();
-            Entity entity = deserializeEntity(request, EntityType.valueOf(type.toUpperCase()));
+            Entity entity = deserializeEntity(request, EntityType.getEnum(type));
             request.getInputStream().reset();
             return entity;
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/falcon/blob/4a9151ef/prism/src/main/java/org/apache/falcon/security/FalconAuthorizationFilter.java
----------------------------------------------------------------------
diff --git a/prism/src/main/java/org/apache/falcon/security/FalconAuthorizationFilter.java b/prism/src/main/java/org/apache/falcon/security/FalconAuthorizationFilter.java
index 071187a..6b022c9 100644
--- a/prism/src/main/java/org/apache/falcon/security/FalconAuthorizationFilter.java
+++ b/prism/src/main/java/org/apache/falcon/security/FalconAuthorizationFilter.java
@@ -139,7 +139,7 @@ public class FalconAuthorizationFilter implements Filter {
         }
 
         try {
-            EntityType type = EntityType.valueOf(entityType.toUpperCase());
+            EntityType type = EntityType.getEnum(entityType);
             Entity entity = EntityUtil.getEntity(type, entityName);
             if (entity != null && entity.getACL() != null) {
                 final String aclOwner = entity.getACL().getOwner();