diff options
author | Patrik Lindström <patrik@vaadin.com> | 2013-06-28 14:56:21 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2013-06-28 13:50:24 +0000 |
commit | 4583d07cd7094e2b987df6350b4b19eb4c01c210 (patch) | |
tree | 6c0cb714fb2618b6b3d48ff8066e0c1cdb09df4c /server | |
parent | 414e3bf1c93f7e80b94ec2f0355e03c27412730a (diff) | |
download | vaadin-framework-4583d07cd7094e2b987df6350b4b19eb4c01c210.tar.gz vaadin-framework-4583d07cd7094e2b987df6350b4b19eb4c01c210.zip |
Fix NPE in Like.java (#10167)
Change-Id: I041fbc5c3cda08d3cf3453cefc5f044c63dbe9bb
Diffstat (limited to 'server')
-rw-r--r-- | server/src/com/vaadin/data/util/filter/Like.java | 5 | ||||
-rw-r--r-- | server/tests/src/com/vaadin/data/util/filter/LikeFilterTest.java | 46 |
2 files changed, 51 insertions, 0 deletions
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<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)); + + } + +} |