Skip to content

Commit 6daca91

Browse files
committed
Further JSpecify refinements
1 parent 8e15092 commit 6daca91

22 files changed

+82
-57
lines changed

src/main/java/org/mybatis/dynamic/sql/AbstractListValueCondition.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,16 @@
2323
import java.util.stream.Collectors;
2424
import java.util.stream.Stream;
2525

26+
import org.jspecify.annotations.Nullable;
27+
2628
public abstract class AbstractListValueCondition<T> implements VisitableCondition<T> {
27-
protected final Collection<T> values;
29+
protected final Collection<@Nullable T> values;
2830

29-
protected AbstractListValueCondition(Collection<T> values) {
31+
protected AbstractListValueCondition(Collection<@Nullable T> values) {
3032
this.values = Objects.requireNonNull(values);
3133
}
3234

33-
public final Stream<T> values() {
35+
public final Stream<@Nullable T> values() {
3436
return values.stream();
3537
}
3638

@@ -44,18 +46,18 @@ public <R> R accept(ConditionVisitor<T, R> visitor) {
4446
return visitor.visit(this);
4547
}
4648

47-
private <R> Collection<R> applyMapper(Function<? super T, ? extends R> mapper) {
49+
private <R> Collection<R> applyMapper(Function<? super @Nullable T, ? extends @Nullable R> mapper) {
4850
Objects.requireNonNull(mapper);
4951
return values.stream().map(mapper).collect(Collectors.toList());
5052
}
5153

52-
private Collection<T> applyFilter(Predicate<? super T> predicate) {
54+
private Collection<T> applyFilter(Predicate<? super @Nullable T> predicate) {
5355
Objects.requireNonNull(predicate);
5456
return values.stream().filter(predicate).toList();
5557
}
5658

57-
protected <S extends AbstractListValueCondition<T>> S filterSupport(Predicate<? super T> predicate,
58-
Function<Collection<T>, S> constructor, S self, Supplier<S> emptySupplier) {
59+
protected <S extends AbstractListValueCondition<T>> S filterSupport(Predicate<? super @Nullable T> predicate,
60+
Function<Collection<@Nullable T>, S> constructor, S self, Supplier<S> emptySupplier) {
5961
if (isEmpty()) {
6062
return self;
6163
} else {
@@ -64,8 +66,9 @@ protected <S extends AbstractListValueCondition<T>> S filterSupport(Predicate<?
6466
}
6567
}
6668

67-
protected <R, S extends AbstractListValueCondition<R>> S mapSupport(Function<? super T, ? extends R> mapper,
68-
Function<Collection<R>, S> constructor, Supplier<S> emptySupplier) {
69+
protected <R, S extends AbstractListValueCondition<R>> S mapSupport(
70+
Function<? super @Nullable T, ? extends @Nullable R> mapper,
71+
Function<Collection<@Nullable R>, S> constructor, Supplier<S> emptySupplier) {
6972
if (isEmpty()) {
7073
return emptySupplier.get();
7174
} else {
@@ -81,7 +84,7 @@ protected <R, S extends AbstractListValueCondition<R>> S mapSupport(Function<? s
8184
*
8285
* @return a new condition with filtered values if renderable, otherwise an empty condition
8386
*/
84-
public abstract AbstractListValueCondition<T> filter(Predicate<? super T> predicate);
87+
public abstract AbstractListValueCondition<T> filter(Predicate<? super @Nullable T> predicate);
8588

8689
public abstract String operator();
8790
}

src/main/java/org/mybatis/dynamic/sql/SqlBuilder.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -764,11 +764,11 @@ static <T> IsLessThanOrEqualTo<T> isLessThanOrEqualToWhenPresent(Supplier<@Nulla
764764
}
765765

766766
@SafeVarargs
767-
static <T> IsIn<T> isIn(T... values) {
767+
static <T> IsIn<T> isIn(@Nullable T... values) {
768768
return IsIn.of(values);
769769
}
770770

771-
static <T> IsIn<T> isIn(Collection<T> values) {
771+
static <T> IsIn<T> isIn(Collection<@Nullable T> values) {
772772
return IsIn.of(values);
773773
}
774774

@@ -786,11 +786,11 @@ static <T> IsInWhenPresent<T> isInWhenPresent(@Nullable Collection<@Nullable T>
786786
}
787787

788788
@SafeVarargs
789-
static <T> IsNotIn<T> isNotIn(T... values) {
789+
static <T> IsNotIn<T> isNotIn(@Nullable T... values) {
790790
return IsNotIn.of(values);
791791
}
792792

793-
static <T> IsNotIn<T> isNotIn(Collection<T> values) {
793+
static <T> IsNotIn<T> isNotIn(Collection<@Nullable T> values) {
794794
return IsNotIn.of(values);
795795
}
796796

@@ -914,11 +914,11 @@ static IsNotLikeCaseInsensitive isNotLikeCaseInsensitiveWhenPresent(Supplier<@Nu
914914
return isNotLikeCaseInsensitiveWhenPresent(valueSupplier.get());
915915
}
916916

917-
static IsInCaseInsensitive isInCaseInsensitive(String... values) {
917+
static IsInCaseInsensitive isInCaseInsensitive(@Nullable String... values) {
918918
return IsInCaseInsensitive.of(values);
919919
}
920920

921-
static IsInCaseInsensitive isInCaseInsensitive(Collection<String> values) {
921+
static IsInCaseInsensitive isInCaseInsensitive(Collection<@Nullable String> values) {
922922
return IsInCaseInsensitive.of(values);
923923
}
924924

@@ -931,11 +931,11 @@ static IsInCaseInsensitiveWhenPresent isInCaseInsensitiveWhenPresent(
931931
return values == null ? IsInCaseInsensitiveWhenPresent.empty() : IsInCaseInsensitiveWhenPresent.of(values);
932932
}
933933

934-
static IsNotInCaseInsensitive isNotInCaseInsensitive(String... values) {
934+
static IsNotInCaseInsensitive isNotInCaseInsensitive(@Nullable String... values) {
935935
return IsNotInCaseInsensitive.of(values);
936936
}
937937

938-
static IsNotInCaseInsensitive isNotInCaseInsensitive(Collection<String> values) {
938+
static IsNotInCaseInsensitive isNotInCaseInsensitive(Collection<@Nullable String> values) {
939939
return IsNotInCaseInsensitive.of(values);
940940
}
941941

src/main/java/org/mybatis/dynamic/sql/insert/GeneralInsertDSL.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,20 +92,20 @@ public GeneralInsertDSL toValue(Supplier<T> valueSupplier) {
9292
return GeneralInsertDSL.this;
9393
}
9494

95-
public GeneralInsertDSL toValueOrNull(T value) {
95+
public GeneralInsertDSL toValueOrNull(@Nullable T value) {
9696
return toValueOrNull(() -> value);
9797
}
9898

99-
public GeneralInsertDSL toValueOrNull(Supplier<T> valueSupplier) {
99+
public GeneralInsertDSL toValueOrNull(Supplier<@Nullable T> valueSupplier) {
100100
columnMappings.add(ValueOrNullMapping.of(column, valueSupplier));
101101
return GeneralInsertDSL.this;
102102
}
103103

104-
public GeneralInsertDSL toValueWhenPresent(T value) {
104+
public GeneralInsertDSL toValueWhenPresent(@Nullable T value) {
105105
return toValueWhenPresent(() -> value);
106106
}
107107

108-
public GeneralInsertDSL toValueWhenPresent(Supplier<T> valueSupplier) {
108+
public GeneralInsertDSL toValueWhenPresent(Supplier<@Nullable T> valueSupplier) {
109109
columnMappings.add(ValueWhenPresentMapping.of(column, valueSupplier));
110110
return GeneralInsertDSL.this;
111111
}

src/main/java/org/mybatis/dynamic/sql/insert/InsertColumnListModel.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,14 @@
2020
import java.util.Objects;
2121
import java.util.stream.Stream;
2222

23+
import org.jspecify.annotations.Nullable;
2324
import org.mybatis.dynamic.sql.SqlColumn;
2425
import org.mybatis.dynamic.sql.util.Validator;
2526

2627
public class InsertColumnListModel {
2728
private final List<SqlColumn<?>> columns = new ArrayList<>();
2829

29-
private InsertColumnListModel(List<SqlColumn<?>> columns) {
30+
private InsertColumnListModel(@Nullable List<SqlColumn<?>> columns) {
3031
Objects.requireNonNull(columns);
3132
Validator.assertNotEmpty(columns, "ERROR.4"); //$NON-NLS-1$
3233
this.columns.addAll(columns);
@@ -37,7 +38,7 @@ public Stream<SqlColumn<?>> columns() {
3738
return columns.stream();
3839
}
3940

40-
public static InsertColumnListModel of(List<SqlColumn<?>> columns) {
41+
public static InsertColumnListModel of(@Nullable List<SqlColumn<?>> columns) {
4142
return new InsertColumnListModel(columns);
4243
}
4344
}

src/main/java/org/mybatis/dynamic/sql/select/join/JoinModel.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,14 @@
2020
import java.util.Objects;
2121
import java.util.stream.Stream;
2222

23+
import org.jspecify.annotations.Nullable;
2324
import org.mybatis.dynamic.sql.TableExpression;
2425
import org.mybatis.dynamic.sql.util.Validator;
2526

2627
public class JoinModel {
2728
private final List<JoinSpecification> joinSpecifications = new ArrayList<>();
2829

29-
private JoinModel(List<JoinSpecification> joinSpecifications) {
30+
private JoinModel(@Nullable List<JoinSpecification> joinSpecifications) {
3031
Objects.requireNonNull(joinSpecifications);
3132
Validator.assertNotEmpty(joinSpecifications, "ERROR.15"); //$NON-NLS-1$
3233
this.joinSpecifications.addAll(joinSpecifications);
@@ -36,7 +37,7 @@ public Stream<JoinSpecification> joinSpecifications() {
3637
return joinSpecifications.stream();
3738
}
3839

39-
public static JoinModel of(List<JoinSpecification> joinSpecifications) {
40+
public static JoinModel of(@Nullable List<JoinSpecification> joinSpecifications) {
4041
return new JoinModel(joinSpecifications);
4142
}
4243

src/main/java/org/mybatis/dynamic/sql/update/UpdateDSL.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,20 +174,20 @@ public UpdateDSL<R> equalTo(BasicColumn rightColumn) {
174174
return UpdateDSL.this;
175175
}
176176

177-
public UpdateDSL<R> equalToOrNull(T value) {
177+
public UpdateDSL<R> equalToOrNull(@Nullable T value) {
178178
return equalToOrNull(() -> value);
179179
}
180180

181-
public UpdateDSL<R> equalToOrNull(Supplier<T> valueSupplier) {
181+
public UpdateDSL<R> equalToOrNull(Supplier<@Nullable T> valueSupplier) {
182182
columnMappings.add(ValueOrNullMapping.of(column, valueSupplier));
183183
return UpdateDSL.this;
184184
}
185185

186-
public UpdateDSL<R> equalToWhenPresent(T value) {
186+
public UpdateDSL<R> equalToWhenPresent(@Nullable T value) {
187187
return equalToWhenPresent(() -> value);
188188
}
189189

190-
public UpdateDSL<R> equalToWhenPresent(Supplier<T> valueSupplier) {
190+
public UpdateDSL<R> equalToWhenPresent(Supplier<@Nullable T> valueSupplier) {
191191
columnMappings.add(ValueWhenPresentMapping.of(column, valueSupplier));
192192
return UpdateDSL.this;
193193
}

src/main/java/org/mybatis/dynamic/sql/where/condition/AndGatherer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public R and(@Nullable T value2) {
4242
return build();
4343
}
4444

45-
public R and(Supplier<T> valueSupplier2) {
45+
public R and(Supplier<@Nullable T> valueSupplier2) {
4646
return and(valueSupplier2.get());
4747
}
4848

src/main/java/org/mybatis/dynamic/sql/where/condition/IsInCaseInsensitive.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public static IsInCaseInsensitive empty() {
3535
return EMPTY;
3636
}
3737

38-
protected IsInCaseInsensitive(Collection<String> values) {
38+
protected IsInCaseInsensitive(Collection<@Nullable String> values) {
3939
super(values);
4040
}
4141

@@ -66,11 +66,11 @@ public IsInCaseInsensitive map(UnaryOperator<@Nullable String> mapper) {
6666
return mapSupport(mapper, IsInCaseInsensitive::new, IsInCaseInsensitive::empty);
6767
}
6868

69-
public static IsInCaseInsensitive of(String... values) {
69+
public static IsInCaseInsensitive of(@Nullable String... values) {
7070
return of(Arrays.asList(values));
7171
}
7272

73-
public static IsInCaseInsensitive of(Collection<String> values) {
73+
public static IsInCaseInsensitive of(Collection<@Nullable String> values) {
7474
return new IsInCaseInsensitive(values).map(StringUtilities::safelyUpperCase);
7575
}
7676
}

src/main/java/org/mybatis/dynamic/sql/where/condition/IsNotInCaseInsensitive.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public static IsNotInCaseInsensitive empty() {
3535
return EMPTY;
3636
}
3737

38-
protected IsNotInCaseInsensitive(Collection<String> values) {
38+
protected IsNotInCaseInsensitive(Collection<@Nullable String> values) {
3939
super(values);
4040
}
4141

@@ -66,11 +66,11 @@ public IsNotInCaseInsensitive map(UnaryOperator<@Nullable String> mapper) {
6666
return mapSupport(mapper, IsNotInCaseInsensitive::new, IsNotInCaseInsensitive::empty);
6767
}
6868

69-
public static IsNotInCaseInsensitive of(String... values) {
69+
public static IsNotInCaseInsensitive of(@Nullable String... values) {
7070
return of(Arrays.asList(values));
7171
}
7272

73-
public static IsNotInCaseInsensitive of(Collection<String> values) {
73+
public static IsNotInCaseInsensitive of(Collection<@Nullable String> values) {
7474
return new IsNotInCaseInsensitive(values).map(StringUtilities::safelyUpperCase);
7575
}
7676
}

src/main/java/org/mybatis/dynamic/sql/where/render/DefaultConditionVisitor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public FragmentAndParameters visit(AbstractColumnComparisonCondition<T> conditio
114114
return column.convertParameterType(value);
115115
}
116116

117-
private FragmentAndParameters toFragmentAndParameters(T value) {
117+
private FragmentAndParameters toFragmentAndParameters(@Nullable T value) {
118118
RenderedParameterInfo parameterInfo = renderingContext.calculateParameterInfo(column);
119119
return FragmentAndParameters.withFragment(parameterInfo.renderedPlaceHolder())
120120
.withParameter(parameterInfo.parameterMapKey(), convertValue(value))

0 commit comments

Comments
 (0)