static void bind()

in cloud-spanner-r2dbc/src/main/java/com/google/cloud/spanner/r2dbc/v2/ClientLibraryBinder.java [106:139]


  static void bind(Statement.Builder builder, String name, Object value) {
    Assert.requireNonNull(name, "Column name must not be null");
    Assert.requireNonNull(value, "Value must not be null");

    Object finalValue;
    Class<?> valueClass;

    final SpannerType spannerType;

    if (value instanceof Parameter) {
      Parameter param = (Parameter) value;
      finalValue = param.getValue();
      Type type = param.getType();
      spannerType = type instanceof SpannerType ? (SpannerType) param.getType() : null;
      valueClass = type.getJavaType();
    } else if (isTypedNull(value)) {
      finalValue = null;
      valueClass = ((TypedNull) value).getType();
      spannerType = null;
    } else {
      finalValue = value;
      valueClass = value.getClass();
      spannerType = null;
    }

    Optional<ClientLibraryTypeBinder> optionalBinder = binders.stream()
        .filter(e -> e.canBind(valueClass, spannerType))
        .findFirst();
    if (!optionalBinder.isPresent()) {
      throw new BindingFailureException("Can't find a binder for type: " + valueClass);
    }

    optionalBinder.get().bind(builder, name, finalValue, spannerType);
  }