Skip to content

Commit b0e9ea9

Browse files
committed
Refactor DaoMetaFactory to use QueryMetaFactorySupplier
1 parent 6f7e48c commit b0e9ea9

File tree

1 file changed

+25
-23
lines changed

1 file changed

+25
-23
lines changed

doma-processor/src/main/java/org/seasar/doma/internal/apt/meta/dao/DaoMetaFactory.java

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,12 @@
2121

2222
import java.io.File;
2323
import java.net.URI;
24-
import java.util.ArrayList;
2524
import java.util.Arrays;
2625
import java.util.Collections;
2726
import java.util.HashSet;
2827
import java.util.List;
2928
import java.util.Optional;
3029
import java.util.Set;
31-
import java.util.function.BiFunction;
3230
import javax.lang.model.element.AnnotationMirror;
3331
import javax.lang.model.element.AnnotationValue;
3432
import javax.lang.model.element.ExecutableElement;
@@ -92,30 +90,30 @@
9290

9391
public class DaoMetaFactory implements TypeElementMetaFactory<DaoMeta> {
9492

95-
private final RoundContext ctx;
93+
private static final List<QueryMetaFactorySupplier> suppliers =
94+
List.of(
95+
SqlFileSelectQueryMetaFactory::new,
96+
AutoModifyQueryMetaFactory::new,
97+
AutoMultiInsertQueryMetaFactory::new,
98+
AutoBatchModifyQueryMetaFactory::new,
99+
AutoFunctionQueryMetaFactory::new,
100+
AutoProcedureQueryMetaFactory::new,
101+
SqlFileModifyQueryMetaFactory::new,
102+
SqlFileBatchModifyQueryMetaFactory::new,
103+
SqlFileScriptQueryMetaFactory::new,
104+
DefaultQueryMetaFactory::new,
105+
ArrayCreateQueryMetaFactory::new,
106+
BlobCreateQueryMetaFactory::new,
107+
ClobCreateQueryMetaFactory::new,
108+
NClobCreateQueryMetaFactory::new,
109+
SQLXMLCreateQueryMetaFactory::new,
110+
SqlProcessorQueryMetaFactory::new);
96111

97-
private final List<BiFunction<TypeElement, ExecutableElement, QueryMetaFactory>> providers =
98-
new ArrayList<>(15);
112+
private final RoundContext ctx;
99113

100114
public DaoMetaFactory(RoundContext ctx) {
101115
assertNotNull(ctx);
102116
this.ctx = ctx;
103-
providers.add((dao, method) -> new SqlFileSelectQueryMetaFactory(ctx, dao, method));
104-
providers.add((dao, method) -> new AutoModifyQueryMetaFactory(ctx, dao, method));
105-
providers.add((dao, method) -> new AutoMultiInsertQueryMetaFactory(ctx, dao, method));
106-
providers.add((dao, method) -> new AutoBatchModifyQueryMetaFactory(ctx, dao, method));
107-
providers.add((dao, method) -> new AutoFunctionQueryMetaFactory(ctx, dao, method));
108-
providers.add((dao, method) -> new AutoProcedureQueryMetaFactory(ctx, dao, method));
109-
providers.add((dao, method) -> new SqlFileModifyQueryMetaFactory(ctx, dao, method));
110-
providers.add((dao, method) -> new SqlFileBatchModifyQueryMetaFactory(ctx, dao, method));
111-
providers.add((dao, method) -> new SqlFileScriptQueryMetaFactory(ctx, dao, method));
112-
providers.add((dao, method) -> new DefaultQueryMetaFactory(ctx, dao, method));
113-
providers.add((dao, method) -> new ArrayCreateQueryMetaFactory(ctx, dao, method));
114-
providers.add((dao, method) -> new BlobCreateQueryMetaFactory(ctx, dao, method));
115-
providers.add((dao, method) -> new ClobCreateQueryMetaFactory(ctx, dao, method));
116-
providers.add((dao, method) -> new NClobCreateQueryMetaFactory(ctx, dao, method));
117-
providers.add((dao, method) -> new SQLXMLCreateQueryMetaFactory(ctx, dao, method));
118-
providers.add((dao, method) -> new SqlProcessorQueryMetaFactory(ctx, dao, method));
119117
}
120118

121119
@Override
@@ -282,8 +280,8 @@ private void validateMethod(TypeElement interfaceElement, ExecutableElement meth
282280
}
283281

284282
private QueryMeta createQueryMeta(DaoMeta daoMeta, ExecutableElement methodElement) {
285-
for (BiFunction<TypeElement, ExecutableElement, QueryMetaFactory> provider : providers) {
286-
QueryMetaFactory factory = provider.apply(daoMeta.getTypeElement(), methodElement);
283+
for (QueryMetaFactorySupplier supplier : suppliers) {
284+
QueryMetaFactory factory = supplier.get(ctx, daoMeta.getTypeElement(), methodElement);
287285
QueryMeta queryMeta = factory.createQueryMeta();
288286
if (queryMeta != null) {
289287
return queryMeta;
@@ -499,4 +497,8 @@ public Void visitAutoBatchModifyQueryMeta(AutoBatchModifyQueryMeta m) {
499497
return null;
500498
}
501499
}
500+
501+
interface QueryMetaFactorySupplier {
502+
QueryMetaFactory get(RoundContext ctx, TypeElement daoElement, ExecutableElement methodElement);
503+
}
502504
}

0 commit comments

Comments
 (0)