Skip to content

Commit c8833a9

Browse files
authored
Refactor UserDefinedExpression and related classes (#1112)
* Remove the unchecked cast warning * Make KExpressions dependent on Expressions * Make null checks comprehensive * Restrict instantiation of UserDefinedExpression to the same package
1 parent 7593bf4 commit c8833a9

File tree

3 files changed

+33
-8
lines changed

3 files changed

+33
-8
lines changed

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/expression/Expressions.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,8 @@ public static <PROPERTY> UserDefinedExpression<PROPERTY> userDefined(
321321
PropertyMetamodel<?>[] operands,
322322
Consumer<UserDefinedExpression.Declaration> block) {
323323
Objects.requireNonNull(klass);
324+
Objects.requireNonNull(name);
325+
Objects.requireNonNull(operands);
324326
Objects.requireNonNull(block);
325327
return userDefined(klass, name, Arrays.asList(operands), block);
326328
}
@@ -343,6 +345,8 @@ public static <PROPERTY> UserDefinedExpression<PROPERTY> userDefined(
343345
PropertyMetamodel<?> operand,
344346
Consumer<UserDefinedExpression.Declaration> block) {
345347
Objects.requireNonNull(klass);
348+
Objects.requireNonNull(name);
349+
Objects.requireNonNull(operand);
346350
Objects.requireNonNull(block);
347351
return userDefined(klass, name, Collections.singletonList(operand), block);
348352
}
@@ -367,6 +371,9 @@ public static <PROPERTY> UserDefinedExpression<PROPERTY> userDefined(
367371
PropertyMetamodel<?> operand2,
368372
Consumer<UserDefinedExpression.Declaration> block) {
369373
Objects.requireNonNull(klass);
374+
Objects.requireNonNull(name);
375+
Objects.requireNonNull(operand1);
376+
Objects.requireNonNull(operand2);
370377
Objects.requireNonNull(block);
371378
return userDefined(klass, name, Arrays.asList(operand1, operand2), block);
372379
}
@@ -393,6 +400,10 @@ public static <PROPERTY> UserDefinedExpression<PROPERTY> userDefined(
393400
PropertyMetamodel<?> operand3,
394401
Consumer<UserDefinedExpression.Declaration> block) {
395402
Objects.requireNonNull(klass);
403+
Objects.requireNonNull(name);
404+
Objects.requireNonNull(operand1);
405+
Objects.requireNonNull(operand2);
406+
Objects.requireNonNull(operand3);
396407
Objects.requireNonNull(block);
397408
return userDefined(klass, name, Arrays.asList(operand1, operand2, operand3), block);
398409
}
@@ -415,6 +426,8 @@ public static <PROPERTY> UserDefinedExpression<PROPERTY> userDefined(
415426
List<? extends PropertyMetamodel<?>> operands,
416427
Consumer<UserDefinedExpression.Declaration> block) {
417428
Objects.requireNonNull(klass);
429+
Objects.requireNonNull(name);
430+
Objects.requireNonNull(operands);
418431
Objects.requireNonNull(block);
419432
return new UserDefinedExpression<>(klass, name, operands, block);
420433
}
@@ -437,6 +450,8 @@ public static <PROPERTY> UserDefinedExpression<PROPERTY> userDefined(
437450
PropertyMetamodel<?>[] operands,
438451
Consumer<UserDefinedExpression.Declaration> block) {
439452
Objects.requireNonNull(resultPropertyMetamodel);
453+
Objects.requireNonNull(name);
454+
Objects.requireNonNull(operands);
440455
Objects.requireNonNull(block);
441456
return userDefined(resultPropertyMetamodel, name, Arrays.asList(operands), block);
442457
}
@@ -459,6 +474,8 @@ public static <PROPERTY> UserDefinedExpression<PROPERTY> userDefined(
459474
PropertyMetamodel<?> operand,
460475
Consumer<UserDefinedExpression.Declaration> block) {
461476
Objects.requireNonNull(resultPropertyMetamodel);
477+
Objects.requireNonNull(name);
478+
Objects.requireNonNull(operand);
462479
Objects.requireNonNull(block);
463480
return userDefined(resultPropertyMetamodel, name, Collections.singletonList(operand), block);
464481
}
@@ -483,6 +500,9 @@ public static <PROPERTY> UserDefinedExpression<PROPERTY> userDefined(
483500
PropertyMetamodel<?> operand2,
484501
Consumer<UserDefinedExpression.Declaration> block) {
485502
Objects.requireNonNull(resultPropertyMetamodel);
503+
Objects.requireNonNull(name);
504+
Objects.requireNonNull(operand1);
505+
Objects.requireNonNull(operand2);
486506
Objects.requireNonNull(block);
487507
return userDefined(resultPropertyMetamodel, name, Arrays.asList(operand1, operand2), block);
488508
}
@@ -509,6 +529,9 @@ public static <PROPERTY> UserDefinedExpression<PROPERTY> userDefined(
509529
PropertyMetamodel<?> operand3,
510530
Consumer<UserDefinedExpression.Declaration> block) {
511531
Objects.requireNonNull(resultPropertyMetamodel);
532+
Objects.requireNonNull(operand1);
533+
Objects.requireNonNull(operand2);
534+
Objects.requireNonNull(operand3);
512535
Objects.requireNonNull(block);
513536
return userDefined(
514537
resultPropertyMetamodel, name, Arrays.asList(operand1, operand2, operand3), block);
@@ -532,6 +555,8 @@ public static <PROPERTY> UserDefinedExpression<PROPERTY> userDefined(
532555
List<? extends PropertyMetamodel<?>> operands,
533556
Consumer<UserDefinedExpression.Declaration> block) {
534557
Objects.requireNonNull(resultPropertyMetamodel);
558+
Objects.requireNonNull(name);
559+
Objects.requireNonNull(operands);
535560
Objects.requireNonNull(block);
536561
return new UserDefinedExpression<>(resultPropertyMetamodel, name, operands, block);
537562
}

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/expression/UserDefinedExpression.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
public class UserDefinedExpression<PROPERTY> implements PropertyMetamodel<PROPERTY> {
1717
private final String name;
1818
private final List<? extends PropertyMetamodel<?>> operands;
19-
private final Class<PROPERTY> klass;
19+
private final Class<?> klass;
2020
private final EntityPropertyType<?, ?> type;
2121
private final Consumer<Declaration> block;
2222

23-
public UserDefinedExpression(
23+
UserDefinedExpression(
2424
Class<PROPERTY> klass,
2525
String name,
2626
List<? extends PropertyMetamodel<?>> operands,
@@ -32,13 +32,13 @@ public UserDefinedExpression(
3232
this.block = Objects.requireNonNull(block);
3333
}
3434

35-
public UserDefinedExpression(
35+
UserDefinedExpression(
3636
PropertyMetamodel<PROPERTY> resultPropertyMetamodel,
3737
String name,
3838
List<? extends PropertyMetamodel<?>> operands,
3939
Consumer<Declaration> block) {
4040
Objects.requireNonNull(resultPropertyMetamodel);
41-
this.klass = (Class<PROPERTY>) resultPropertyMetamodel.asClass();
41+
this.klass = resultPropertyMetamodel.asClass();
4242
this.type = resultPropertyMetamodel.asType();
4343
this.name = Objects.requireNonNull(name);
4444
this.operands = Objects.requireNonNull(operands);

doma-kotlin/src/main/kotlin/org/seasar/doma/kotlin/jdbc/criteria/expression/KExpressions.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -297,15 +297,15 @@ object KExpressions {
297297
operands: List<PropertyMetamodel<*>>,
298298
noinline block: UserDefinedExpression.Declaration.() -> Unit,
299299
): UserDefinedExpression<PROPERTY> {
300-
return UserDefinedExpression(PROPERTY::class.java, name, operands, block)
300+
return Expressions.userDefined(PROPERTY::class.java, name, operands, block)
301301
}
302302

303303
inline fun <reified PROPERTY> userDefined(
304304
name: String,
305305
vararg operands: PropertyMetamodel<*>,
306306
noinline block: UserDefinedExpression.Declaration.() -> Unit,
307307
): UserDefinedExpression<PROPERTY> {
308-
return UserDefinedExpression(PROPERTY::class.java, name, operands.toList(), block)
308+
return Expressions.userDefined(PROPERTY::class.java, name, operands.toList(), block)
309309
}
310310

311311
fun <PROPERTY> userDefined(
@@ -314,7 +314,7 @@ object KExpressions {
314314
operands: List<PropertyMetamodel<*>>,
315315
block: UserDefinedExpression.Declaration.() -> Unit,
316316
): UserDefinedExpression<PROPERTY> {
317-
return UserDefinedExpression(resultPropertyMetamodel, name, operands, block)
317+
return Expressions.userDefined(resultPropertyMetamodel, name, operands, block)
318318
}
319319

320320
fun <PROPERTY> userDefined(
@@ -323,6 +323,6 @@ object KExpressions {
323323
vararg operands: PropertyMetamodel<*>,
324324
block: UserDefinedExpression.Declaration.() -> Unit,
325325
): UserDefinedExpression<PROPERTY> {
326-
return UserDefinedExpression(resultPropertyMetamodel, name, operands.toList(), block)
326+
return Expressions.userDefined(resultPropertyMetamodel, name, operands.toList(), block)
327327
}
328328
}

0 commit comments

Comments
 (0)