Skip to content

Commit d529af8

Browse files
committed
#178 #177 Add test, add imports for factoryMethod generic types
1 parent ef21e0b commit d529af8

File tree

5 files changed

+57
-1
lines changed

5 files changed

+57
-1
lines changed

inject-generator/src/main/java/io/avaje/inject/generator/BeanReader.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,19 @@ private Set<String> importTypes() {
189189
typeReader.extraImports(importTypes);
190190
requestParams.addImports(importTypes);
191191
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+
192205
return importTypes;
193206
}
194207

inject-generator/src/main/java/io/avaje/inject/generator/MethodReader.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import javax.lang.model.element.*;
77
import javax.lang.model.type.TypeMirror;
88
import java.util.ArrayList;
9+
import java.util.Collections;
910
import java.util.List;
1011
import java.util.Set;
1112

@@ -178,7 +179,7 @@ void addImports(Set<String> importTypes) {
178179
}
179180

180181
Set<GenericType> getGenericTypes() {
181-
return typeReader.getGenericTypes();
182+
return typeReader == null ? Collections.emptySet() : typeReader.getGenericTypes();
182183
}
183184

184185
void buildAddFor(Append writer) {
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
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+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
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+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
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+
}

0 commit comments

Comments
 (0)