Skip to content

Commit 53e0fce

Browse files
SentryManrbygrave
andauthored
Write SPIs to META-INF/generated-services so that they can be merged later via avaje-spi-service (#616)
* write spis to a different folder * Update InjectProcessorTest.java * Update InjectProcessorTest.java * remove hard spi dependency * Update ProcessingContext.java * Remove ProcessingContext.testInit() and adjust test --------- Co-authored-by: Rob Bygrave <robin.bygrave@gmail.com>
1 parent c10e2a9 commit 53e0fce

File tree

4 files changed

+12
-13
lines changed

4 files changed

+12
-13
lines changed

inject-generator/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<dependency>
2727
<groupId>io.avaje</groupId>
2828
<artifactId>avaje-spi-service</artifactId>
29-
<version>1.9</version>
29+
<version>1.10</version>
3030
</dependency>
3131

3232
<dependency>

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

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,9 @@ static final class Ctx {
2929
private final List<ModuleData> modules = new ArrayList<>();
3030
private final List<TypeElement> delayQueue = new ArrayList<>();
3131
private final List<String> spiServices = new ArrayList<>();
32+
private final boolean spiPresent = APContext.typeElement("io.avaje.spi.internal.ServiceProcessor") != null;
3233
private boolean strictWiring;
3334

34-
Ctx() {}
35-
3635
void registerProvidedTypes(Set<String> moduleFileProvided) {
3736
ExternalProvider.registerModuleProvidedTypes(providedTypes);
3837
providedTypes.addAll(moduleFileProvided);
@@ -44,10 +43,6 @@ static void init(Set<String> moduleFileProvided, boolean performModuleValidation
4443
CTX.get().registerProvidedTypes(moduleFileProvided);
4544
}
4645

47-
static void testInit() {
48-
CTX.set(new Ctx());
49-
}
50-
5146
static String loadMetaInfServices() {
5247
return loadMetaInf(Constants.META_INF_SPI).stream()
5348
.filter(ProcessingContext::isInjectModule)
@@ -96,7 +91,12 @@ static void addInjectSPI(String type) {
9691
}
9792

9893
static FileObject createMetaInfWriterFor(String interfaceType) throws IOException {
99-
return filer().createResource(StandardLocation.CLASS_OUTPUT, "", interfaceType);
94+
var serviceFile =
95+
CTX.get().spiPresent
96+
? interfaceType.replace("META-INF/services/", "META-INF/generated-services/")
97+
: interfaceType;
98+
99+
return filer().createResource(StandardLocation.CLASS_OUTPUT, "", serviceFile);
100100
}
101101

102102
static TypeElement elementMaybe(String rawType) {
@@ -198,7 +198,6 @@ static void writeSPIServicesFile() {
198198
writer.close();
199199
}
200200
} catch (IOException e) {
201-
e.printStackTrace();
202201
logError("Failed to write services file " + e.getMessage());
203202
}
204203
}

inject-generator/src/test/java/io/avaje/inject/generator/InjectProcessorTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import java.nio.file.Files;
99
import java.nio.file.Path;
1010
import java.nio.file.Paths;
11-
import java.util.Arrays;
1211
import java.util.Collections;
1312
import java.util.Comparator;
1413
import java.util.List;
@@ -26,6 +25,8 @@
2625
import org.junit.jupiter.api.AfterEach;
2726
import org.junit.jupiter.api.Test;
2827

28+
import io.avaje.spi.internal.ServiceProcessor;
29+
2930
class InjectProcessorTest {
3031

3132
@AfterEach
@@ -52,7 +53,7 @@ void testGeneration() throws Exception {
5253
final JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
5354
final StandardJavaFileManager manager = compiler.getStandardFileManager(null, null, null);
5455

55-
manager.setLocation(StandardLocation.SOURCE_PATH, Arrays.asList(new File(source)));
56+
manager.setLocation(StandardLocation.SOURCE_PATH, List.of(new File(source)));
5657

5758
final Set<Kind> fileKinds = Collections.singleton(Kind.SOURCE);
5859

@@ -67,7 +68,7 @@ void testGeneration() throws Exception {
6768
List.of("--release=" + Integer.getInteger("java.specification.version")),
6869
null,
6970
files);
70-
task.setProcessors(Arrays.asList(new InjectProcessor()));
71+
task.setProcessors(List.of(new InjectProcessor(), new ServiceProcessor()));
7172

7273
assertThat(task.call()).isTrue();
7374
}

inject-generator/src/test/java/io/avaje/inject/generator/UtilTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ void nestedShortName() {
2727

2828
@Test
2929
void nestedPackageOf() {
30-
ProcessingContext.testInit();
3130
assertEquals(Util.nestedPackageOf("com.example.Foo.Bar"), "com.example");
3231
assertEquals(Util.nestedPackageOf("com.example.other.foo.Bar"), "com.example.other");
3332
}

0 commit comments

Comments
 (0)