File tree Expand file tree Collapse file tree 5 files changed +57
-1
lines changed
inject-generator/src/main/java/io/avaje/inject/generator
inject-test/src/test/java/org/example/generic Expand file tree Collapse file tree 5 files changed +57
-1
lines changed Original file line number Diff line number Diff line change @@ -189,6 +189,19 @@ private Set<String> importTypes() {
189
189
typeReader .extraImports (importTypes );
190
190
requestParams .addImports (importTypes );
191
191
aspects .extraImports (importTypes );
192
+
193
+ for (MethodReader factoryMethod : factoryMethods ) {
194
+ Set <GenericType > genericTypes = factoryMethod .getGenericTypes ();
195
+ if (!genericTypes .isEmpty ()) {
196
+ importTypes .add (Constants .TYPE );
197
+ importTypes .add (Constants .GENERICTYPE );
198
+ importTypes .add (Constants .PROVIDER );
199
+ for (GenericType genericType : genericTypes ) {
200
+ genericType .addImports (importTypes );
201
+ }
202
+ }
203
+ }
204
+
192
205
return importTypes ;
193
206
}
194
207
Original file line number Diff line number Diff line change 6
6
import javax .lang .model .element .*;
7
7
import javax .lang .model .type .TypeMirror ;
8
8
import java .util .ArrayList ;
9
+ import java .util .Collections ;
9
10
import java .util .List ;
10
11
import java .util .Set ;
11
12
@@ -178,7 +179,7 @@ void addImports(Set<String> importTypes) {
178
179
}
179
180
180
181
Set <GenericType > getGenericTypes () {
181
- return typeReader .getGenericTypes ();
182
+ return typeReader == null ? Collections . emptySet () : typeReader .getGenericTypes ();
182
183
}
183
184
184
185
void buildAddFor (Append writer ) {
Original file line number Diff line number Diff line change
1
+ package org .example .generic ;
2
+
3
+ import java .util .function .Function ;
4
+
5
+ public class MyFunc implements Function <Object , Object > {
6
+
7
+ @ Override
8
+ public Object apply (Object o ) {
9
+ return "echo: " + o ;
10
+ }
11
+ }
Original file line number Diff line number Diff line change
1
+ package org .example .generic ;
2
+
3
+ import io .avaje .inject .Bean ;
4
+ import io .avaje .inject .Factory ;
5
+
6
+ @ Factory
7
+ public class MyFuncFactory {
8
+
9
+ @ Bean
10
+ MyFunc createTest () {
11
+ return new MyFunc ();
12
+ }
13
+ }
Original file line number Diff line number Diff line change
1
+ package org .example .generic ;
2
+
3
+ import io .avaje .inject .BeanScope ;
4
+ import org .junit .jupiter .api .Test ;
5
+
6
+ import static org .assertj .core .api .Assertions .assertThat ;
7
+
8
+ class MyFuncFactoryTest {
9
+
10
+ @ Test
11
+ void test_does_wire () {
12
+ try (BeanScope beanScope = BeanScope .newBuilder ().build ()) {
13
+ MyFunc myFunc = beanScope .get (MyFunc .class );
14
+
15
+ assertThat (myFunc .apply ("Hi" )).isEqualTo ("echo: Hi" );
16
+ }
17
+ }
18
+ }
You can’t perform that action at this time.
0 commit comments