1 package com.atlassian.plugin.predicate;
2
3 import com.atlassian.plugin.ModuleDescriptor;
4
5 import org.apache.commons.collections.CollectionUtils;
6 import org.apache.commons.collections.Predicate;
7
8 import java.util.Arrays;
9 import java.util.Collection;
10 import java.util.Collections;
11
12
13
14
15 public class ModuleDescriptorOfClassPredicate<T> implements ModuleDescriptorPredicate<T>
16 {
17 private final Collection<Class<? extends ModuleDescriptor<? extends T>>> moduleDescriptorClasses;
18
19 public ModuleDescriptorOfClassPredicate(final Class<? extends ModuleDescriptor<? extends T>> moduleDescriptorClass)
20 {
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 {
29 if (moduleDescriptorClasses == null)
30 {
31 throw new IllegalArgumentException("Module descriptor classes array should not be null when constructing ModuleOfClassPredicate!");
32 }
33 this.moduleDescriptorClasses = Arrays.asList(moduleDescriptorClasses);
34 }
35
36 public boolean matches(final ModuleDescriptor<? extends T> moduleDescriptor)
37 {
38 return (moduleDescriptor != null) && CollectionUtils.exists(moduleDescriptorClasses, new Predicate()
39 {
40 public boolean evaluate(final Object object)
41 {
42 return (object != null) && ((Class<?>) object).isInstance(moduleDescriptor);
43 }
44 });
45 }
46 }