Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ private boolean acceptedByFiler(Map<ID, R> cachedResourceMap, Map<ID, R> newReso
if (onAddFilter != null || genericFilter != null) {
var anyAddAccepted =
addedResources.values().stream()
.anyMatch(r -> acceptedByGenericFiler(r) && onAddFilter.accept(r));
.anyMatch(r -> acceptedByGenericFiler(r) && acceptedByOnAddFilter(r));
if (anyAddAccepted) {
return true;
}
Expand All @@ -176,7 +176,7 @@ private boolean acceptedByFiler(Map<ID, R> cachedResourceMap, Map<ID, R> newReso
if (onDeleteFilter != null || genericFilter != null) {
var anyDeleteAccepted =
deletedResource.values().stream()
.anyMatch(r -> acceptedByGenericFiler(r) && onDeleteFilter.accept(r, false));
.anyMatch(r -> acceptedByGenericFiler(r) && acceptedByOnDeleteFilter(r));
if (anyDeleteAccepted) {
return true;
}
Expand All @@ -197,11 +197,23 @@ private boolean acceptedByFiler(Map<ID, R> cachedResourceMap, Map<ID, R> newReso
entry -> {
var newResource = newResourcesMap.get(entry.getKey());
return acceptedByGenericFiler(newResource)
&& onUpdateFilter.accept(newResource, entry.getValue());
&& acceptedByOnUpdateFilter(newResource, entry.getValue());
});
} else return !possibleUpdatedResources.isEmpty();
}

private boolean acceptedByOnAddFilter(R resource) {
return onAddFilter == null || onAddFilter.accept(resource);
}

private boolean acceptedByOnDeleteFilter(R resource) {
return onDeleteFilter == null || onDeleteFilter.accept(resource, false);
}

private boolean acceptedByOnUpdateFilter(R newResource, R oldResource) {
return onUpdateFilter == null || onUpdateFilter.accept(newResource, oldResource);
}

private boolean acceptedByGenericFiler(R resource) {
return genericFilter == null || genericFilter.accept(resource);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,43 @@ void genericFilteringEvents() {
verify(eventHandler, times(0)).handleEvent(any());
}

@Test
void onlyGenericFilterSetDoesNotFailOnAdd() {
var eventSource = new TestExternalCachingEventSource();
eventSource.setGenericFilter(res -> true);
setUpSource(eventSource);

source.handleResources(primaryID1(), Set.of(testResource1()));

verify(eventHandler, times(1)).handleEvent(any());
}

@Test
void onlyGenericFilterSetDoesNotFailOnDelete() {
var eventSource = new TestExternalCachingEventSource();
eventSource.setGenericFilter(res -> true);
setUpSource(eventSource);

source.handleResources(primaryID1(), Set.of(testResource1()));
source.handleResources(primaryID1(), Set.of());

verify(eventHandler, times(2)).handleEvent(any());
}

@Test
void onlyGenericFilterSetDoesNotFailOnUpdate() {
var eventSource = new TestExternalCachingEventSource();
eventSource.setGenericFilter(res -> true);
setUpSource(eventSource);

source.handleResources(primaryID1(), Set.of(testResource1()));
var changed = testResource1();
changed.setValue("changedValue");
source.handleResources(primaryID1(), Set.of(changed));

verify(eventHandler, times(2)).handleEvent(any());
}

public static class TestExternalCachingEventSource
extends ExternalResourceCachingEventSource<SampleExternalResource, HasMetadata, String> {
public TestExternalCachingEventSource() {
Expand Down
Loading