Browse Source

Fix setValue() methods behavior null argument value + javadocs

Change-Id: I0000c1caf7c129634473161fe4876931f3c8dabf
tags/8.0.0.alpha6
Teemu Suo-Anttila 7 years ago
parent
commit
63d218efc0
20 changed files with 274 additions and 28 deletions
  1. 1
    1
      server/src/main/java/com/vaadin/data/HasValue.java
  2. 3
    1
      server/src/main/java/com/vaadin/ui/AbstractColorPicker.java
  3. 7
    0
      server/src/main/java/com/vaadin/ui/AbstractDateField.java
  4. 2
    2
      server/src/main/java/com/vaadin/ui/AbstractField.java
  5. 1
    1
      server/src/main/java/com/vaadin/ui/AbstractMultiSelect.java
  6. 11
    1
      server/src/main/java/com/vaadin/ui/AbstractTextField.java
  7. 8
    10
      server/src/main/java/com/vaadin/ui/CheckBox.java
  8. 7
    0
      server/src/main/java/com/vaadin/ui/ComboBox.java
  9. 14
    5
      server/src/main/java/com/vaadin/ui/RichTextArea.java
  10. 17
    0
      server/src/main/java/com/vaadin/ui/Slider.java
  11. 18
    0
      server/src/main/java/com/vaadin/ui/components/colorpicker/ColorPickerGradient.java
  12. 17
    0
      server/src/main/java/com/vaadin/ui/components/colorpicker/ColorPickerGrid.java
  13. 11
    3
      server/src/main/java/com/vaadin/ui/components/colorpicker/ColorPickerPopup.java
  14. 13
    1
      server/src/main/java/com/vaadin/ui/components/colorpicker/ColorPickerPreview.java
  15. 36
    0
      server/src/test/java/com/vaadin/tests/server/component/abstracttextfield/AbstractTextFieldTest.java
  16. 36
    0
      server/src/test/java/com/vaadin/tests/server/component/colorpicker/AbstractColorPickerTest.java
  17. 58
    0
      server/src/test/java/com/vaadin/tests/server/component/colorpicker/ColorPickerComponentsTest.java
  18. 6
    0
      server/src/test/java/com/vaadin/tests/server/component/slider/SliderTest.java
  19. 6
    0
      server/src/test/java/com/vaadin/ui/CheckBoxTest.java
  20. 2
    3
      server/src/test/java/com/vaadin/ui/RichTextAreaTest.java

+ 1
- 1
server/src/main/java/com/vaadin/data/HasValue.java View File

