]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix NPE in Like.java (#10167)
authorPatrik Lindström <patrik@vaadin.com>
Fri, 28 Jun 2013 11:56:21 +0000 (14:56 +0300)
committerVaadin Code Review <review@vaadin.com>
Fri, 28 Jun 2013 13:50:24 +0000 (13:50 +0000)
Change-Id: I041fbc5c3cda08d3cf3453cefc5f044c63dbe9bb

server/src/com/vaadin/data/util/filter/Like.java
server/tests/src/com/vaadin/data/util/filter/LikeFilterTest.java [new file with mode: 0644]

index 91230bb1f1c8ace851facc345fb9d0ce97d22d99..4c155641053cb67dc2aae6ce502173eda82f9269 100644 (file)
@@ -60,6 +60,11 @@ public class Like implements Filter {
         String colValue = (String) item.getItemProperty(getPropertyId())
                 .getValue();
 
+        // Fix issue #10167 - avoid NPE and drop null property values
+        if (colValue == null) {
+            return false;
+        }
+
         String pattern = getValue().replace("%", ".*");
         if (isCaseSensitive()) {
             return colValue.matches(pattern);
diff --git a/server/tests/src/com/vaadin/data/util/filter/LikeFilterTest.java b/server/tests/src/com/vaadin/data/util/filter/LikeFilterTest.java
new file mode 100644 (file)
index 0000000..15ad85e
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2000-2013 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.vaadin.data.util.filter;
+
+import junit.framework.Assert;
+
+import com.vaadin.data.Item;
+import com.vaadin.data.util.ObjectProperty;
+import com.vaadin.data.util.PropertysetItem;
+
+public class LikeFilterTest extends AbstractFilterTest<Like> {
+
+    protected Item item1 = new PropertysetItem();
+    protected Item item2 = new PropertysetItem();
+    protected Item item3 = new PropertysetItem();
+
+    public void testLikeWithNulls() {
+
+        Like filter = new Like("value", "a");
+
+        item1.addItemProperty("value", new ObjectProperty<String>("a"));
+        item2.addItemProperty("value", new ObjectProperty<String>("b"));
+        item3.addItemProperty("value", new ObjectProperty<String>(null,
+                String.class));
+
+        Assert.assertTrue(filter.passesFilter(null, item1));
+        Assert.assertFalse(filter.passesFilter(null, item2));
+        Assert.assertFalse(filter.passesFilter(null, item3));
+
+    }
+
+}