45
45
* callbacks. The following resource types are supported by this extension:
46
46
* <ul>
47
47
* <li>{@link Jedis} (singleton)</li>
48
- * <li>{@link JediCluster } (singleton)</li>
48
+ * <li>{@link JedisCluster } (singleton)</li>
49
49
* </ul>
50
50
*
51
51
* <pre class="code">
66
66
* is managed by this extension.
67
67
*
68
68
* @author Mark Paluch
69
+ * @author John Blum
69
70
* @see ParameterResolver
70
71
* @see BeforeEachCallback
71
72
*/
@@ -86,18 +87,14 @@ public boolean supportsParameter(ParameterContext parameterContext, ExtensionCon
86
87
}
87
88
88
89
/**
89
- * Attempt to resolve the {@code requestedResourceType}.
90
- *
91
- * @param extensionContext
92
- * @param requestedResourceType
93
- * @param <T>
94
- * @return
90
+ * Attempt to resolve the {@link Class requestedResourceType}.
95
91
*/
92
+ @ SuppressWarnings ("unchecked" )
96
93
public <T > T resolve (ExtensionContext extensionContext , Class <T > requestedResourceType ) {
97
94
98
95
ExtensionContext .Store store = getStore (extensionContext );
99
96
100
- return (T ) store .getOrComputeIfAbsent (requestedResourceType , it -> findSupplier (requestedResourceType ). get ( ));
97
+ return (T ) store .getOrComputeIfAbsent (requestedResourceType , it -> doGetInstance (requestedResourceType ));
101
98
}
102
99
103
100
@ Override
@@ -111,6 +108,10 @@ public Object resolveParameter(ParameterContext parameterContext, ExtensionConte
111
108
return store .getOrComputeIfAbsent (parameter .getType (), it -> doGetInstance (parameterizedType ));
112
109
}
113
110
111
+ private Object doGetInstance (Type parameterizedType ) {
112
+ return findSupplier (parameterizedType ).get ();
113
+ }
114
+
114
115
@ SuppressWarnings ("unchecked" )
115
116
private static Supplier <Object > findSupplier (Type type ) {
116
117
@@ -120,30 +121,26 @@ private static Supplier<Object> findSupplier(Type type) {
120
121
121
122
ResolvableType providedType = ResolvableType .forType (it .getClass ()).as (Supplier .class ).getGeneric (0 );
122
123
123
- if (requested .isAssignableFrom (providedType )) {
124
- return true ;
125
- }
126
- return false ;
124
+ return requested .isAssignableFrom (providedType );
125
+
127
126
}).findFirst ().orElseThrow (() -> new NoSuchElementException ("Cannot find a factory for " + type ));
128
127
129
128
return (Supplier ) supplier ;
130
129
}
131
130
132
- private Object doGetInstance (Type parameterizedType ) {
133
- return findSupplier (parameterizedType ).get ();
134
- }
135
-
136
131
private ExtensionContext .Store getStore (ExtensionContext extensionContext ) {
137
132
return extensionContext .getStore (NAMESPACE );
138
133
}
139
134
140
135
static class ResourceFunction {
141
136
137
+ final Function <Object , Object > function ;
138
+
142
139
final ResolvableType dependsOn ;
143
140
final ResolvableType provides ;
144
- final Function <Object , Object > function ;
145
141
146
142
public ResourceFunction (ResolvableType dependsOn , ResolvableType provides , Function <?, ?> function ) {
143
+
147
144
this .dependsOn = dependsOn ;
148
145
this .provides = provides ;
149
146
this .function = (Function ) function ;
@@ -155,9 +152,11 @@ enum JedisSupplier implements Supplier<Jedis> {
155
152
INSTANCE ;
156
153
157
154
final Lazy <Jedis > lazy = Lazy .of (() -> {
155
+
158
156
Jedis client = new Jedis (SettingsUtils .getHost (), SettingsUtils .getPort ());
159
157
160
- ShutdownQueue .INSTANCE .register (client );
158
+ ShutdownQueue .register (client );
159
+
161
160
return client ;
162
161
});
163
162
@@ -172,9 +171,13 @@ enum JedisClusterSupplier implements Supplier<JedisCluster> {
172
171
INSTANCE ;
173
172
174
173
final Lazy <JedisCluster > lazy = Lazy .of (() -> {
175
- JedisCluster client = new JedisCluster (new HostAndPort (SettingsUtils .getHost (), SettingsUtils .getClusterPort ()));
176
174
177
- ShutdownQueue .INSTANCE .register (client );
175
+ HostAndPort hostAndPort = new HostAndPort (SettingsUtils .getHost (), SettingsUtils .getClusterPort ());
176
+
177
+ JedisCluster client = new JedisCluster (hostAndPort );
178
+
179
+ ShutdownQueue .register (client );
180
+
178
181
return client ;
179
182
});
180
183
@@ -183,5 +186,4 @@ public JedisCluster get() {
183
186
return lazy .get ();
184
187
}
185
188
}
186
-
187
189
}
0 commit comments