Skip to content

Commit

Permalink
Polishing: Removed TODO for Identifier value
Browse files Browse the repository at this point in the history
  • Loading branch information
mipo256 committed Sep 29, 2024
1 parent d0053fb commit fb159b9
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import java.util.Objects;

import org.springframework.data.relational.core.sql.SqlIdentifier;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
Expand Down Expand Up @@ -60,17 +61,16 @@ public static Identifier empty() {
* Creates an {@link Identifier} from {@code name}, {@code value}, and a {@link Class target type}.
*
* @param name must not be {@literal null} or empty.
* @param value
* @param value must not be null
* @param targetType must not be {@literal null}.
* @return the {@link Identifier} for {@code name}, {@code value}, and a {@link Class target type}.
*/
public static Identifier of(SqlIdentifier name, Object value, Class<?> targetType) {

Assert.notNull(name, "Name must not be empty");
Assert.notNull(value, "Value must not be empty");
Assert.notNull(targetType, "Target type must not be null");

// TODO: Is value allowed to be null? SingleIdentifierValue says so, but this type doesn't allows it and
// SqlParametersFactory.lambda$forQueryByIdentifier$1 fails with a NPE.
return new Identifier(Collections.singletonList(new SingleIdentifierValue(name, value, targetType)));
}

Expand All @@ -92,7 +92,8 @@ public static Identifier from(Map<SqlIdentifier, Object> map) {

map.forEach((k, v) -> {

values.add(new SingleIdentifierValue(k, v, v != null ? ClassUtils.getUserClass(v) : Object.class));
Assert.notNull(v, "The source map for identifier cannot contain null values");
values.add(new SingleIdentifierValue(k, v, ClassUtils.getUserClass(v)));
});

return new Identifier(Collections.unmodifiableList(values));
Expand Down Expand Up @@ -199,9 +200,10 @@ static final class SingleIdentifierValue {
private final Object value;
private final Class<?> targetType;

private SingleIdentifierValue(SqlIdentifier name, @Nullable Object value, Class<?> targetType) {
private SingleIdentifierValue(SqlIdentifier name, Object value, Class<?> targetType) {

Assert.notNull(name, "Name must not be null");
Assert.notNull(value, "Name must not be null");
Assert.notNull(targetType, "TargetType must not be null");

this.name = name;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,7 @@ public static JdbcIdentifierBuilder empty() {
/**
* Creates ParentKeys with backreference for the given path and value of the parents id.
*/
public static JdbcIdentifierBuilder forBackReferences(JdbcConverter converter, AggregatePath path,
@Nullable Object value) {
public static JdbcIdentifierBuilder forBackReferences(JdbcConverter converter, AggregatePath path, Object value) {

Identifier identifier = Identifier.of( //
path.getTableInfo().reverseColumnInfo().name(), //
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,16 @@ public void getParametersByName() {
public void parametersWithStringKeysUseObjectAsTypeForNull() {

HashMap<SqlIdentifier, Object> parameters = new HashMap<>();
parameters.put(unquoted("one"), null);
Object value = new Object();

parameters.put(unquoted("one"), value);

Identifier identifier = Identifier.from(parameters);

assertThat(identifier.getParts()) //
.extracting("name", "value", "targetType") //
.containsExactly( //
Assertions.tuple(unquoted("one"), null, Object.class) //
Assertions.tuple(unquoted("one"), value, Object.class) //
);
}

Expand Down

0 comments on commit fb159b9

Please # to comment.