1 package com.atlassian.plugin.predicate;
2
3 import com.atlassian.plugin.ModuleDescriptor;
4 import org.apache.commons.collections.CollectionUtils;
5 import org.apache.commons.collections.Predicate;
6
7 import java.util.Arrays;
8 import java.util.Collection;
9 import java.util.Collections;
10
11 import static com.atlassian.plugin.util.Assertions.notNull;
12
13
14
15
16
17 public class ModuleDescriptorOfClassPredicate<T> implements ModuleDescriptorPredicate<T> {
18 private final Collection<Class<? extends ModuleDescriptor<? extends T>>> moduleDescriptorClasses;
19
20 public ModuleDescriptorOfClassPredicate(final Class<? extends ModuleDescriptor<? extends T>> moduleDescriptorClass) {
21 moduleDescriptorClasses = Collections.<Class<? extends ModuleDescriptor<? extends T>>>singleton(moduleDescriptorClass);
22 }
23
24
25
26
27 public ModuleDescriptorOfClassPredicate(final Class<? extends ModuleDescriptor<? extends T>>[] moduleDescriptorClasses) {
28 notNull("moduleDescriptorClasses", moduleDescriptorClasses);
29 this.moduleDescriptorClasses = Arrays.asList(moduleDescriptorClasses);
30 }
31
32 public boolean matches(final ModuleDescriptor<? extends T> moduleDescriptor) {
33 return (moduleDescriptor != null) && CollectionUtils.exists(moduleDescriptorClasses, new Predicate() {
34 public boolean evaluate(final Object object) {
35 return (object != null) && ((Class<?>) object).isInstance(moduleDescriptor);
36 }
37 });
38 }
39 }