Repository: falcon
Updated Branches:
  refs/heads/master 8b352fcfa -> 1ebf025ba


FALCON-1490 Fixing inconsistencies in filterBy behavior (Narayan Periwal via 
Balu Vellanki)


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

Branch: refs/heads/master
Commit: 1ebf025ba1f2512e1fab75edc2908123dd548657
Parents: 8b352fc
Author: bvellanki <[email protected]>
Authored: Tue Dec 1 12:45:17 2015 -0800
Committer: bvellanki <[email protected]>
Committed: Tue Dec 1 12:45:17 2015 -0800

----------------------------------------------------------------------
 CHANGES.txt                                     |  2 ++
 .../falcon/resource/AbstractEntityManager.java  | 34 ++++++++++++++++++--
 .../falcon/resource/EntityManagerTest.java      | 26 +++++++++++++++
 3 files changed, 60 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/falcon/blob/1ebf025b/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 2f3787a..cdd9eb6 100755
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -9,6 +9,8 @@ Trunk (Unreleased)
   INCOMPATIBLE CHANGES
 
   NEW FEATURES
+    FALCON-1490 Fixing inconsistencies in filterBy behavior (Narayan Periwal 
via Balu Vellanki)
+
     FALCON-1233 Support co-existence of Oozie scheduler (coord) and Falcon 
native scheduler (Pallavi Rao)
 
     FALCON-1596 Spring shell based CLI for Falcon

http://git-wip-us.apache.org/repos/asf/falcon/blob/1ebf025b/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 5571326..2f97c0d 100644
--- a/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java
+++ b/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java
@@ -890,6 +890,36 @@ public abstract class AbstractEntityManager {
         return false;
     }
 
+    private boolean isFilteredByPipelines(List<String> filterPipelinesList, 
List<String> pipelines) {
+        if (filterPipelinesList.isEmpty()) {
+            return false;
+        } else if (pipelines.isEmpty()) {
+            return true;
+        }
+
+        for (String pipeline : filterPipelinesList) {
+            if (pipelines.contains(pipeline)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private boolean isFilteredByClusters(List<String> filterClustersList, 
Set<String> clusters) {
+        if (filterClustersList.isEmpty()) {
+            return false;
+        } else if (clusters.isEmpty()) {
+            return true;
+        }
+
+        for (String cluster : filterClustersList) {
+            if (clusters.contains(cluster)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
     private boolean isFilteredByFields(Entity entity, Map<String, 
List<String>> filterKeyVals) {
         if (filterKeyVals.isEmpty()) {
             return false;
@@ -924,10 +954,10 @@ public abstract class AbstractEntityManager {
                         "Invalid filterBy key for non process entities " + 
pair.getKey(),
                         Response.Status.BAD_REQUEST);
             }
-            return 
!EntityUtil.getPipelines(entity).contains(pair.getValue().get(0));
+            return isFilteredByPipelines(pair.getValue(), 
EntityUtil.getPipelines(entity));
 
         case CLUSTER:
-            return 
!EntityUtil.getClustersDefined(entity).contains(pair.getValue().get(0));
+            return isFilteredByClusters(pair.getValue(), 
EntityUtil.getClustersDefined(entity));
 
         case TAGS:
             return isFilteredByTags(getFilterByTags(pair.getValue()), 
EntityUtil.getTags(entity));

http://git-wip-us.apache.org/repos/asf/falcon/blob/1ebf025b/prism/src/test/java/org/apache/falcon/resource/EntityManagerTest.java
----------------------------------------------------------------------
diff --git 
a/prism/src/test/java/org/apache/falcon/resource/EntityManagerTest.java 
b/prism/src/test/java/org/apache/falcon/resource/EntityManagerTest.java
index 5fabcf3..99a537d 100644
--- a/prism/src/test/java/org/apache/falcon/resource/EntityManagerTest.java
+++ b/prism/src/test/java/org/apache/falcon/resource/EntityManagerTest.java
@@ -196,6 +196,32 @@ public class EntityManagerTest extends 
AbstractEntityManager {
     }
 
     @Test
+    public void testGetEntityListPipelinesFilterBy() throws Exception {
+        Entity process2 = buildProcess("processAuthUserPipelinesFilterBy", 
System.getProperty("user.name"), "",
+                "USER-DATA1");
+        configStore.publish(EntityType.PROCESS, process2);
+
+        EntityList entityList = this.getEntityList("", "", "", "process", "",
+                "PIPELINES:USER-DATA2,PIPELINES:USER-DATA1", "", "asc", 0, 10, 
"");
+        Assert.assertNotNull(entityList.getElements());
+        Assert.assertEquals(entityList.getElements().length, 1);
+        Assert.assertNotNull(entityList.getElements()[0].pipeline);
+        Assert.assertEquals(entityList.getElements()[0].pipeline.get(0), 
"USER-DATA1");
+    }
+
+    @Test
+    public void testGetEntityListClustersFilterBy() throws Exception {
+        Entity process2 = buildProcess("processClusters1", 
System.getProperty("user.name"), "", "");
+        configStore.publish(EntityType.PROCESS, process2);
+
+        EntityList entityList = this.getEntityList("", "", "", "process", "",
+                
"CLUSTER:clusterprocessClusters2,CLUSTER:clusterprocessClusters1", "", "asc", 
0, 10, "");
+        Assert.assertNotNull(entityList.getElements());
+        Assert.assertEquals(entityList.getElements().length, 1);
+        Assert.assertEquals(entityList.getElements()[0].name, 
"processClusters1");
+    }
+
+    @Test
     public void testNumberOfResults() {
         Assert.assertEquals(getRequiredNumberOfResults(10000, 0, 10000), 
10000);
         Assert.assertEquals(getRequiredNumberOfResults(10000, 0, 4000), 4000);

Reply via email to