From: Johannes Dahlström Date: Fri, 19 Jul 2013 13:09:53 +0000 (+0300) Subject: Only add DateRangeValidator to DateField if start or end of range is set (#12193) X-Git-Tag: 7.1.2~21 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=62c63a6a6dcf97c5a8f7b02e0115fdab096226db;p=vaadin-framework.git Only add DateRangeValidator to DateField if start or end of range is set (#12193) Change-Id: I9138a5607c1ff20f3aa7be49270f683e732ee195 --- diff --git a/server/src/com/vaadin/ui/DateField.java b/server/src/com/vaadin/ui/DateField.java index 5017fac993..17dda73b95 100644 --- a/server/src/com/vaadin/ui/DateField.java +++ b/server/src/com/vaadin/ui/DateField.java @@ -402,13 +402,14 @@ public class DateField extends AbstractField implements private void updateRangeValidator() { if (currentRangeValidator != null) { removeValidator(currentRangeValidator); + currentRangeValidator = null; + } + if (getRangeStart() != null || getRangeEnd() != null) { + currentRangeValidator = new DateRangeValidator( + dateOutOfRangeMessage, getRangeStart(resolution), + getRangeEnd(resolution), null); + addValidator(currentRangeValidator); } - - currentRangeValidator = new DateRangeValidator(dateOutOfRangeMessage, - getRangeStart(resolution), getRangeEnd(resolution), null); - - addValidator(currentRangeValidator); - } /** diff --git a/server/tests/src/com/vaadin/tests/server/component/datefield/DateFieldConverterTest.java b/server/tests/src/com/vaadin/tests/server/component/datefield/DateFieldConverterTest.java new file mode 100644 index 0000000000..25ee0a38a9 --- /dev/null +++ b/server/tests/src/com/vaadin/tests/server/component/datefield/DateFieldConverterTest.java @@ -0,0 +1,77 @@ +/* + * Copyright 2000-2013 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.datefield; + +import java.util.Date; +import java.util.Locale; + +import junit.framework.TestCase; + +import com.vaadin.data.Property; +import com.vaadin.data.util.ObjectProperty; +import com.vaadin.data.util.converter.Converter; +import com.vaadin.shared.ui.datefield.Resolution; +import com.vaadin.ui.DateField; + +public class DateFieldConverterTest extends TestCase { + + private Property date; + private DateField datefield; + + @Override + public void setUp() { + date = new ObjectProperty(0L); + datefield = new DateField(); + datefield.setBuffered(false); + datefield.setConverter(new Converter() { + + @Override + public Long convertToModel(Date value, + Class targetType, Locale locale) + throws ConversionException { + return value.getTime(); + } + + @Override + public Date convertToPresentation(Long value, + Class targetType, Locale locale) + throws ConversionException { + return new Date(value); + } + + @Override + public Class getModelType() { + return Long.class; + } + + @Override + public Class getPresentationType() { + return Date.class; + } + }); + datefield.setPropertyDataSource(date); + } + + /* + * See #12193. + */ + public void testResolution() { + datefield.setValue(new Date(110, 0, 1)); + datefield.setResolution(Resolution.MINUTE); + datefield.validate(); + } +}