Skip to content

Commit 2a4f1e9

Browse files
authored
Fix ExternalProvider on JDT (#778)
* Fix ExternalProvider on JDT turns out getDirectives throws an NPE if it's an automatic module. Only happens with JDT though * Update pom.xml * Update ExternalProvider.java
1 parent 5bc2b12 commit 2a4f1e9

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

inject-generator/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
<version>1.5</version>
5656
<scope>test</scope>
5757
</dependency>
58-
58+
5959
<dependency>
6060
<groupId>io.avaje</groupId>
6161
<artifactId>avaje-http-client</artifactId>

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

+11-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import javax.lang.model.element.ElementKind;
2525
import javax.lang.model.element.Modifier;
2626
import javax.lang.model.element.ModuleElement;
27+
import javax.lang.model.element.ModuleElement.ProvidesDirective;
2728
import javax.lang.model.element.TypeElement;
2829
import javax.lang.model.util.ElementFilter;
2930

@@ -318,13 +319,22 @@ private static Stream<TypeElement> injectExtensions() {
318319

319320
final var checkDirectives =
320321
allModules.stream()
321-
.flatMap(m -> ElementFilter.providesIn(m.getDirectives()).stream())
322+
.flatMap(ExternalProvider::providesDirectives)
322323
.filter(ExternalProvider::isInjectExtension)
323324
.flatMap(p -> p.getImplementations().stream());
324325

325326
return Stream.concat(checkEnclosing, checkDirectives);
326327
}
327328

329+
// Automatic modules throw an NPE for getDirectives on JDT
330+
private static Stream<ProvidesDirective> providesDirectives(ModuleElement m) {
331+
try {
332+
return ElementFilter.providesIn(m.getDirectives()).stream();
333+
} catch (NullPointerException npe) {
334+
return Stream.of();
335+
}
336+
}
337+
328338
// when a project's module-info is misconfigured a certain way, getEnclosedElements throws an error
329339
private static Stream<? extends Element> getEnclosed(Element e) {
330340
try {

0 commit comments

Comments
 (0)