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