Skip to content

Commit e2da855

Browse files
authored
[Client] Generate Component Before the Last Round (#681)
Now if not on the first compilation round, checks whether there have been any processed jsonb annotations to generate a component. This prevents issues with `ModuleElement#getDirectives`
1 parent f72350f commit e2da855

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

http-generator-client/src/main/java/io/avaje/http/generator/client/ClientProcessor.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public class ClientProcessor extends AbstractProcessor {
3939

4040
private SimpleComponentWriter componentWriter;
4141
private boolean readModuleInfo;
42+
private boolean generateComponent;
43+
private int rounds;
4244

4345
@Override
4446
public SourceVersion getSupportedSourceVersion() {
@@ -56,6 +58,10 @@ public synchronized void init(ProcessingEnvironment processingEnv) {
5658

5759
@Override
5860
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment round) {
61+
if (generateComponent || round.errorRaised()) {
62+
return false;
63+
}
64+
generateComponent = rounds++ > 0;
5965
APContext.setProjectModuleElement(annotations, round);
6066
final var platform = platform();
6167
if (!(platform instanceof ClientPlatformAdapter)) {
@@ -65,13 +71,15 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
6571
for (final Element controller : round.getElementsAnnotatedWith(typeElement(ClientPrism.PRISM_TYPE))) {
6672
if (ClientPrism.getInstanceOn(controller).generate()) {
6773
writeClient(controller);
74+
generateComponent = false;
6875
}
6976
}
7077
for (final var importedElement : round.getElementsAnnotatedWith(typeElement(ImportPrism.PRISM_TYPE))) {
7178
writeForImported(importedElement);
79+
generateComponent = false;
7280
}
7381

74-
writeComponent(round.processingOver());
82+
writeComponent(generateComponent);
7583
setPlatform(platform);
7684
return false;
7785
}

tests/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<assertj.version>3.27.6</assertj.version>
1717
<jackson.version>2.20.1</jackson.version>
1818
<jex.version>3.3</jex.version>
19-
<avaje-inject.version>12.0</avaje-inject.version>
19+
<avaje-inject.version>12.1-RC3</avaje-inject.version>
2020
<helidon.version>4.3.2</helidon.version>
2121
<javalin.version>6.7.0</javalin.version>
2222
</properties>

0 commit comments

Comments
 (0)