|
1 | 1 | package io.avaje.validation.generator; |
2 | 2 |
|
3 | 3 | import static io.avaje.validation.generator.APContext.filer; |
4 | | -import static io.avaje.validation.generator.APContext.getModuleInfoReader; |
5 | 4 | import static io.avaje.validation.generator.APContext.getProjectModuleElement; |
6 | 5 | import static io.avaje.validation.generator.APContext.logWarn; |
7 | 6 | import static java.util.stream.Collectors.toSet; |
|
14 | 13 |
|
15 | 14 | import javax.annotation.processing.ProcessingEnvironment; |
16 | 15 | import javax.lang.model.element.Element; |
| 16 | +import javax.lang.model.element.ModuleElement.RequiresDirective; |
17 | 17 | import javax.tools.FileObject; |
18 | 18 | import javax.tools.StandardLocation; |
19 | 19 |
|
20 | | -import io.avaje.validation.generator.ModuleInfoReader.Requires; |
21 | | - |
22 | 20 | final class ProcessingContext { |
23 | 21 |
|
24 | 22 | private static final ThreadLocal<Ctx> CTX = new ThreadLocal<>(); |
@@ -64,44 +62,44 @@ static boolean isImported(Element element) { |
64 | 62 |
|
65 | 63 | static void validateModule() { |
66 | 64 | var module = getProjectModuleElement(); |
67 | | - if (module != null && !module.isUnnamed()) { |
68 | | - var injectPresent = CTX.get().injectPresent; |
69 | | - var warnHttp = CTX.get().warnHttp; |
70 | | - |
71 | | - try (var reader = getModuleInfoReader()) { |
72 | | - var moduleInfo = new ModuleInfoReader(module, reader); |
73 | | - |
74 | | - moduleInfo.validateServices("io.avaje.validation.spi.ValidationExtension", CTX.get().serviceSet); |
75 | | - |
76 | | - var buildPluginAvailable = buildPluginAvailable(); |
77 | | - var requireSet = |
78 | | - moduleInfo.requires().stream() |
79 | | - .map(Requires::getDependency) |
80 | | - .map(m -> m.getQualifiedName().toString()) |
81 | | - .collect(toSet()); |
82 | | - |
83 | | - boolean noHttpPlugin = |
84 | | - injectPresent |
85 | | - && (!buildPluginAvailable || !requireSet.contains("io.avaje.http.api")) |
86 | | - && warnHttp |
87 | | - && !moduleInfo.containsOnModulePath("io.avaje.validation.http"); |
88 | | - |
89 | | - boolean noInjectPlugin = |
90 | | - noHttpPlugin |
91 | | - && injectPresent |
92 | | - && (!buildPluginAvailable || !requireSet.contains("io.avaje.validation")) |
93 | | - && !moduleInfo.containsOnModulePath("io.avaje.validation.plugin"); |
94 | | - |
95 | | - if (noHttpPlugin) { |
96 | | - logWarn(module, "`requires io.avaje.validation.http` must be explicity added or else avaje-inject may fail to detect the default http validator, validator, and method AOP validator"); |
97 | | - } else if (noInjectPlugin) { |
98 | | - logWarn(module, "`requires io.avaje.validation.plugin` must be explicity added or else avaje-inject may fail to detect the default validator and method AOP validator"); |
99 | | - } |
100 | | - |
101 | | - } catch (Exception e) { |
102 | | - // can't read module |
103 | | - } |
104 | | - } |
| 65 | + var injectPresent = CTX.get().injectPresent; |
| 66 | + var warnHttp = CTX.get().warnHttp; |
| 67 | + |
| 68 | + APContext.moduleInfoReader() |
| 69 | + .ifPresent( |
| 70 | + moduleInfo -> { |
| 71 | + moduleInfo.validateServices( |
| 72 | + "io.avaje.validation.spi.ValidationExtension", CTX.get().serviceSet); |
| 73 | + |
| 74 | + var buildPluginAvailable = buildPluginAvailable(); |
| 75 | + var requireSet = |
| 76 | + moduleInfo.requires().stream() |
| 77 | + .map(RequiresDirective::getDependency) |
| 78 | + .map(m -> m.getQualifiedName().toString()) |
| 79 | + .collect(toSet()); |
| 80 | + |
| 81 | + boolean noHttpPlugin = |
| 82 | + injectPresent |
| 83 | + && (!buildPluginAvailable || !requireSet.contains("io.avaje.http.api")) |
| 84 | + && warnHttp |
| 85 | + && !moduleInfo.containsOnModulePath("io.avaje.validation.http"); |
| 86 | + |
| 87 | + boolean noInjectPlugin = |
| 88 | + noHttpPlugin |
| 89 | + && injectPresent |
| 90 | + && (!buildPluginAvailable || !requireSet.contains("io.avaje.validation")) |
| 91 | + && !moduleInfo.containsOnModulePath("io.avaje.validation.plugin"); |
| 92 | + |
| 93 | + if (noHttpPlugin) { |
| 94 | + logWarn( |
| 95 | + module, |
| 96 | + "`requires io.avaje.validation.http` must be explicity added or else avaje-inject may fail to detect the default http validator, validator, and method AOP validator"); |
| 97 | + } else if (noInjectPlugin) { |
| 98 | + logWarn( |
| 99 | + module, |
| 100 | + "`requires io.avaje.validation.plugin` must be explicity added or else avaje-inject may fail to detect the default validator and method AOP validator"); |
| 101 | + } |
| 102 | + }); |
105 | 103 | } |
106 | 104 |
|
107 | 105 | private static boolean buildPluginAvailable() { |
|
0 commit comments