View Javadoc

1   /*
2    * Grapht, an open source dependency injector.
3    * Copyright 2014-2015 various contributors (see CONTRIBUTORS.txt)
4    * Copyright 2010-2014 Regents of the University of Minnesota
5    *
6    * This program is free software; you can redistribute it and/or modify
7    * it under the terms of the GNU Lesser General Public License as
8    * published by the Free Software Foundation; either version 2.1 of the
9    * License, or (at your option) any later version.
10   *
11   * This program is distributed in the hope that it will be useful, but WITHOUT
12   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13   * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
14   * details.
15   *
16   * You should have received a copy of the GNU General Public License along with
17   * this program; if not, write to the Free Software Foundation, Inc., 51
18   * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19   */
20  package org.grouplens.grapht.reflect;
21  
22  import java.lang.annotation.Annotation;
23  import java.util.HashSet;
24  import java.util.Set;
25  
26  public class MockQualifierMatcher implements QualifierMatcher {
27      private static final long serialVersionUID = 1L;
28  
29      private Set<Annotation> qualifiers;
30      
31      private MockQualifierMatcher() {
32          qualifiers = null;
33      }
34  
35      public static MockQualifierMatcher any() {
36          return new MockQualifierMatcher();
37      }
38      
39      public static MockQualifierMatcher none() {
40          return match((Annotation) null);
41      }
42  
43      @Override
44      public int getPriority() {
45          return 0;
46      }
47  
48      public static MockQualifierMatcher match(Annotation... qualifiers) {
49          MockQualifierMatcher q = new MockQualifierMatcher();
50          q.qualifiers = new HashSet<Annotation>();
51          for (Annotation m: qualifiers) {
52              q.qualifiers.add(m);
53          }
54          return q;
55      }
56      
57      @Override
58      public int compareTo(QualifierMatcher o) {
59          MockQualifierMatcher mq = (MockQualifierMatcher) o;
60          
61          if (qualifiers == null) {
62              if (mq.qualifiers == null) {
63                  return 0;
64              } else {
65                  return 1;
66              }
67          } else {
68              if (mq.qualifiers == null) {
69                  return -1;
70              } else {
71                  return 0;
72              }
73          }
74      }
75  
76      @Override
77      @Deprecated
78      public boolean matches(Annotation q) {
79          return apply(q);
80      }
81  
82      @Override
83      public boolean apply(Annotation q) {
84          return qualifiers == null || qualifiers.contains(q);
85      }
86  }