Browse Source

Ensure all BeanBinding chaining methods return BeanBinding

Change-Id: Ifbd5f278c83fcadbe6cf21d6c1f40914b35c4aba
tags/8.0.0.alpha8
Leif Åstrand 7 years ago
parent
commit
f586bc155f

+ 51
- 0
server/src/main/java/com/vaadin/data/BeanBinder.java View File

@@ -40,6 +40,7 @@ import com.vaadin.data.validator.BeanValidator;
import com.vaadin.server.SerializableBiConsumer;
import com.vaadin.server.SerializableFunction;
import com.vaadin.server.SerializablePredicate;
import com.vaadin.ui.Label;
import com.vaadin.util.ReflectTools;

/**
@@ -79,6 +80,32 @@ public class BeanBinder<BEAN> extends Binder<BEAN> {
predicate, message);
}

@Override
default BeanBinding<BEAN, TARGET> withValidator(
SerializablePredicate<? super TARGET> predicate,
ErrorMessageProvider errorMessageProvider) {
return (BeanBinding<BEAN, TARGET>) Binding.super.withValidator(
predicate, errorMessageProvider);
}

@Override
default BeanBinding<BEAN, TARGET> withNullRepresentation(
TARGET nullRepresentation) {
return (BeanBinding<BEAN, TARGET>) Binding.super.withNullRepresentation(
nullRepresentation);
}

@Override
public BeanBinding<BEAN, TARGET> setRequired(
ErrorMessageProvider errorMessageProvider);

@Override
public default BeanBinding<BEAN, TARGET> setRequired(
String errorMessage) {
return (BeanBinding<BEAN, TARGET>) Binding.super.setRequired(
errorMessage);
}

@Override
public <NEWTARGET> BeanBinding<BEAN, NEWTARGET> withConverter(
Converter<TARGET, NEWTARGET> converter);
@@ -100,6 +127,16 @@ public class BeanBinder<BEAN> extends Binder<BEAN> {
toModel, toPresentation, errorMessage);
}

@Override
public BeanBinding<BEAN, TARGET> withValidationStatusHandler(
ValidationStatusHandler handler);

@Override
public default BeanBinding<BEAN, TARGET> withStatusLabel(Label label) {
return (BeanBinding<BEAN, TARGET>) Binding.super.withStatusLabel(
label);
}

/**
* Completes this binding by connecting the field to the property with
* the given name. The getter and setter methods of the property are
@@ -175,6 +212,20 @@ public class BeanBinder<BEAN> extends Binder<BEAN> {
converter);
}

@Override
public BeanBinding<BEAN, TARGET> withValidationStatusHandler(
ValidationStatusHandler handler) {
return (BeanBinding<BEAN, TARGET>) super.withValidationStatusHandler(
handler);
}

@Override
public BeanBinding<BEAN, TARGET> setRequired(
ErrorMessageProvider errorMessageProvider) {
return (BeanBinding<BEAN, TARGET>) super.setRequired(
errorMessageProvider);
}

@Override
public void bind(String propertyName) {
checkUnbound();

+ 24
- 0
server/src/test/java/com/vaadin/data/BeanBinderTest.java View File

@@ -3,11 +3,15 @@ package com.vaadin.data;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;

import java.lang.reflect.Method;
import java.util.List;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import com.vaadin.data.BeanBinder.BeanBinding;
import com.vaadin.data.Binder.Binding;
import com.vaadin.tests.data.bean.BeanToValidate;

public class BeanBinderTest
@@ -171,4 +175,24 @@ public class BeanBinderTest
assertSame(field, errors.get(0).getField());
assertEquals(message, errors.get(0).getMessage().get());
}

@Test
public void beanBindingChainingMethods() {
Method[] methods = BeanBinding.class.getMethods();
for (int i = 0; i < methods.length; i++) {
Method method = methods[i];
try {
Method actualMethod = BeanBinding.class.getMethod(
method.getName(), method.getParameterTypes());

Assert.assertNotSame(
actualMethod + " should be overridden in "
+ BeanBinding.class
+ " with more specific return type ",
Binding.class, actualMethod.getReturnType());
} catch (NoSuchMethodException | SecurityException e) {
throw new RuntimeException(e);
}
}
}
}

Loading…
Cancel
Save