diff --git a/inject-generator/pom.xml b/inject-generator/pom.xml
index 3d39323a7..2fbace87a 100644
--- a/inject-generator/pom.xml
+++ b/inject-generator/pom.xml
@@ -26,7 +26,7 @@
io.avaje
avaje-spi-service
- 1.9
+ 1.10
diff --git a/inject-generator/src/main/java/io/avaje/inject/generator/ProcessingContext.java b/inject-generator/src/main/java/io/avaje/inject/generator/ProcessingContext.java
index 32d63e708..741547cc7 100644
--- a/inject-generator/src/main/java/io/avaje/inject/generator/ProcessingContext.java
+++ b/inject-generator/src/main/java/io/avaje/inject/generator/ProcessingContext.java
@@ -29,10 +29,9 @@ static final class Ctx {
private final List modules = new ArrayList<>();
private final List delayQueue = new ArrayList<>();
private final List spiServices = new ArrayList<>();
+ private final boolean spiPresent = APContext.typeElement("io.avaje.spi.internal.ServiceProcessor") != null;
private boolean strictWiring;
- Ctx() {}
-
void registerProvidedTypes(Set moduleFileProvided) {
ExternalProvider.registerModuleProvidedTypes(providedTypes);
providedTypes.addAll(moduleFileProvided);
@@ -44,10 +43,6 @@ static void init(Set moduleFileProvided, boolean performModuleValidation
CTX.get().registerProvidedTypes(moduleFileProvided);
}
- static void testInit() {
- CTX.set(new Ctx());
- }
-
static String loadMetaInfServices() {
return loadMetaInf(Constants.META_INF_SPI).stream()
.filter(ProcessingContext::isInjectModule)
@@ -96,7 +91,12 @@ static void addInjectSPI(String type) {
}
static FileObject createMetaInfWriterFor(String interfaceType) throws IOException {
- return filer().createResource(StandardLocation.CLASS_OUTPUT, "", interfaceType);
+ var serviceFile =
+ CTX.get().spiPresent
+ ? interfaceType.replace("META-INF/services/", "META-INF/generated-services/")
+ : interfaceType;
+
+ return filer().createResource(StandardLocation.CLASS_OUTPUT, "", serviceFile);
}
static TypeElement elementMaybe(String rawType) {
@@ -198,7 +198,6 @@ static void writeSPIServicesFile() {
writer.close();
}
} catch (IOException e) {
- e.printStackTrace();
logError("Failed to write services file " + e.getMessage());
}
}
diff --git a/inject-generator/src/test/java/io/avaje/inject/generator/InjectProcessorTest.java b/inject-generator/src/test/java/io/avaje/inject/generator/InjectProcessorTest.java
index 4cb4db46c..0670758c1 100644
--- a/inject-generator/src/test/java/io/avaje/inject/generator/InjectProcessorTest.java
+++ b/inject-generator/src/test/java/io/avaje/inject/generator/InjectProcessorTest.java
@@ -8,7 +8,6 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@@ -26,6 +25,8 @@
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
+import io.avaje.spi.internal.ServiceProcessor;
+
class InjectProcessorTest {
@AfterEach
@@ -52,7 +53,7 @@ void testGeneration() throws Exception {
final JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
final StandardJavaFileManager manager = compiler.getStandardFileManager(null, null, null);
- manager.setLocation(StandardLocation.SOURCE_PATH, Arrays.asList(new File(source)));
+ manager.setLocation(StandardLocation.SOURCE_PATH, List.of(new File(source)));
final Set fileKinds = Collections.singleton(Kind.SOURCE);
@@ -67,7 +68,7 @@ void testGeneration() throws Exception {
List.of("--release=" + Integer.getInteger("java.specification.version")),
null,
files);
- task.setProcessors(Arrays.asList(new InjectProcessor()));
+ task.setProcessors(List.of(new InjectProcessor(), new ServiceProcessor()));
assertThat(task.call()).isTrue();
}
diff --git a/inject-generator/src/test/java/io/avaje/inject/generator/UtilTest.java b/inject-generator/src/test/java/io/avaje/inject/generator/UtilTest.java
index e9173d0ab..edeb06e12 100644
--- a/inject-generator/src/test/java/io/avaje/inject/generator/UtilTest.java
+++ b/inject-generator/src/test/java/io/avaje/inject/generator/UtilTest.java
@@ -27,7 +27,6 @@ void nestedShortName() {
@Test
void nestedPackageOf() {
- ProcessingContext.testInit();
assertEquals(Util.nestedPackageOf("com.example.Foo.Bar"), "com.example");
assertEquals(Util.nestedPackageOf("com.example.other.foo.Bar"), "com.example.other");
}