@@ -19,6 +19,7 @@ public class FlecsComponentProcessor extends AbstractProcessor {
1919 private ComponentCodeGenerator generator ;
2020 private ComponentMapGenerator mapGenerator ;
2121 private List <TypeElement > processedComponents ;
22+ private boolean mapGenerated ;
2223
2324 @ Override
2425 public synchronized void init (ProcessingEnvironment processingEnv ) {
@@ -28,6 +29,7 @@ public synchronized void init(ProcessingEnvironment processingEnv) {
2829 this .generator = new ComponentCodeGenerator ();
2930 this .mapGenerator = new ComponentMapGenerator ();
3031 this .processedComponents = new ArrayList <>();
32+ this .mapGenerated = false ;
3133 }
3234
3335 @ Override
@@ -39,15 +41,6 @@ public SourceVersion getSupportedSourceVersion() {
3941 public boolean process (Set <? extends TypeElement > annotations , RoundEnvironment roundEnv ) {
4042
4143 if (roundEnv .processingOver ()) {
42- if (!this .processedComponents .isEmpty ()) {
43- try {
44- JavaFile mapFile = this .mapGenerator .generateComponentMap (this .processedComponents );
45- mapFile .writeTo (this .filer );
46- this .messager .printMessage (Diagnostic .Kind .NOTE , "[@FlecsComponent] Generated ComponentMap with " + processedComponents .size () + " components" );
47- } catch (IOException e ) {
48- this .messager .printMessage (Diagnostic .Kind .ERROR , "Failed to generate ComponentMap: " + e .getMessage ());
49- }
50- }
5144 return false ;
5245 }
5346
@@ -69,6 +62,16 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
6962 }
7063 }
7164
65+ if (!this .mapGenerated && !this .processedComponents .isEmpty () && annotations .isEmpty ()) {
66+ try {
67+ JavaFile mapFile = this .mapGenerator .generateComponentMap (this .processedComponents );
68+ mapFile .writeTo (this .filer );
69+ this .mapGenerated = true ;
70+ } catch (IOException e ) {
71+ this .messager .printMessage (Diagnostic .Kind .ERROR , "Failed to generate ComponentMap: " + e .getMessage ());
72+ }
73+ }
74+
7275 return true ;
7376 }
7477
@@ -85,8 +88,6 @@ private void processRecord(TypeElement recordElement) throws IOException {
8588
8689 JavaFile javaFile = generator .generateComponentClass (recordElement , fields );
8790 javaFile .writeTo (filer );
88-
89- this .messager .printMessage (Diagnostic .Kind .NOTE , "[@FlecsComponent] Generated: " + recordElement .getQualifiedName ());
9091 }
9192
9293 private List <VariableElement > extractRecordComponents (TypeElement recordElement ) {
0 commit comments