diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/control/treetableview/.ratings b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/control/treetableview/.ratings
index 8968633b32b9581e72c0bba01c9fb48260501d7a..13a4027b5c7770b83711388cb6334f55668fdd98 100644
--- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/control/treetableview/.ratings
+++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/control/treetableview/.ratings
@@ -1,7 +1,7 @@
 DynamicList.java 786300e2e914826da239329d190abea1710478ea GREEN
 DynamicListContentProvider.java 817cba44f246a361207a88ef9a4e1869215803f7 GREEN
 DynamicStreamContentProvider.java f46e91400609cba54793dd240be0fe2aa0d5cced GREEN
-DynamicTreeContentProviderBase.java 0f6e0a6894752d135847608bc45efa504972bb28 GREEN
+DynamicTreeContentProviderBase.java e1c46ba3eb7c74c114c8528608e3e6a2ee5c2041 YELLOW
 DynamicTreeItem.java 7486071d20e896d6ca9a9101bf105caccf3656d0 GREEN
 DynamicTreeItemBase.java d883066ecc181120302ca32f328538de7a45b093 GREEN
 DynamicTreeTableUIProviderBase.java 1078bd28a6bce5a5a2c60500f2aa1d8b1fdd341b GREEN
diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/control/treetableview/DynamicTreeContentProviderBase.java b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/control/treetableview/DynamicTreeContentProviderBase.java
index 0f6e0a6894752d135847608bc45efa504972bb28..e1c46ba3eb7c74c114c8528608e3e6a2ee5c2041 100644
--- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/control/treetableview/DynamicTreeContentProviderBase.java
+++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/control/treetableview/DynamicTreeContentProviderBase.java
@@ -47,17 +47,14 @@ public abstract class DynamicTreeContentProviderBase<T> {
 	}
 
 	/**
-	 * Returns the filter predicate for the given filter value. The default checks if the object's
-	 * toString() contains the filter value. Sub-classes may override or implement
-	 * {@link #filter(Object, String)}.
+	 * Creates a filter predicate for the filter expression returned by
+	 * {@link #getFilterExpression()}. To customize the filter, subclasses may override
+	 * {@link #getFilterExpression()} and {@link #filter(Object, String)}.
 	 */
-	protected Predicate<T> getFilterPredicate() {
-		if(getFilterExpression() != null && !"".equals(getFilterExpression().trim())) {
-			return (o) -> {
-				return filter(o, getFilterExpression());
-			};
-		}
-		return (o) -> true;
+	private Predicate<T> getFilterPredicate() {
+		return (o) -> {
+			return filter(o, getFilterExpression());
+		};
 	}
 
 	/** Sub-classes may override to implement simple filter behavior. */
@@ -65,7 +62,7 @@ public abstract class DynamicTreeContentProviderBase<T> {
 		if(element == null) {
 			return false;
 		}
-		if(filterValue == null || "".equals(filterValue)) {
+		if(filterValue == null || "".equals(filterValue.trim())) {
 			return true;
 		}
 		return element.toString().toLowerCase().contains(filterValue.toLowerCase());