View Javadoc

1   package com.atlassian.plugin.predicate;
2   
3   import com.atlassian.plugin.ModuleDescriptor;
4   import org.apache.commons.collections.CollectionUtils;
5   
6   import java.util.Arrays;
7   import java.util.Collection;
8   import java.util.Collections;
9   
10  import org.apache.commons.collections.Predicate;
11  
12  /**
13   * A {@link ModuleDescriptorPredicate} that matches modules for which their descriptor is an instance of one of the given {@link Class}.
14   */
15  public class ModuleDescriptorOfClassPredicate implements ModuleDescriptorPredicate
16  {
17      private final Collection moduleDescriptorClasses;
18  
19      public ModuleDescriptorOfClassPredicate(final Class moduleDescriptorClass)
20      {
21          moduleDescriptorClasses = Collections.singleton(moduleDescriptorClass);
22      }
23  
24      /**
25       * @throws IllegalArgumentException if the moduleDescriptorClasses is <code>null</code>
26       */
27      public ModuleDescriptorOfClassPredicate(final Class[] 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 moduleDescriptor)
37      {
38          return moduleDescriptor != null && CollectionUtils.exists(moduleDescriptorClasses, new Predicate()
39          {
40              public boolean evaluate(Object object)
41              {
42                  return object != null && ((Class) object).isInstance(moduleDescriptor);
43              }
44          });
45      }
46  }