2828import java .util .List ;
2929import java .util .Objects ;
3030import java .util .Set ;
31- import java .util .function .BiConsumer ;
31+ import java .util .function .Function ;
3232import javax .annotation .processing .AbstractProcessor ;
3333import javax .annotation .processing .ProcessingEnvironment ;
3434import javax .annotation .processing .RoundEnvironment ;
3535import javax .annotation .processing .SupportedAnnotationTypes ;
3636import javax .annotation .processing .SupportedOptions ;
3737import javax .lang .model .SourceVersion ;
38- import javax .lang .model .element .Element ;
3938import javax .lang .model .element .TypeElement ;
4039import org .seasar .doma .internal .apt .processor .AggregateStrategyProcessor ;
4140import org .seasar .doma .internal .apt .processor .DaoProcessor ;
4241import org .seasar .doma .internal .apt .processor .DataTypeProcessor ;
4342import org .seasar .doma .internal .apt .processor .DomainConvertersProcessor ;
4443import org .seasar .doma .internal .apt .processor .DomainProcessor ;
44+ import org .seasar .doma .internal .apt .processor .ElementProcessor ;
4545import org .seasar .doma .internal .apt .processor .EmbeddableProcessor ;
4646import org .seasar .doma .internal .apt .processor .EntityProcessor ;
4747import org .seasar .doma .internal .apt .processor .ExternalDomainProcessor ;
8080})
8181public class DomaProcessor extends AbstractProcessor {
8282
83- private final List <Operator > operators ;
84- private ProcessingContext processingContext ;
83+ private static final List <Operator > operators =
84+ List .of (
85+ new Operator (EXTERNAL_DOMAIN , ExternalDomainProcessor ::new ),
86+ new Operator (DATA_TYPE , DataTypeProcessor ::new ),
87+ new Operator (DOMAIN , DomainProcessor ::new ),
88+ new Operator (DOMAIN_CONVERTERS , DomainConvertersProcessor ::new ),
89+ new Operator (EMBEDDABLE , EmbeddableProcessor ::new ),
90+ new Operator (ENTITY , EntityProcessor ::new ),
91+ new Operator (AGGREGATE_STRATEGY , AggregateStrategyProcessor ::new ),
92+ new Operator (DAO , DaoProcessor ::new ),
93+ new Operator (SCOPE , ScopeProcessor ::new ));
8594
86- public DomaProcessor () {
87- operators =
88- List .of (
89- new Operator (EXTERNAL_DOMAIN , DomaProcessor ::processExternalDomain ),
90- new Operator (DATA_TYPE , DomaProcessor ::processDataType ),
91- new Operator (DOMAIN , DomaProcessor ::processDomain ),
92- new Operator (DOMAIN_CONVERTERS , DomaProcessor ::processDomainConverters ),
93- new Operator (EMBEDDABLE , DomaProcessor ::processEmbeddable ),
94- new Operator (ENTITY , DomaProcessor ::processEntity ),
95- new Operator (AGGREGATE_STRATEGY , DomaProcessor ::processAggregateStrategy ),
96- new Operator (DAO , DomaProcessor ::processDao ),
97- new Operator (SCOPE , DomaProcessor ::processScope ));
98- }
95+ private ProcessingContext processingContext ;
9996
10097 @ Override
10198 public synchronized void init (ProcessingEnvironment processingEnv ) {
@@ -120,67 +117,19 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
120117 for (var operator : operators ) {
121118 var elements = roundContext .getElementsAnnotatedWith (operator .annotationName );
122119 if (!elements .isEmpty ()) {
123- operator .consumer .accept (roundContext , elements );
120+ var processor = operator .function .apply (roundContext );
121+ processor .process (elements );
124122 }
125123 }
126124
127125 return true ;
128126 }
129127
130- private static void processAggregateStrategy (
131- RoundContext roundContext , Set <? extends Element > elements ) {
132- var processor = new AggregateStrategyProcessor (roundContext );
133- processor .process (elements );
134- }
135-
136- private static void processDao (RoundContext roundContext , Set <? extends Element > elements ) {
137- var processor = new DaoProcessor (roundContext );
138- processor .process (elements );
139- }
140-
141- private static void processDataType (RoundContext roundContext , Set <? extends Element > elements ) {
142- var processor = new DataTypeProcessor (roundContext );
143- processor .process (elements );
144- }
145-
146- private static void processDomainConverters (
147- RoundContext roundContext , Set <? extends Element > elements ) {
148- var processor = new DomainConvertersProcessor (roundContext );
149- processor .process (elements );
150- }
151-
152- private static void processDomain (RoundContext roundContext , Set <? extends Element > elements ) {
153- var processor = new DomainProcessor (roundContext );
154- processor .process (elements );
155- }
156-
157- private static void processEmbeddable (
158- RoundContext roundContext , Set <? extends Element > elements ) {
159- var processor = new EmbeddableProcessor (roundContext );
160- processor .process (elements );
161- }
162-
163- private static void processEntity (RoundContext roundContext , Set <? extends Element > elements ) {
164- var processor = new EntityProcessor (roundContext );
165- processor .process (elements );
166- }
167-
168- private static void processExternalDomain (
169- RoundContext roundContext , Set <? extends Element > elements ) {
170- var processor = new ExternalDomainProcessor (roundContext );
171- processor .process (elements );
172- }
173-
174- private static void processScope (RoundContext roundContext , Set <? extends Element > elements ) {
175- var processor = new ScopeProcessor (roundContext );
176- processor .process (elements );
177- }
178-
179128 private record Operator (
180- String annotationName , BiConsumer <RoundContext , Set <? extends Element >> consumer ) {
129+ String annotationName , Function <RoundContext , ElementProcessor > function ) {
181130 Operator {
182131 Objects .requireNonNull (annotationName );
183- Objects .requireNonNull (consumer );
132+ Objects .requireNonNull (function );
184133 }
185134 }
186135}
0 commit comments