Skip to content

Commit 76826a7

Browse files
authored
Fix odd null pointer in module detection (#732)
* fix odd nullpointer * Update ExternalProvider.java
1 parent 7ee351a commit 76826a7

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.TreeSet;
2020
import java.util.stream.Stream;
2121

22+
import javax.lang.model.element.Element;
2223
import javax.lang.model.element.ElementKind;
2324
import javax.lang.model.element.Modifier;
2425
import javax.lang.model.element.ModuleElement;
@@ -295,8 +296,8 @@ private static Stream<TypeElement> injectExtensions() {
295296

296297
final var checkEnclosing =
297298
allModules.stream()
298-
.flatMap(m -> m.getEnclosedElements().stream())
299-
.flatMap(p -> p.getEnclosedElements().stream())
299+
.flatMap(ExternalProvider::getEnclosed)
300+
.flatMap(ExternalProvider::getEnclosed)
300301
.map(TypeElement.class::cast)
301302
.filter(t -> t.getKind() == ElementKind.CLASS)
302303
.filter(t -> t.getModifiers().contains(Modifier.PUBLIC))
@@ -311,6 +312,15 @@ private static Stream<TypeElement> injectExtensions() {
311312
return Stream.concat(checkEnclosing, checkDirectives);
312313
}
313314

315+
// when a project's module-info is misconfigured a certain way, getEnclosedElements throws an error
316+
private static Stream<? extends Element> getEnclosed(Element e) {
317+
try {
318+
return e.getEnclosedElements().stream();
319+
} catch (Exception ex) {
320+
return Stream.of();
321+
}
322+
}
323+
314324
private static boolean isInjectExtension(ModuleElement.ProvidesDirective p) {
315325
return "io.avaje.inject.spi.InjectExtension".equals(p.getService().getQualifiedName().toString());
316326
}

0 commit comments

Comments
 (0)