View Javadoc
1   package com.atlassian.plugin.predicate;
2   
3   import com.atlassian.plugin.ModuleDescriptor;
4   
5   import static com.atlassian.plugin.util.Assertions.notNull;
6   
7   /**
8    * A {@link ModuleDescriptorPredicate} that matches modules that are is an instance of the given {@link Class}.
9    */
10  public class ModuleOfClassPredicate<T> implements ModuleDescriptorPredicate<T> {
11      private final Class<T> moduleClass;
12  
13      /**
14       * @throws IllegalArgumentException if the moduleClass is <code>null</code>
15       */
16      public ModuleOfClassPredicate(final Class<T> moduleClass) {
17          this.moduleClass = notNull("moduleClass", moduleClass);
18      }
19  
20      public boolean matches(final ModuleDescriptor<? extends T> moduleDescriptor) {
21          if (moduleDescriptor != null) {
22              final Class<? extends T> moduleClassInDescriptor = moduleDescriptor.getModuleClass();
23              return (moduleClassInDescriptor != null) && moduleClass.isAssignableFrom(moduleClassInDescriptor);
24          }
25  
26          return false;
27      }
28  }