You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by tb...@apache.org on 2013/02/25 18:32:40 UTC

svn commit: r1449784 - in /incubator/ambari/trunk: ./ ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/ ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/

Author: tbeerbower
Date: Mon Feb 25 17:32:39 2013
New Revision: 1449784

URL: http://svn.apache.org/r1449784
Log:
AMBARI-1480. Comparison predicate should account for null values.

Modified:
    incubator/ambari/trunk/CHANGES.txt
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/EqualsPredicate.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterEqualsPredicate.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterPredicate.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessEqualsPredicate.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessPredicate.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/EqualsPredicateTest.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/GreaterEqualsPredicateTest.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/GreaterPredicateTest.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/LessEqualsPredicateTest.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/LessPredicateTest.java

Modified: incubator/ambari/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/CHANGES.txt?rev=1449784&r1=1449783&r2=1449784&view=diff
==============================================================================
--- incubator/ambari/trunk/CHANGES.txt (original)
+++ incubator/ambari/trunk/CHANGES.txt Mon Feb 25 17:32:39 2013
@@ -366,6 +366,8 @@ Trunk (unreleased changes):
 
  BUG FIXES
 
+ AMBARI-1480. Comparison predicate should account for null values. (tbeerbower)
+
  AMBARI-1467. UI should block on cluster metric api call before making
  subsequent one. (yusaku)
 

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/EqualsPredicate.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/EqualsPredicate.java?rev=1449784&r1=1449783&r2=1449784&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/EqualsPredicate.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/EqualsPredicate.java Mon Feb 25 17:32:39 2013
@@ -31,8 +31,12 @@ public class EqualsPredicate<T> extends 
 
   @Override
   public boolean evaluate(Resource resource) {
-    Object propertyValue = resource.getPropertyValue(getPropertyId());
-    return propertyValue != null && compareValueTo(propertyValue) == 0;
+    Object propertyValue  = resource.getPropertyValue(getPropertyId());
+    Object predicateValue = getValue();
+
+    return predicateValue == null ?
+        propertyValue == null :
+        propertyValue != null && compareValueTo(propertyValue) == 0;
   }
 
   @Override

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterEqualsPredicate.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterEqualsPredicate.java?rev=1449784&r1=1449783&r2=1449784&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterEqualsPredicate.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterEqualsPredicate.java Mon Feb 25 17:32:39 2013
@@ -25,8 +25,19 @@ import org.apache.ambari.server.controll
  */
 public class GreaterEqualsPredicate<T> extends ComparisonPredicate<T> {
 
+  /**
+   * Construct a GreaterEqualsPredicate.
+   *
+   * @param propertyId  the property id
+   * @param value       the value
+   *
+   * @throws IllegalArgumentException if the given value is null
+   */
   public GreaterEqualsPredicate(String propertyId, Comparable<T> value) {
     super(propertyId, value);
+    if (value == null) {
+      throw new IllegalArgumentException("Value can't be null.");
+    }
   }
 
   @Override

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterPredicate.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterPredicate.java?rev=1449784&r1=1449783&r2=1449784&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterPredicate.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/GreaterPredicate.java Mon Feb 25 17:32:39 2013
@@ -24,8 +24,19 @@ import org.apache.ambari.server.controll
  */
 public class GreaterPredicate<T> extends ComparisonPredicate<T> {
 
+  /**
+   * Construct a GreaterPredicate.
+   *
+   * @param propertyId  the property id
+   * @param value       the value
+   *
+   * @throws IllegalArgumentException if the given value is null
+   */
   public GreaterPredicate(String propertyId, Comparable<T> value) {
     super(propertyId, value);
+    if (value == null) {
+      throw new IllegalArgumentException("Value can't be null.");
+    }
   }
 
   @Override

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessEqualsPredicate.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessEqualsPredicate.java?rev=1449784&r1=1449783&r2=1449784&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessEqualsPredicate.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessEqualsPredicate.java Mon Feb 25 17:32:39 2013
@@ -25,8 +25,19 @@ import org.apache.ambari.server.controll
  */
 public class LessEqualsPredicate<T> extends ComparisonPredicate<T> {
 
+  /**
+   * Construct a LessEqualsPredicate.
+   *
+   * @param propertyId  the property id
+   * @param value       the value
+   *
+   * @throws IllegalArgumentException if the given value is null
+   */
   public LessEqualsPredicate(String propertyId, Comparable<T> value) {
     super(propertyId, value);
+    if (value == null) {
+      throw new IllegalArgumentException("Value can't be null.");
+    }
   }
 
   @Override

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessPredicate.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessPredicate.java?rev=1449784&r1=1449783&r2=1449784&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessPredicate.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/predicate/LessPredicate.java Mon Feb 25 17:32:39 2013
@@ -24,8 +24,19 @@ import org.apache.ambari.server.controll
  */
 public class LessPredicate<T> extends ComparisonPredicate<T> {
 
+  /**
+   * Construct a LessPredicate.
+   *
+   * @param propertyId  the property id
+   * @param value       the value
+   *
+   * @throws IllegalArgumentException if the given value is null
+   */
   public LessPredicate(String propertyId, Comparable<T> value) {
     super(propertyId, value);
+    if (value == null) {
+      throw new IllegalArgumentException("Value can't be null.");
+    }
   }
 
   @Override

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/EqualsPredicateTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/EqualsPredicateTest.java?rev=1449784&r1=1449783&r2=1449784&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/EqualsPredicateTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/EqualsPredicateTest.java Mon Feb 25 17:32:39 2013
@@ -27,7 +27,7 @@ import org.junit.Test;
 import java.util.Set;
 
 /**
- *
+ * Equals predicate tests.
  */
 public class EqualsPredicateTest {
 
@@ -51,6 +51,19 @@ public class EqualsPredicateTest {
   }
 
   @Test
+  public void testApplyNullValue() {
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+    String propertyId = PropertyHelper.getPropertyId("category1", "foo");
+    Predicate predicate = new EqualsPredicate<String>(propertyId, null);
+
+    resource.setProperty(propertyId, "monkey");
+    Assert.assertFalse(predicate.evaluate(resource));
+
+    resource.setProperty(propertyId, null);
+    Assert.assertTrue(predicate.evaluate(resource));
+  }
+
+  @Test
   public void testGetProperties() {
     String propertyId = PropertyHelper.getPropertyId("category1", "foo");
     EqualsPredicate predicate = new EqualsPredicate<String>(propertyId, "bar");

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/GreaterEqualsPredicateTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/GreaterEqualsPredicateTest.java?rev=1449784&r1=1449783&r2=1449784&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/GreaterEqualsPredicateTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/GreaterEqualsPredicateTest.java Mon Feb 25 17:32:39 2013
@@ -48,6 +48,16 @@ public class GreaterEqualsPredicateTest 
   }
 
   @Test
+  public void testNullValue() {
+    try {
+      new GreaterEqualsPredicate<Integer>("category/foo", null);
+      Assert.fail("Expected IllegalArgumentException for null value.");
+    } catch (IllegalArgumentException e) {
+      // expected
+    }
+  }
+
+  @Test
   public void testGetProperties() {
     String propertyId = PropertyHelper.getPropertyId("category1", "foo");
     GreaterEqualsPredicate predicate = new GreaterEqualsPredicate<Integer>(propertyId, 10);

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/GreaterPredicateTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/GreaterPredicateTest.java?rev=1449784&r1=1449783&r2=1449784&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/GreaterPredicateTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/GreaterPredicateTest.java Mon Feb 25 17:32:39 2013
@@ -48,6 +48,16 @@ public class GreaterPredicateTest {
   }
 
   @Test
+  public void testNullValue() {
+    try {
+      new GreaterPredicate<Integer>("category/foo", null);
+      Assert.fail("Expected IllegalArgumentException for null value.");
+    } catch (IllegalArgumentException e) {
+      // expected
+    }
+  }
+
+  @Test
   public void testGetProperties() {
     String propertyId = PropertyHelper.getPropertyId("category1", "foo");
     GreaterPredicate predicate = new GreaterPredicate<Integer>(propertyId, 10);

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/LessEqualsPredicateTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/LessEqualsPredicateTest.java?rev=1449784&r1=1449783&r2=1449784&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/LessEqualsPredicateTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/LessEqualsPredicateTest.java Mon Feb 25 17:32:39 2013
@@ -48,6 +48,16 @@ public class LessEqualsPredicateTest {
   }
 
   @Test
+  public void testNullValue() {
+    try {
+      new LessEqualsPredicate<Integer>("category/foo", null);
+      Assert.fail("Expected IllegalArgumentException for null value.");
+    } catch (IllegalArgumentException e) {
+      // expected
+    }
+  }
+
+  @Test
   public void testGetProperties() {
     String propertyId = PropertyHelper.getPropertyId("category1", "foo");
     LessEqualsPredicate predicate = new LessEqualsPredicate<Integer>(propertyId, 10);

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/LessPredicateTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/LessPredicateTest.java?rev=1449784&r1=1449783&r2=1449784&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/LessPredicateTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/predicate/LessPredicateTest.java Mon Feb 25 17:32:39 2013
@@ -48,6 +48,16 @@ public class LessPredicateTest {
   }
 
   @Test
+  public void testNullValue() {
+    try {
+      new LessPredicate<Integer>("category/foo", null);
+      Assert.fail("Expected IllegalArgumentException for null value.");
+    } catch (IllegalArgumentException e) {
+      // expected
+    }
+  }
+
+  @Test
   public void testGetProperties() {
     String propertyId = PropertyHelper.getPropertyId("category1", "foo");
     LessPredicate predicate = new LessPredicate<Integer>(propertyId, 1);