From 4583d07cd7094e2b987df6350b4b19eb4c01c210 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Patrik=20Lindstr=C3=B6m?= Date: Fri, 28 Jun 2013 14:56:21 +0300 Subject: [PATCH] Fix NPE in Like.java (#10167) Change-Id: I041fbc5c3cda08d3cf3453cefc5f044c63dbe9bb --- .../src/com/vaadin/data/util/filter/Like.java | 5 ++ .../data/util/filter/LikeFilterTest.java | 46 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 server/tests/src/com/vaadin/data/util/filter/LikeFilterTest.java diff --git a/server/src/com/vaadin/data/util/filter/Like.java b/server/src/com/vaadin/data/util/filter/Like.java index 91230bb1f1..4c15564105 100644 --- a/server/src/com/vaadin/data/util/filter/Like.java +++ b/server/src/com/vaadin/data/util/filter/Like.java @@ -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 index 0000000000..15ad85e10d --- /dev/null +++ b/server/tests/src/com/vaadin/data/util/filter/LikeFilterTest.java @@ -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 { + + 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("a")); + item2.addItemProperty("value", new ObjectProperty("b")); + item3.addItemProperty("value", new ObjectProperty(null, + String.class)); + + Assert.assertTrue(filter.passesFilter(null, item1)); + Assert.assertFalse(filter.passesFilter(null, item2)); + Assert.assertFalse(filter.passesFilter(null, item3)); + + } + +} -- 2.39.5