import com.vaadin.annotations.PropertyId;
import com.vaadin.data.util.BeanUtil;
import com.vaadin.data.validator.BeanValidator;
-import com.vaadin.server.SerializableBiConsumer;
+import com.vaadin.server.Setter;
import com.vaadin.server.SerializableFunction;
import com.vaadin.server.SerializablePredicate;
import com.vaadin.ui.Label;
* if the property has no accessible getter
*
* @see BindingBuilder#bind(ValueProvider,
- * SerializableBiConsumer)
+ * Setter)
*/
public Binding<BEAN, TARGET> bind(String propertyName);
}
* @throws IllegalArgumentException
* if the property has no accessible getter
*
- * @see #bind(HasValue, ValueProvider, SerializableBiConsumer)
+ * @see #bind(HasValue, ValueProvider, Setter)
*/
public <FIELDVALUE> Binding<BEAN, FIELDVALUE> bind(
HasValue<FIELDVALUE> field, String propertyName) {
import com.vaadin.data.converter.StringToIntegerConverter;
import com.vaadin.event.EventRouter;
import com.vaadin.server.ErrorMessage;
-import com.vaadin.server.SerializableBiConsumer;
+import com.vaadin.server.Setter;
import com.vaadin.server.SerializableFunction;
import com.vaadin.server.SerializablePredicate;
import com.vaadin.server.UserError;
*/
public Binding<BEAN, TARGET> bind(
ValueProvider<BEAN, TARGET> getter,
- com.vaadin.server.SerializableBiConsumer<BEAN, TARGET> setter);
+ Setter<BEAN, TARGET> setter);
/**
* Adds a validator to this binding. Validators are applied, in
* which must match the current target data type of the binding, and a
* model type, which can be any data type and becomes the new target
* type of the binding. When invoking
- * {@link #bind(ValueProvider, SerializableBiConsumer)}, the
+ * {@link #bind(ValueProvider, Setter)}, the
* target type of the binding must match the getter/setter types.
* <p>
* For instance, a {@code TextField} can be bound to an integer-typed
* type, which must match the current target data type of the binding,
* and a model type, which can be any data type and becomes the new
* target type of the binding. When invoking
- * {@link #bind(ValueProvider, SerializableBiConsumer)}, the
+ * {@link #bind(ValueProvider, Setter)}, the
* target type of the binding must match the getter/setter types.
* <p>
* For instance, a {@code TextField} can be bound to an integer-typed
* type, which must match the current target data type of the binding,
* and a model type, which can be any data type and becomes the new
* target type of the binding. When invoking
- * {@link #bind(ValueProvider, SerializableBiConsumer)}, the
+ * {@link #bind(ValueProvider, Setter)}, the
* target type of the binding must match the getter/setter types.
* <p>
* For instance, a {@code TextField} can be bound to an integer-typed
@Override
public Binding<BEAN, TARGET> bind(
ValueProvider<BEAN, TARGET> getter,
- SerializableBiConsumer<BEAN, TARGET> setter) {
+ Setter<BEAN, TARGET> setter) {
checkUnbound();
Objects.requireNonNull(getter, "getter cannot be null");
private final BindingValidationStatusHandler statusHandler;
private final SerializableFunction<BEAN, TARGET> getter;
- private final SerializableBiConsumer<BEAN, TARGET> setter;
+ private final Setter<BEAN, TARGET> setter;
// Not final since we temporarily remove listener while changing values
private Registration onValueChange;
public BindingImpl(BindingBuilderImpl<BEAN, FIELDVALUE, TARGET> builder,
SerializableFunction<BEAN, TARGET> getter,
- SerializableBiConsumer<BEAN, TARGET> setter) {
+ Setter<BEAN, TARGET> setter) {
this.binder = builder.getBinder();
this.field = builder.field;
this.statusHandler = builder.statusHandler;
/**
* Creates a new binding for the given field. The returned builder may be
* further configured before invoking
- * {@link BindingBuilder#bind(ValueProvider, SerializableBiConsumer)}
+ * {@link BindingBuilder#bind(ValueProvider, Setter)}
* which completes the binding. Until {@code Binding.bind} is called, the
* binding has no effect.
* <p>
* the field to be bound, not null
* @return the new binding
*
- * @see #bind(HasValue, ValueProvider, SerializableBiConsumer)
+ * @see #bind(HasValue, ValueProvider, Setter)
*/
public <FIELDVALUE> BindingBuilder<BEAN, FIELDVALUE> forField(
HasValue<FIELDVALUE> field) {
public <FIELDVALUE> Binding<BEAN, FIELDVALUE> bind(
HasValue<FIELDVALUE> field,
ValueProvider<BEAN, FIELDVALUE> getter,
- SerializableBiConsumer<BEAN, FIELDVALUE> setter) {
+ Setter<BEAN, FIELDVALUE> setter) {
return forField(field).bind(getter, setter);
}
* <li>{@link #setBean(Object)} is called
* <li>{@link #removeBean()} is called
* <li>
- * {@link BindingBuilder#bind(ValueProvider, SerializableBiConsumer)}
+ * {@link BindingBuilder#bind(ValueProvider, Setter)}
* is called
* <li>{@link Binder#validate()} or {@link Binding#validate()} is called
* </ul>
+++ /dev/null
-/*
- * Copyright 2000-2016 Vaadin Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.vaadin.server;
-
-import java.io.Serializable;
-import java.util.function.BiConsumer;
-
-/**
- * A {@link BiConsumer} that is also {@link Serializable}.
- *
- * @see BiConsumer
- * @param <T>
- * the type of the first argument to the operation
- * @param <U>
- * the type of the second argument to the operation
- *
- * @since 8.0
- * @author Vaadin Ltd
- *
- */
-@FunctionalInterface
-public interface SerializableBiConsumer<T, U>
- extends BiConsumer<T, U>, Serializable {
- // Only method inherited from BiConsumer
-}
--- /dev/null
+/*
+ * Copyright 2000-2016 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.server;
+
+import com.vaadin.data.Binder;
+import com.vaadin.data.HasValue;
+
+import java.io.Serializable;
+import java.util.function.BiConsumer;
+
+/**
+ * The function to write the field value to the bean property
+ *
+ * @see BiConsumer
+ * @see Binder#bind(HasValue, SerializableFunction, Setter)
+ * @param <BEAN>
+ * the type of the target bean
+ * @param <FIELDVALUE>
+ * the field value type to be written to the bean
+ *
+ * @since 8.0
+ * @author Vaadin Ltd
+ *
+ */
+@FunctionalInterface
+public interface Setter<BEAN, FIELDVALUE>
+ extends BiConsumer<BEAN, FIELDVALUE>, Serializable {
+
+ /** Save value to the bean property
+ *
+ * @param bean
+ * the target bean
+ * @param fieldvalue
+ * the field value to be written to the bean
+ */
+ @Override
+ void accept(BEAN bean, FIELDVALUE fieldvalue);
+}