Skip to content

Commit be5ae7b

Browse files
authored
use prisms to validate modules (#458)
1 parent 5ca19f8 commit be5ae7b

File tree

2 files changed

+7
-23
lines changed

2 files changed

+7
-23
lines changed

http-generator-core/src/main/java/io/avaje/http/generator/core/ProcessingContext.java

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.List;
77
import java.util.Objects;
88
import java.util.Optional;
9+
import java.util.Set;
910
import java.util.stream.Collectors;
1011
import java.util.stream.Stream;
1112

@@ -26,7 +27,6 @@
2627
import javax.tools.JavaFileObject;
2728
import javax.tools.StandardLocation;
2829

29-
import io.avaje.http.generator.core.ModuleInfoReader.Provides;
3030
import io.avaje.http.generator.core.openapi.DocContext;
3131

3232
public final class ProcessingContext {
@@ -49,8 +49,6 @@ private static final class Ctx {
4949
private final boolean instrumentAllMethods;
5050
private final boolean disableDirectWrites;
5151
private final boolean javalin6;
52-
private final boolean spiPresent = APContext.typeElement("io.avaje.spi.internal.ServiceProcessor") != null;
53-
private boolean validated;
5452
private String clientFQN;
5553

5654
Ctx(ProcessingEnvironment env, PlatformAdapter adapter, boolean generateOpenAPI) {
@@ -143,12 +141,8 @@ public static JavaFileObject createWriter(String cls, Element origin) throws IOE
143141

144142
/** Create a file writer for the META-INF services file. */
145143
public static FileObject createMetaInfWriter(String target) throws IOException {
146-
var serviceFile =
147-
CTX.get().spiPresent
148-
? target.replace("META-INF/services/", "META-INF/generated-services/")
149-
: target;
150144

151-
return filer().createResource(StandardLocation.CLASS_OUTPUT, "", serviceFile);
145+
return filer().createResource(StandardLocation.CLASS_OUTPUT, "", target);
152146
}
153147

154148
public static JavaFileObject createWriter(String cls) throws IOException {
@@ -241,8 +235,7 @@ static Stream<String> superTypes(Element element) {
241235

242236
public static void validateModule() {
243237
var module = APContext.getProjectModuleElement();
244-
if (module != null && !CTX.get().validated && !module.isUnnamed()) {
245-
CTX.get().validated = true;
238+
if (module != null && !module.isUnnamed()) {
246239
try (var bufferedReader = APContext.getModuleInfoReader()) {
247240
var reader = new ModuleInfoReader(module, bufferedReader);
248241
reader.requires().forEach(r -> {
@@ -251,18 +244,9 @@ public static void validateModule() {
251244
}
252245
});
253246
var fqn = CTX.get().clientFQN;
254-
if (CTX.get().spiPresent || fqn == null) {
255-
return;
256-
}
257-
var noProvides = reader.provides().stream()
258-
.filter(p -> "io.avaje.http.client.HttpClient.GeneratedComponent".equals(p.service()))
259-
.map(Provides::implementations)
260-
.flatMap(List::stream)
261-
.noneMatch(s -> s.contains(fqn));
262-
263-
if (noProvides && !buildPluginAvailable()) {
264-
logError(module, "Missing `provides io.avaje.http.client.HttpClient.GeneratedComponent with %s;`", fqn);
265-
}
247+
248+
reader.validateServices("io.avaje.http.client.HttpClient.GeneratedComponent", Set.of(fqn));
249+
266250
} catch (Exception e) {
267251
// can't read module
268252
}

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<nexus.staging.autoReleaseAfterClose>true</nexus.staging.autoReleaseAfterClose>
2222
<swagger.version>2.2.22</swagger.version>
2323
<jackson.version>2.14.2</jackson.version>
24-
<avaje.prisms.version>1.26</avaje.prisms.version>
24+
<avaje.prisms.version>1.27</avaje.prisms.version>
2525
<module-info.shade>${project.build.directory}${file.separator}module-info.shade</module-info.shade>
2626
</properties>
2727

0 commit comments

Comments
 (0)