Skip to content

Commit e944fb1

Browse files
committed
#167 - No dependency provided for _ on _ - The underlying issue, provides meta data not including non-interface inherited types
1 parent 26c91f8 commit e944fb1

File tree

9 files changed

+101
-5
lines changed

9 files changed

+101
-5
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,8 @@ List<MethodReader> getFactoryMethods() {
9292
return factoryMethods;
9393
}
9494

95-
List<String> getInterfaces() {
96-
return typeReader.getInterfaces();
95+
List<String> getProvides() {
96+
return typeReader.getProvides();
9797
}
9898

9999
Set<GenericType> getGenericTypes() {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ private List<String> asList(String[] content) {
100100
}
101101

102102
void update(BeanReader beanReader) {
103-
this.provides = beanReader.getInterfaces();
103+
this.provides = beanReader.getProvides();
104104
this.dependsOn = beanReader.getDependsOn();
105105
}
106106

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,14 @@ List<String> getInterfaceTypes() {
7272
return interfaceTypes;
7373
}
7474

75+
List<String> getProvides() {
76+
List<String> all = new ArrayList<>(extendsTypes.size() + interfaceTypes.size());
77+
all.addAll(extendsTypes);
78+
all.addAll(interfaceTypes);
79+
all.remove(baseTypeRaw);
80+
return all;
81+
}
82+
7583
boolean isCloseable() {
7684
return closeable;
7785
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ String getTypesRegister() {
3838
return typesRegister;
3939
}
4040

41-
List<String> getInterfaces() {
42-
return extendsReader.getInterfaceTypes();
41+
List<String> getProvides() {
42+
return extendsReader.getProvides();
4343
}
4444

4545
boolean isClosable() {
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.example.inheritprovides;
2+
3+
import jakarta.inject.Inject;
4+
import jakarta.inject.Singleton;
5+
import java.util.List;
6+
7+
@Singleton
8+
public class Application {
9+
10+
private final List<Controller> controllers;
11+
12+
@Inject
13+
public Application(List<Controller> controllers) {
14+
this.controllers = controllers;
15+
}
16+
17+
public List<Controller> getControllers() {
18+
return controllers;
19+
}
20+
21+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.example.inheritprovides;
2+
3+
import io.avaje.inject.BeanScope;
4+
import org.junit.jupiter.api.Test;
5+
6+
import java.util.List;
7+
8+
import static org.assertj.core.api.Assertions.assertThat;
9+
10+
class ApplicationTest {
11+
12+
@Test
13+
void asd() {
14+
try (BeanScope beanScope = BeanScope.newBuilder().build()) {
15+
Application application = beanScope.get(Application.class);
16+
List<? extends Controller> controllers = application.getControllers();
17+
18+
assertThat(application).isNotNull();
19+
assertThat(controllers).hasSize(2);
20+
}
21+
}
22+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package org.example.inheritprovides;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
6+
public class Controller {
7+
8+
Map<String, String> getContext() {
9+
return new HashMap<>();
10+
}
11+
12+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.example.inheritprovides;
2+
3+
import jakarta.inject.Singleton;
4+
import java.util.Map;
5+
6+
@Singleton
7+
public class Controller1 extends Controller {
8+
9+
@Override
10+
Map<String, String> getContext() {
11+
Map<String, String> context = super.getContext();
12+
context.put("something", "1");
13+
return context;
14+
}
15+
16+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.example.inheritprovides;
2+
3+
import jakarta.inject.Singleton;
4+
5+
import java.util.Map;
6+
7+
@Singleton
8+
public class Controller2 extends Controller {
9+
10+
@Override
11+
Map<String, String> getContext() {
12+
Map<String, String> context = super.getContext();
13+
context.put("something", "2");
14+
return context;
15+
}
16+
17+
}

0 commit comments

Comments
 (0)