@@ -80,6 +80,7 @@ public interface HasValue<V> extends Serializable {
* {@code true} if this event originates from the client,
* {@code false} otherwise.
*/

public ValueChangeEvent(Component component, HasValue<V> hasValue,
boolean userOriginated) {
super(hasValue);
@@ -141,7 +142,6 @@ public interface HasValue<V> extends Serializable {
@FunctionalInterface
public interface ValueChangeListener<V>
extends Consumer<ValueChangeEvent<V>>, Serializable {

@Deprecated
public static final Method VALUE_CHANGE_METHOD = ReflectTools
.findMethod(ValueChangeListener.class, "accept",

+ 3
- 1
server/src/main/java/com/vaadin/ui/AbstractColorPicker.java View File

@@ -164,10 +164,12 @@ public abstract class AbstractColorPicker extends AbstractField<Color> {

/**
* Sets the selected color of this color picker. If the new color is not
* equal to getValue(), fires a value change event.
* equal to getValue(), fires a {@link ValueChangeEvent}.
*
* @param color
* the new selected color, not null
* @throws NullPointerException
* if {@code color} is {@code null}
*/
@Override
public void setValue(Color color) {

+ 7
- 0
server/src/main/java/com/vaadin/ui/AbstractDateField.java View File

@@ -484,6 +484,13 @@ public abstract class AbstractDateField extends AbstractField<LocalDate>
return value;
}

/**
* Sets the value of this object. If the new value is not equal to
* {@code getValue()}, fires a {@link ValueChangeEvent} .
*
* @param value
* the new value, may be {@code null}
*/
@Override
public void setValue(LocalDate value) {
/*

+ 2
- 2
server/src/main/java/com/vaadin/ui/AbstractField.java View File

@@ -52,8 +52,8 @@ public abstract class AbstractField<T> extends AbstractComponent
implements HasValue<T>, HasRequired, Focusable {

@Deprecated
private static final Method VALUE_CHANGE_METHOD = ReflectTools
.findMethod(ValueChangeListener.class, "accept", ValueChangeEvent.class);
private static final Method VALUE_CHANGE_METHOD = ReflectTools.findMethod(
ValueChangeListener.class, "accept", ValueChangeEvent.class);

@Override
public void setValue(T value) {

+ 1
- 1
server/src/main/java/com/vaadin/ui/AbstractMultiSelect.java View File

@@ -366,7 +366,7 @@ public abstract class AbstractMultiSelect<T>
*
* @param value
* the items to select, not {@code null}
* @throws IllegalArgumentException
* @throws NullPointerException
* if the value is invalid
*/
@Override

+ 11
- 1
server/src/main/java/com/vaadin/ui/AbstractTextField.java View File

@@ -79,9 +79,19 @@ public abstract class AbstractTextField extends AbstractField<String>
registerRpc(new AbstractTextFieldFocusAndBlurRpcImpl());
}

/**
* Sets the value of this text field. If the new value is not equal to
* {@code getValue()}, fires a {@link ValueChangeEvent}. Throws
* {@code NullPointerException} if the value is not null.
*
* @param value
* the new value, not {@code null}
* @throws NullPointerException
* if {@code value} is {@code null}
*/
@Override
public void setValue(String value) {
Objects.requireNonNull(value, "Null value not supported");
Objects.requireNonNull(value, "value cannot be null");
setValue(value, false);
}


+ 8
- 10
server/src/main/java/com/vaadin/ui/CheckBox.java View File

@@ -17,6 +17,7 @@
package com.vaadin.ui;

import java.util.Collection;
import java.util.Objects;

import org.jsoup.nodes.Attributes;
import org.jsoup.nodes.Element;
@@ -115,21 +116,18 @@ public class CheckBox extends AbstractField<Boolean>
}

/**
* Sets the value of this ComboBox. If the new value is not equal to
* {@code getValue()}, fires a value change event. Throws
* {@code IllegalArgumentException} if the value is null.
* Sets the value of this CheckBox. If the new value is not equal to
* {@code getValue()}, fires a {@link ValueChangeEvent}. Throws
* {@code NullPointerException} if the value is null.
*
* @param value
* the new value
* @throws IllegalArgumentException
* if the value is null
* the new value, not {@code null}
* @throws NullPointerException
* if {@code value} is {@code null}
*/
@Override
public void setValue(Boolean value) {
if (value == null) {
throw new IllegalArgumentException(
"CheckBox value must not be null");
}
Objects.requireNonNull(value, "CheckBox value must not be null");
super.setValue(value);
}


+ 7
- 0
server/src/main/java/com/vaadin/ui/ComboBox.java View File

@@ -548,6 +548,13 @@ public class ComboBox<T> extends AbstractSingleSelect<T> implements HasValue<T>,
this.filter = filter;
}

/**
* Sets the value of this object. If the new value is not equal to
* {@code getValue()}, fires a {@link ValueChangeEvent}.
*
* @param value
* the new value, may be {@code null}
*/
@Override
public void setValue(T value) {
getSelectionModel().setSelectedFromServer(value);

+ 14
- 5
server/src/main/java/com/vaadin/ui/RichTextArea.java View File

@@ -16,6 +16,8 @@

package com.vaadin.ui;

import java.util.Objects;

import org.jsoup.nodes.Element;

import com.vaadin.shared.ui.ValueChangeMode;
@@ -100,13 +102,20 @@ public class RichTextArea extends AbstractField<String>
return (RichTextAreaState) super.getState(markAsDirty);
}

/**
* Sets the value of this object. If the new value is not equal to
* {@code getValue()}, fires a {@link ValueChangeEvent}. Throws
* {@code NullPointerException} if the value is null.
*
* @param value
* the new value, not {@code null}
* @throws NullPointerException
* if {@code value} is {@code null}
*/
@Override
public void setValue(String value) {
if (value == null) {
setValue("", false);
} else {
setValue(value, false);
}
Objects.requireNonNull(value, "value cannot be null");
setValue(value, false);
}

@Override

+ 17
- 0
server/src/main/java/com/vaadin/ui/Slider.java View File

@@ -17,6 +17,7 @@
package com.vaadin.ui;

import java.util.Collection;
import java.util.Objects;

import org.jsoup.nodes.Attributes;
import org.jsoup.nodes.Element;
@@ -289,6 +290,22 @@ public class Slider extends AbstractField<Double> {
getState().value = trimmedValue;
}

/**
* Sets the value of this object. If the new value is not equal to
* {@code getValue()}, fires a {@link ValueChangeEvent}. Throws
* {@code NullPointerException} if the value is null.
*
* @param value
* the new value, not {@code null}
* @throws NullPointerException
* if {@code value} is {@code null}
*/
@Override
public void setValue(Double value) {
Objects.requireNonNull(value, "color cannot be null");
super.setValue(value);
}

@Override
public Double getValue() {
return getState().value;

+ 18
- 0
server/src/main/java/com/vaadin/ui/components/colorpicker/ColorPickerGradient.java View File

@@ -15,6 +15,8 @@
*/
package com.vaadin.ui.components.colorpicker;

import java.util.Objects;

import com.vaadin.shared.ui.colorpicker.Color;
import com.vaadin.shared.ui.colorpicker.ColorPickerGradientServerRpc;
import com.vaadin.shared.ui.colorpicker.ColorPickerGradientState;
@@ -64,6 +66,22 @@ public class ColorPickerGradient extends AbstractField<Color> {
this.converter = converter;
}

/**
* Sets the value of this object. If the new value is not equal to
* {@code getValue()}, fires a {@link ValueChangeEvent}. Throws
* {@code NullPointerException} if the value is null.
*
* @param color
* the new color, not {@code null}
* @throws NullPointerException
* if {@code color} is {@code null}
*/
@Override
public void setValue(Color color) {
Objects.requireNonNull(color, "value must not be null");
super.setValue(color);
}

@Override
public Color getValue() {
return color;

+ 17
- 0
server/src/main/java/com/vaadin/ui/components/colorpicker/ColorPickerGrid.java View File

@@ -18,6 +18,7 @@ package com.vaadin.ui.components.colorpicker;
import java.awt.Point;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

import com.vaadin.shared.ui.colorpicker.Color;
import com.vaadin.shared.ui.colorpicker.ColorPickerGridServerRpc;
@@ -174,6 +175,22 @@ public class ColorPickerGrid extends AbstractField<Color> {
return new int[] { x, y };
}

/**
* Sets the value of this object. If the new value is not equal to
* {@code getValue()}, fires a {@link ValueChangeEvent}. Throws
* {@code NullPointerException} if the value is null.
*
* @param color
* the new value, not {@code null}
* @throws NullPointerException
* if {@code color} is {@code null}
*/
@Override
public void setValue(Color color) {
Objects.requireNonNull(color, "value cannot be null");
super.setValue(color);
}

@Override
public Color getValue() {
return colorGrid[x][y];

+ 11
- 3
server/src/main/java/com/vaadin/ui/components/colorpicker/ColorPickerPopup.java View File

@@ -458,11 +458,19 @@ public class ColorPickerPopup extends Window implements HasValue<Color> {
return history;
}

/**
* Sets the value of this object. If the new value is not equal to
* {@code getValue()}, fires a {@link ValueChangeEvent}. Throws
* {@code NullPointerException} if the value is null.
*
* @param color
* the new value, not {@code null}
* @throws NullPointerException
* if {@code color} is {@code null}
*/
@Override
public void setValue(Color color) {
if (color == null) {
return;
}
Objects.requireNonNull(color, "color cannot be null");

selectedColor = color;


+ 13
- 1
server/src/main/java/com/vaadin/ui/components/colorpicker/ColorPickerPreview.java View File

@@ -63,8 +63,19 @@ public class ColorPickerPreview extends CssLayout implements HasValue<Color> {
setValue(color);
}

/**
* Sets the value of this object. If the new value is not equal to
* {@code getValue()}, fires a {@link ValueChangeEvent}. Throws
* {@code NullPointerException} if the value is null.
*
* @param color
* the new value, not {@code null}
* @throws NullPointerException
* if {@code color} is {@code null}
*/
@Override
public void setValue(Color color) {
Objects.requireNonNull(color, "color cannot be null");
this.color = color;

// Unregister listener
@@ -160,7 +171,8 @@ public class ColorPickerPreview extends CssLayout implements HasValue<Color> {
}

oldValue = value;
fireEvent(new ValueChangeEvent<>(this, event.isUserOriginated()));
fireEvent(
new ValueChangeEvent<>(this, event.isUserOriginated()));
}

} catch (NumberFormatException nfe) {

+ 36
- 0
server/src/test/java/com/vaadin/tests/server/component/abstracttextfield/AbstractTextFieldTest.java View File

@@ -0,0 +1,36 @@
/*
* 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.tests.server.component.abstracttextfield;

import org.junit.Test;
import org.mockito.Mockito;

import com.vaadin.ui.AbstractTextField;

/**
* @author Vaadin Ltd
*
*/
public class AbstractTextFieldTest {

@Test(expected = NullPointerException.class)
public void setValue_nullValue_throwsNPE() {
AbstractTextField field = Mockito.mock(AbstractTextField.class);
Mockito.doCallRealMethod().when(field).setValue(null);

field.setValue(null);
}
}

+ 36
- 0
server/src/test/java/com/vaadin/tests/server/component/colorpicker/AbstractColorPickerTest.java View File

@@ -0,0 +1,36 @@
/*
* 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.tests.server.component.colorpicker;

import org.junit.Test;
import org.mockito.Mockito;

import com.vaadin.ui.AbstractColorPicker;

/**
* @author Vaadin Ltd
*
*/
public class AbstractColorPickerTest {

@Test(expected = NullPointerException.class)
public void setValue_nullValue_throwsNPE() {
AbstractColorPicker picker = Mockito.mock(AbstractColorPicker.class);
Mockito.doCallRealMethod().when(picker).setValue(null);

picker.setValue(null);
}
}

+ 58
- 0
server/src/test/java/com/vaadin/tests/server/component/colorpicker/ColorPickerComponentsTest.java View File

@@ -0,0 +1,58 @@
/*
* 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.tests.server.component.colorpicker;

import org.junit.Test;
import org.mockito.Mockito;

import com.vaadin.shared.ui.colorpicker.Color;
import com.vaadin.ui.AbstractColorPicker.Coordinates2Color;
import com.vaadin.ui.components.colorpicker.ColorPickerGradient;
import com.vaadin.ui.components.colorpicker.ColorPickerGrid;
import com.vaadin.ui.components.colorpicker.ColorPickerPopup;
import com.vaadin.ui.components.colorpicker.ColorPickerPreview;

/**
* @author Vaadin Ltd
*
*/
public class ColorPickerComponentsTest {

@Test(expected = NullPointerException.class)
public void setValue_nullValue_colorPickerGradientThrowsNPE() {
ColorPickerGradient gradient = new ColorPickerGradient("foo",
Mockito.mock(Coordinates2Color.class));
gradient.setValue(null);
}

@Test(expected = NullPointerException.class)
public void setValue_nullValue_colorPickerGridThrowsNPE() {
ColorPickerGrid grid = new ColorPickerGrid();
grid.setValue(null);
}

@Test(expected = NullPointerException.class)
public void setValue_nullValue_colorPickerPopupThrowsNPE() {
ColorPickerPopup popup = new ColorPickerPopup(Color.WHITE);
popup.setValue(null);
}

@Test(expected = NullPointerException.class)
public void setValue_nullValue_colorPickerPreviewThrowsNPE() {
ColorPickerPreview preview = new ColorPickerPreview(Color.WHITE);
preview.setValue(null);
}
}

+ 6
- 0
server/src/test/java/com/vaadin/tests/server/component/slider/SliderTest.java View File

@@ -126,4 +126,10 @@ public class SliderTest {

assertThat(slider.getValue(), is(1.23));
}

@Test(expected = NullPointerException.class)
public void setValue_nullValue_throwNPE() {
Slider slider = new Slider();
slider.setValue(null);
}
}

+ 6
- 0
server/src/test/java/com/vaadin/ui/CheckBoxTest.java View File

@@ -34,4 +34,10 @@ public class CheckBoxTest {
Assert.assertFalse(cb.getValue());
}

@Test(expected = NullPointerException.class)
public void setValue_nullValue_throwsNPE() {
CheckBox cb = new CheckBox();
cb.setValue(null);
}

}

+ 2
- 3
server/src/test/java/com/vaadin/ui/RichTextAreaTest.java View File

@@ -88,11 +88,10 @@ public class RichTextAreaTest extends ComponentTest {
Assert.assertEquals("bar", tf.getValue());
}

@Test
public void setValueNullBecomesEmptyString() {
@Test(expected = NullPointerException.class)
public void setValue_nullValue_throwsNPE() {
RichTextArea tf = new RichTextArea();
tf.setValue(null);
Assert.assertEquals("", tf.getValue());
}

@Test

Loading…
Cancel
Save