3838import javax .annotation .processing .SupportedOptions ;
3939import javax .annotation .processing .SupportedSourceVersion ;
4040import javax .lang .model .SourceVersion ;
41+ import javax .lang .model .element .Element ;
4142import javax .lang .model .element .TypeElement ;
4243import javax .tools .StandardLocation ;
4344
5253 * {@link #EDC_OUTPUTDIR_OVERRIDE} as a processor parameter.
5354 */
5455@ SupportedAnnotationTypes ({
55- "org.eclipse.edc.runtime.metamodel.annotation.EdcSetting " ,
56- "org.eclipse.edc.runtime.metamodel.annotation.EdcSettingContext " ,
56+ "org.eclipse.edc.runtime.metamodel.annotation.Setting " ,
57+ "org.eclipse.edc.runtime.metamodel.annotation.SettingContext " ,
5758 "org.eclipse.edc.runtime.metamodel.annotation.Extension" ,
5859 "org.eclipse.edc.runtime.metamodel.annotation.Spi" ,
5960 "org.eclipse.edc.runtime.metamodel.annotation.ExtensionPoint" ,
@@ -72,19 +73,19 @@ public class EdcModuleProcessor extends AbstractProcessor {
7273 private final ObjectMapper mapper = new ObjectMapper ();
7374
7475 private ModuleIntrospector moduleIntrospector ;
75-
7676 private OverviewIntrospector overviewIntrospector ;
7777
7878 private EdcModule .Builder moduleBuilder ;
7979 private EdcServiceExtension .Builder extensionBuilder ;
8080 private ExtensionIntrospector extensionIntrospector ;
8181
8282 private ModuleType moduleType ;
83+ private Set <Element > extensionElements ;
8384
8485 @ Override
8586 public synchronized void init (ProcessingEnvironment processingEnv ) {
8687 super .init (processingEnv );
87- moduleIntrospector = new ModuleIntrospector (processingEnv . getElementUtils (), processingEnv . getTypeUtils () );
88+ moduleIntrospector = new ModuleIntrospector (processingEnv );
8889 //todo: replace this Noop converter with an actual JavadocConverter
8990 overviewIntrospector = new OverviewIntrospector (javadoc -> javadoc , processingEnv .getElementUtils ());
9091
@@ -93,8 +94,11 @@ public synchronized void init(ProcessingEnvironment processingEnv) {
9394
9495 @ Override
9596 public boolean process (Set <? extends TypeElement > annotations , RoundEnvironment environment ) {
96- if (!initializeModuleBuilder (environment )) {
97- return false ; // error, do not continue processing
97+ if (moduleBuilder == null ) {
98+ var result = initializeModuleBuilder (environment );
99+ if (!result ) {
100+ return false ; // error, do not continue processing
101+ }
98102 }
99103
100104 if (environment .processingOver ()) {
@@ -105,8 +109,6 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
105109 }
106110
107111 if (moduleType == ModuleType .EXTENSION ) {
108- var extensionElements = moduleIntrospector .getExtensionElements (environment );
109-
110112 extensionElements .forEach (element -> {
111113 extensionBuilder = EdcServiceExtension .Builder .newInstance ().type (moduleType )
112114 .name (extensionIntrospector .getExtensionName (element ))
@@ -116,6 +118,7 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
116118 .configuration (extensionIntrospector .resolveConfigurationSettings (element ))
117119 .overview (overviewIntrospector .generateModuleOverview (moduleType , environment ))
118120 .categories (extensionIntrospector .getExtensionCategories (element ));
121+
119122 moduleBuilder .extension (extensionBuilder .build ());
120123 });
121124 } else {
@@ -129,11 +132,6 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
129132 }
130133
131134 private boolean initializeModuleBuilder (RoundEnvironment environment ) {
132- if (moduleBuilder != null ) {
133- // already initialized in a previous round
134- return true ;
135- }
136-
137135 var id = processingEnv .getOptions ().get (ID );
138136 if (id == null ) {
139137 processingEnv .getMessager ().printMessage (ERROR , "Value for '" + ID + "' not set on processor configuration. Skipping manifest generation." );
@@ -146,7 +144,8 @@ private boolean initializeModuleBuilder(RoundEnvironment environment) {
146144 return false ;
147145 }
148146
149- moduleType = determineAndValidateModuleType (environment );
147+ extensionElements = moduleIntrospector .getExtensionElements (environment );
148+ moduleType = determineAndValidateModuleType (environment , extensionElements );
150149 if (moduleType == ModuleType .INVALID ) {
151150 // error or not a module, return
152151 return false ;
@@ -158,8 +157,7 @@ private boolean initializeModuleBuilder(RoundEnvironment environment) {
158157 }
159158
160159 @ Nullable
161- private ModuleType determineAndValidateModuleType (RoundEnvironment environment ) {
162- var extensionElements = moduleIntrospector .getExtensionElements (environment );
160+ private ModuleType determineAndValidateModuleType (RoundEnvironment environment , Set <Element > extensionElements ) {
163161 if (extensionElements .isEmpty ()) {
164162 // check if it is an SPI
165163 var spiElements = environment .getElementsAnnotatedWith (Spi .class );
0 commit comments