diff --git a/src/main/java/org/springframework/data/gemfire/support/CompositeTypeFilter.java b/src/main/java/org/springframework/data/gemfire/support/CompositeTypeFilter.java index 0f95ec8a..1c263348 100644 --- a/src/main/java/org/springframework/data/gemfire/support/CompositeTypeFilter.java +++ b/src/main/java/org/springframework/data/gemfire/support/CompositeTypeFilter.java @@ -161,7 +161,9 @@ public interface CompositeTypeFilter extends TypeFilter { Assert.notNull(typeFilter, "TypeFilter to wrap must not be null"); - return (metadataReader, metadataReaderFactory) -> typeFilter.match(metadataReader, metadataReaderFactory); + return typeFilter instanceof CompositeTypeFilter + ? (CompositeTypeFilter) typeFilter + : (metadataReader, metadataReaderFactory) -> typeFilter.match(metadataReader, metadataReaderFactory); } /** diff --git a/src/test/java/org/springframework/data/gemfire/support/CompositeTypeFilterUnitTests.java b/src/test/java/org/springframework/data/gemfire/support/CompositeTypeFilterUnitTests.java index 32644c72..68965046 100644 --- a/src/test/java/org/springframework/data/gemfire/support/CompositeTypeFilterUnitTests.java +++ b/src/test/java/org/springframework/data/gemfire/support/CompositeTypeFilterUnitTests.java @@ -68,6 +68,14 @@ public class CompositeTypeFilterUnitTests { assertThat(CompositeTypeFilter.DENY.match(mockMetadataReader, mockMetadataReaderFactory)).isFalse(); } + @Test + public void ofWillNotWrapExistingCompositeTypeFilter() { + + CompositeTypeFilter mockCompositeTypeFilter = mock(CompositeTypeFilter.class); + + assertThat(CompositeTypeFilter.of(mockCompositeTypeFilter)).isSameAs(mockCompositeTypeFilter); + } + @Test public void ofWrapsExistingTypeFilter() {