Skip to content

Commit ebed47a

Browse files
committed
Refactor to simplify processor instantiation in DomaProcessor
1 parent a914936 commit ebed47a

File tree

1 file changed

+18
-69
lines changed

1 file changed

+18
-69
lines changed

doma-processor/src/main/java/org/seasar/doma/internal/apt/DomaProcessor.java

Lines changed: 18 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,20 @@
2828
import java.util.List;
2929
import java.util.Objects;
3030
import java.util.Set;
31-
import java.util.function.BiConsumer;
31+
import java.util.function.Function;
3232
import javax.annotation.processing.AbstractProcessor;
3333
import javax.annotation.processing.ProcessingEnvironment;
3434
import javax.annotation.processing.RoundEnvironment;
3535
import javax.annotation.processing.SupportedAnnotationTypes;
3636
import javax.annotation.processing.SupportedOptions;
3737
import javax.lang.model.SourceVersion;
38-
import javax.lang.model.element.Element;
3938
import javax.lang.model.element.TypeElement;
4039
import org.seasar.doma.internal.apt.processor.AggregateStrategyProcessor;
4140
import org.seasar.doma.internal.apt.processor.DaoProcessor;
4241
import org.seasar.doma.internal.apt.processor.DataTypeProcessor;
4342
import org.seasar.doma.internal.apt.processor.DomainConvertersProcessor;
4443
import org.seasar.doma.internal.apt.processor.DomainProcessor;
44+
import org.seasar.doma.internal.apt.processor.ElementProcessor;
4545
import org.seasar.doma.internal.apt.processor.EmbeddableProcessor;
4646
import org.seasar.doma.internal.apt.processor.EntityProcessor;
4747
import org.seasar.doma.internal.apt.processor.ExternalDomainProcessor;
@@ -80,22 +80,19 @@
8080
})
8181
public 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

Comments
 (0)