1 package com.atlassian.plugin.predicate;
2
3 import com.atlassian.plugin.ModuleDescriptor;
4
5 import java.util.Arrays;
6 import java.util.Collection;
7 import java.util.Collections;
8 import java.util.function.Predicate;
9
10 import static com.atlassian.plugin.util.Assertions.notNull;
11
12
13
14
15 public class ModuleDescriptorOfClassPredicate<T> implements Predicate<ModuleDescriptor<T>> {
16 private final Collection<Class<? extends ModuleDescriptor<? extends T>>> moduleDescriptorClasses;
17
18 public ModuleDescriptorOfClassPredicate(final Class<? extends ModuleDescriptor<? extends T>> moduleDescriptorClass) {
19 moduleDescriptorClasses = Collections.singleton(moduleDescriptorClass);
20 }
21
22
23
24
25 public ModuleDescriptorOfClassPredicate(final Class<? extends ModuleDescriptor<? extends T>>[] moduleDescriptorClasses) {
26 notNull("moduleDescriptorClasses", moduleDescriptorClasses);
27 this.moduleDescriptorClasses = Arrays.asList(moduleDescriptorClasses);
28 }
29
30 public boolean test(final ModuleDescriptor<T> moduleDescriptor) {
31 return moduleDescriptor != null && moduleDescriptorClasses != null &&
32 moduleDescriptorClasses.stream().anyMatch(descriptorClass -> descriptorClass != null && descriptorClass.isInstance(moduleDescriptor));
33 }
34 }