|
1 | 1 | package io.avaje.inject.generator;
|
2 | 2 |
|
3 | 3 | import static io.avaje.inject.generator.APContext.logError;
|
4 |
| -import java.util.ArrayList; |
5 |
| -import java.util.Collections; |
6 |
| -import java.util.LinkedHashSet; |
7 |
| -import java.util.List; |
8 |
| -import java.util.Optional; |
9 |
| -import java.util.Set; |
| 4 | + |
| 5 | +import java.util.*; |
10 | 6 | import java.util.stream.Stream;
|
11 | 7 |
|
12 | 8 | import javax.lang.model.element.Element;
|
13 | 9 | import javax.lang.model.element.TypeElement;
|
14 | 10 | import javax.lang.model.type.TypeKind;
|
| 11 | +import javax.lang.model.type.TypeMirror; |
15 | 12 |
|
16 | 13 | import io.avaje.inject.generator.MethodReader.MethodParam;
|
17 | 14 |
|
@@ -101,21 +98,36 @@ final class BeanReader {
|
101 | 98 | * delay until next round if types cannot be resolved
|
102 | 99 | */
|
103 | 100 | private boolean shouldDelay() {
|
104 |
| - var construct = Optional.ofNullable(constructor) |
| 101 | + var constructors = Optional.ofNullable(constructor) |
105 | 102 | .map(MethodReader::params).stream()
|
106 | 103 | .flatMap(List::stream)
|
107 |
| - .map(MethodParam::element); |
| 104 | + .map(MethodParam::element) |
| 105 | + .map(Element::asType); |
| 106 | + |
| 107 | + var fields = injectFields.stream() |
| 108 | + .map(FieldReader::element) |
| 109 | + .map(Element::asType); |
108 | 110 |
|
109 |
| - var fields = injectFields.stream().map(FieldReader::element); |
110 |
| - var constructFields = Stream.concat(construct, fields); |
111 | 111 | var methods = injectMethods.stream()
|
112 | 112 | .map(MethodReader::params)
|
113 | 113 | .flatMap(List::stream)
|
114 |
| - .map(MethodParam::element); |
| 114 | + .map(MethodParam::element) |
| 115 | + .map(Element::asType); |
| 116 | + |
| 117 | + var interfaces = beanType.getInterfaces() |
| 118 | + .stream(); |
| 119 | + |
| 120 | + var superClass = Stream.of(beanType.getSuperclass()); |
| 121 | + |
| 122 | + var beanTypes = BeanTypesPrism.getOptionalOn(beanType) |
| 123 | + .map(BeanTypesPrism::value) |
| 124 | + .stream() |
| 125 | + .flatMap(List::stream); |
115 | 126 |
|
116 |
| - return Stream.concat(constructFields, methods) |
117 |
| - .map(Element::asType) |
118 |
| - .anyMatch(t -> t.getKind() == TypeKind.ERROR); |
| 127 | + return Stream.of(constructors, fields, methods, interfaces, superClass, beanTypes) |
| 128 | + .flatMap(s -> s) |
| 129 | + .map(TypeMirror::getKind) |
| 130 | + .anyMatch(TypeKind.ERROR::equals); |
119 | 131 | }
|
120 | 132 |
|
121 | 133 | @Override
|
|
0 commit comments