Skip to content

Commit 835acff

Browse files
Writes a file to signal inject's presence (#634)
* Writes a file to signal inject's presence * write to txt file * properly dedup * bump spi version * Format only changes --------- Co-authored-by: robin.bygrave <robin.bygrave@eroad.com>
1 parent 8efdc38 commit 835acff

File tree

4 files changed

+36
-33
lines changed

4 files changed

+36
-33
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,6 @@ build/
1010
*.processors
1111
*/bin/
1212

13+
inject-generator/avaje-inject
14+
inject-generator/avaje-inject-generator
15+
inject-generator/avaje-processors.txt

inject-generator/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<name>avaje inject generator</name>
1414
<description>annotation processor generating source code for avaje-inject dependency injection</description>
1515
<properties>
16-
<avaje.prisms.version>1.27</avaje.prisms.version>
16+
<avaje.prisms.version>1.28</avaje.prisms.version>
1717
</properties>
1818
<dependencies>
1919

@@ -34,7 +34,7 @@
3434
<dependency>
3535
<groupId>io.avaje</groupId>
3636
<artifactId>avaje-spi-service</artifactId>
37-
<version>2.0</version>
37+
<version>2.1</version>
3838
</dependency>
3939
<!-- test dependencies -->
4040
<dependency>

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

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@ private static boolean moduleCP() {
5656

5757
static void registerModuleProvidedTypes(Set<String> providedTypes) {
5858
if (!injectAvailable) {
59-
if (!pluginExists("build/avaje-module-provides.txt")
60-
&& !pluginExists("target/avaje-module-provides.txt")) {
59+
if (!pluginExists("avaje-module-provides.txt")) {
6160
APContext.logNote("Unable to detect Avaje Inject in Annotation Processor ClassPath, use the Avaje Inject Maven/Gradle plugin for detecting Inject Modules from dependencies");
6261
}
6362
return;
@@ -129,14 +128,7 @@ static void registerPluginProvidedTypes(ScopeInfo defaultScope) {
129128

130129
private static boolean pluginExists(String relativeName) {
131130
try {
132-
final String resource =
133-
APContext.filer()
134-
.getResource(StandardLocation.CLASS_OUTPUT, "", relativeName)
135-
.toUri()
136-
.toString()
137-
.replaceFirst("/target/classes", "")
138-
.replaceFirst("/build/classes/java/main", "");
139-
return Paths.get(new URI(resource)).toFile().exists();
131+
return APContext.getBuildResource(relativeName).toFile().exists();
140132
} catch (final Exception e) {
141133
return false;
142134
}

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

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@
1313
import javax.lang.model.element.TypeElement;
1414
import javax.lang.model.util.ElementFilter;
1515
import javax.lang.model.util.Elements;
16-
import javax.tools.StandardLocation;
16+
17+
import static java.util.stream.Collectors.joining;
18+
import static java.util.stream.Collectors.toSet;
19+
1720
import java.io.IOException;
18-
import java.net.URI;
1921
import java.nio.file.Files;
20-
import java.nio.file.Paths;
22+
import java.nio.file.StandardOpenOption;
2123
import java.util.*;
2224
import java.util.stream.Collectors;
2325
import java.util.stream.Stream;
@@ -71,28 +73,42 @@ public synchronized void init(ProcessingEnvironment processingEnv) {
7173
this.defaultScope = allScopes.defaultScope();
7274
ExternalProvider.registerPluginProvidedTypes(defaultScope);
7375
pluginFileProvided.forEach(defaultScope::pluginProvided);
76+
77+
// write a note in target so that other apts can know inject is running
78+
try {
79+
var file = APContext.getBuildResource("avaje-processors.txt");
80+
var addition = new StringBuilder();
81+
//if file exists, dedup and append current processor
82+
if (file.toFile().exists()) {
83+
var result = Stream.concat(Files.lines(file), Stream.of("avaje-inject-generator"))
84+
.distinct()
85+
.collect(joining("\n"));
86+
addition.append(result);
87+
} else {
88+
addition.append("avaje-inject-generator");
89+
}
90+
Files.writeString(file, addition.toString(), StandardOpenOption.CREATE, StandardOpenOption.WRITE);
91+
} catch (IOException e) {
92+
// not an issue worth failing over
93+
}
7494
}
7595

7696
/**
7797
* Loads provider files generated by avaje-inject-maven-plugin
7898
*/
7999
void loadProvidedFiles() {
80-
this.performModuleValidation =
81-
lines("target/avaje-plugin-exists.txt").isEmpty()
82-
&& lines("build/avaje-plugin-exists.txt").isEmpty();
83-
pluginFileProvided.addAll(lines("target/avaje-plugin-provides.txt"));
84-
moduleFileProvided.addAll(lines("target/avaje-module-provides.txt"));
85-
pluginFileProvided.addAll(lines("build/avaje-plugin-provides.txt"));
86-
moduleFileProvided.addAll(lines("build/avaje-module-provides.txt"));
100+
performModuleValidation = lines("avaje-plugin-exists.txt").isEmpty();
101+
pluginFileProvided.addAll(lines("avaje-plugin-provides.txt"));
102+
moduleFileProvided.addAll(lines("avaje-module-provides.txt"));
87103
}
88104

89105
/**
90106
* Loads order files generated by avaje-inject-maven-plugin
91107
*/
92108
private void loadOrderFiles() {
93109
Stream.concat(
94-
lines("target/avaje-module-dependencies.csv").stream().skip(1),
95-
lines("build/avaje-module-dependencies.csv").stream().skip(1))
110+
lines("avaje-module-dependencies.csv").stream().skip(1),
111+
lines("avaje-module-dependencies.csv").stream().skip(1))
96112
.filter(s -> !s.startsWith("External Module Type"))
97113
.distinct()
98114
.map(l -> l.split("\\|"))
@@ -102,15 +118,7 @@ private void loadOrderFiles() {
102118

103119
private List<String> lines(String relativeName) {
104120
try {
105-
final String resource =
106-
processingEnv
107-
.getFiler()
108-
.getResource(StandardLocation.CLASS_OUTPUT, "", relativeName)
109-
.toUri()
110-
.toString()
111-
.replaceFirst("/target/classes", "")
112-
.replaceFirst("/build/classes/java/main", "");
113-
return Files.readAllLines(Paths.get(new URI(resource)));
121+
return Files.readAllLines(APContext.getBuildResource(relativeName));
114122
} catch (final Exception e) {
115123
return Collections.emptyList();
116124
}

0 commit comments

Comments
 (0)