1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.grouplens.grapht.reflect;
21
22 import java.lang.annotation.Annotation;
23
24
25
26
27
28
29
30 public class MockDesire implements Desire {
31 private static final long serialVersionUID = 1L;
32
33 private final Annotation qualifier;
34 private final Satisfaction satisfaction;
35 private final Class<?> desiredType;
36
37 public MockDesire() {
38 this(null);
39 }
40
41 public MockDesire(Satisfaction satisfaction) {
42 this(satisfaction, null);
43 }
44
45 public MockDesire(Satisfaction satisfaction, Annotation qualifier) {
46 this((satisfaction == null ? Void.class : satisfaction.getErasedType()),
47 satisfaction, qualifier);
48 }
49
50 public MockDesire(Class<?> desiredType, Satisfaction satisfaction, Annotation qualifier) {
51 this.desiredType = desiredType;
52 this.satisfaction = satisfaction;
53 this.qualifier = qualifier;
54 }
55
56 @Override
57 public boolean isInstantiable() {
58 return satisfaction != null;
59 }
60
61 @Override
62 public Satisfaction getSatisfaction() {
63 return satisfaction;
64 }
65
66 @Override
67 public Class<?> getDesiredType() {
68 return desiredType;
69 }
70
71 @Override
72 public InjectionPoint getInjectionPoint() {
73 return Desires.createInjectionPoint(qualifier, getDesiredType(), false);
74 }
75
76 @Override
77 public Desire restrict(Class<?> type) {
78 return new MockDesire(type, satisfaction, qualifier);
79 }
80
81 @Override
82 public Desire restrict(Satisfaction satisfaction) {
83 return new MockDesire(satisfaction.getErasedType(), satisfaction, qualifier);
84 }
85
86 @Override
87 public String toString() {
88 StringBuilder sb = new StringBuilder();
89 sb.append("mock desire for ")
90 .append(desiredType);
91 if (qualifier != null) {
92 sb.append(" with qualifier ")
93 .append(qualifier);
94 }
95 if (satisfaction != null) {
96 sb.append(" (satisfied by ")
97 .append(satisfaction)
98 .append(")");
99 }
100 return sb.toString();
101 }
102 }