6
6
import java .util .List ;
7
7
import java .util .Objects ;
8
8
import java .util .Optional ;
9
+ import java .util .Set ;
9
10
import java .util .stream .Collectors ;
10
11
import java .util .stream .Stream ;
11
12
26
27
import javax .tools .JavaFileObject ;
27
28
import javax .tools .StandardLocation ;
28
29
29
- import io .avaje .http .generator .core .ModuleInfoReader .Provides ;
30
30
import io .avaje .http .generator .core .openapi .DocContext ;
31
31
32
32
public final class ProcessingContext {
@@ -49,8 +49,6 @@ private static final class Ctx {
49
49
private final boolean instrumentAllMethods ;
50
50
private final boolean disableDirectWrites ;
51
51
private final boolean javalin6 ;
52
- private final boolean spiPresent = APContext .typeElement ("io.avaje.spi.internal.ServiceProcessor" ) != null ;
53
- private boolean validated ;
54
52
private String clientFQN ;
55
53
56
54
Ctx (ProcessingEnvironment env , PlatformAdapter adapter , boolean generateOpenAPI ) {
@@ -143,12 +141,8 @@ public static JavaFileObject createWriter(String cls, Element origin) throws IOE
143
141
144
142
/** Create a file writer for the META-INF services file. */
145
143
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 ;
150
144
151
- return filer ().createResource (StandardLocation .CLASS_OUTPUT , "" , serviceFile );
145
+ return filer ().createResource (StandardLocation .CLASS_OUTPUT , "" , target );
152
146
}
153
147
154
148
public static JavaFileObject createWriter (String cls ) throws IOException {
@@ -241,8 +235,7 @@ static Stream<String> superTypes(Element element) {
241
235
242
236
public static void validateModule () {
243
237
var module = APContext .getProjectModuleElement ();
244
- if (module != null && !CTX .get ().validated && !module .isUnnamed ()) {
245
- CTX .get ().validated = true ;
238
+ if (module != null && !module .isUnnamed ()) {
246
239
try (var bufferedReader = APContext .getModuleInfoReader ()) {
247
240
var reader = new ModuleInfoReader (module , bufferedReader );
248
241
reader .requires ().forEach (r -> {
@@ -251,18 +244,9 @@ public static void validateModule() {
251
244
}
252
245
});
253
246
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
+
266
250
} catch (Exception e ) {
267
251
// can't read module
268
252
}
0 commit comments