Skip to content
Merged
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 -> acceptedByGenericFilter(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 -> acceptedByGenericFilter(r) && acceptedByOnDeleteFilter(r));
if (anyDeleteAccepted) {
return true;
}
Expand All @@ -196,13 +196,25 @@ private boolean acceptedByFiler(Map<ID, R> cachedResourceMap, Map<ID, R> newReso
.anyMatch(
entry -> {
var newResource = newResourcesMap.get(entry.getKey());
return acceptedByGenericFiler(newResource)
&& onUpdateFilter.accept(newResource, entry.getValue());
return acceptedByGenericFilter(newResource)
&& acceptedByOnUpdateFilter(newResource, entry.getValue());
});
} else return !possibleUpdatedResources.isEmpty();
}

private boolean acceptedByGenericFiler(R resource) {
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 acceptedByGenericFilter(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