From 50ad71fb78aa2fa4bfb7d93396c12303ae9c4878 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Wed, 21 Dec 2011 18:50:31 +0200 Subject: [PATCH] #8102 Removed "value" from value converter used in AbstractField and renamed updateValueConverterFromFactory to setConverter based on API review meeting. --- src/com/vaadin/Application.java | 5 +- src/com/vaadin/ui/AbstractField.java | 84 +++++++++---------- .../AbstractFieldValueConversions.java | 10 +-- .../abstractfield/DoubleInTextField.java | 2 +- .../IntegerFieldWithoutDataSource.java | 2 +- .../tests/fieldbinder/BasicPersonForm.java | 2 +- 6 files changed, 51 insertions(+), 54 deletions(-) diff --git a/src/com/vaadin/Application.java b/src/com/vaadin/Application.java index cc54ca97cf..2ccc7e63b5 100644 --- a/src/com/vaadin/Application.java +++ b/src/com/vaadin/Application.java @@ -53,6 +53,7 @@ import com.vaadin.terminal.gwt.server.WebApplicationContext; import com.vaadin.ui.AbstractComponent; import com.vaadin.ui.AbstractField; import com.vaadin.ui.Root; +import com.vaadin.ui.Table; import com.vaadin.ui.Window; /** @@ -1226,7 +1227,9 @@ public class Application implements Terminal.ErrorListener, Serializable { *

*

* The {@link Converter} for an individual field can be overridden using - * {@link AbstractField#setValueConverter(Converter)}. + * {@link AbstractField#setConverter(Converter)} and for invidual property + * ids in a {@link Table} using + * {@link Table#setConverter(Object, Converter)}. *

*

* The converter factory must never be set to null. diff --git a/src/com/vaadin/ui/AbstractField.java b/src/com/vaadin/ui/AbstractField.java index e98a06f91c..5a8b9037e0 100644 --- a/src/com/vaadin/ui/AbstractField.java +++ b/src/com/vaadin/ui/AbstractField.java @@ -72,7 +72,7 @@ public abstract class AbstractField extends AbstractComponent implements * A converter used to convert from the data model type to the field type * and vice versa. */ - private Converter valueConverter = null; + private Converter converter = null; /** * Connected data-source. */ @@ -138,7 +138,7 @@ public abstract class AbstractField extends AbstractComponent implements /** * The error message that is shown when the field value cannot be converted. */ - private String valueConversionError = "Could not convert value to {0}"; + private String conversionError = "Could not convert value to {0}"; /** * Is automatic validation enabled. @@ -538,7 +538,7 @@ public abstract class AbstractField extends AbstractComponent implements * *

* Since Vaadin 7.0, no implicit conversions between other data types and - * String are performed, but a value converter is used if set. + * String are performed, but a converter is used if set. *

* * @return the current value of the field. @@ -590,7 +590,7 @@ public abstract class AbstractField extends AbstractComponent implements // Repaint is needed even when the client thinks that it knows the // new state if validity of the component may change if (repaintIsNotNeeded - && (isRequired() || getValidators() != null || getValueConverter() != null)) { + && (isRequired() || getValidators() != null || getConverter() != null)) { repaintIsNotNeeded = false; } @@ -724,12 +724,11 @@ public abstract class AbstractField extends AbstractComponent implements // Check if the current converter is compatible. if (newDataSource != null - && (getValueConverter() == null || !getValueConverter() - .getSourceType().isAssignableFrom( - newDataSource.getType()))) { - // Set a new value converter if there is a new data source and the + && (getConverter() == null || !getConverter().getSourceType() + .isAssignableFrom(newDataSource.getType()))) { + // Set a new converter if there is a new data source and the // there is no old converter or the old is incompatible. - updateValueConverterFromFactory(newDataSource.getType()); + setConverter(newDataSource.getType()); } // Gets the value from source try { @@ -777,15 +776,15 @@ public abstract class AbstractField extends AbstractComponent implements } /** - * Retrieves a value converter for the field from the converter factory - * defined for the application. Clears the value converter if no application - * reference is available or if the factory returns null. + * Retrieves a converter for the field from the converter factory defined + * for the application. Clears the converter if no application reference is + * available or if the factory returns null. * * @param datamodelType * The type of the data model that we want to be able to convert * from */ - public void updateValueConverterFromFactory(Class datamodelType) { + public void setConverter(Class datamodelType) { Converter converter = null; Application app = Application.getCurrentApplication(); @@ -794,7 +793,7 @@ public abstract class AbstractField extends AbstractComponent implements converter = (Converter) factory.createConverter( datamodelType, getType()); } - setValueConverter(converter); + setConverter(converter); } /** @@ -803,8 +802,7 @@ public abstract class AbstractField extends AbstractComponent implements * @param newValue * The data source value to convert. * @return The converted value that is compatible with the UI type or the - * original value if its type is compatible and no value converter - * is set. + * original value if its type is compatible and no converter is set. * @throws Converter.ConversionException * if there is no converter and the type is not compatible with * the data source type. @@ -812,9 +810,8 @@ public abstract class AbstractField extends AbstractComponent implements @SuppressWarnings("unchecked") private T convertFromDataSource(Object newValue) throws Converter.ConversionException { - if (valueConverter != null) { - return valueConverter.convertFromSourceToTarget(newValue, - getLocale()); + if (converter != null) { + return converter.convertFromSourceToTarget(newValue, getLocale()); } if (newValue == null) { return null; @@ -828,7 +825,7 @@ public abstract class AbstractField extends AbstractComponent implements + newValue.getClass().getName() + " to " + getType() - + ". No value converter is set and the types are not compatible."); + + ". No converter is set and the types are not compatible."); } } @@ -845,18 +842,17 @@ public abstract class AbstractField extends AbstractComponent implements */ private Object convertToDataSource(T fieldValue) throws Converter.ConversionException { - if (valueConverter != null) { + if (converter != null) { /* - * If there is a value converter, always use it. It must convert or - * throw an exception. + * If there is a converter, always use it. It must convert or throw + * an exception. */ try { - return valueConverter.convertFromTargetToSource(fieldValue, + return converter.convertFromTargetToSource(fieldValue, getLocale()); } catch (com.vaadin.data.util.converter.Converter.ConversionException e) { throw new Converter.ConversionException( - getValueConversionError(valueConverter.getSourceType()), - e); + getValueConversionError(converter.getSourceType()), e); } } @@ -893,9 +889,9 @@ public abstract class AbstractField extends AbstractComponent implements */ protected String getValueConversionError(Class dataSourceType) { if (dataSourceType == null) { - return getValueConversionError(); + return getConversionError(); } else { - return getValueConversionError().replace("{0}", + return getConversionError().replace("{0}", dataSourceType.getSimpleName()); } } @@ -980,7 +976,7 @@ public abstract class AbstractField extends AbstractComponent implements * A field is invalid if it is set as required (using * {@link #setRequired(boolean)} and is empty, if one or several of the * validators added to the field indicate it is invalid or if the value - * cannot be converted provided a value converter has been set. + * cannot be converted provided a converter has been set. * * The "required" validation is a built-in validation feature. If the field * is required and empty this method throws an EmptyValueException with the @@ -1013,14 +1009,13 @@ public abstract class AbstractField extends AbstractComponent implements // If there is a converter we start by converting the value as we want // to validate the converted value - if (getValueConverter() != null) { + if (getConverter() != null) { try { - valueToValidate = getValueConverter() - .convertFromTargetToSource(fieldValue, getLocale()); + valueToValidate = getConverter().convertFromTargetToSource( + fieldValue, getLocale()); } catch (Exception e) { throw new InvalidValueException( - getValueConversionError(getValueConverter() - .getSourceType())); + getValueConversionError(getConverter().getSourceType())); } } @@ -1429,8 +1424,8 @@ public abstract class AbstractField extends AbstractComponent implements * * @return The error that is shown if conversion of the field value fails */ - public String getValueConversionError() { - return valueConversionError; + public String getConversionError() { + return conversionError; } /** @@ -1441,8 +1436,8 @@ public abstract class AbstractField extends AbstractComponent implements * @param valueConversionError * Message to be shown when conversion of the value fails */ - public void setValueConversionError(String valueConversionError) { - this.valueConversionError = valueConversionError; + public void setConversionError(String valueConversionError) { + this.conversionError = valueConversionError; requestRepaint(); } @@ -1572,8 +1567,8 @@ public abstract class AbstractField extends AbstractComponent implements * * @return The converter or null if none is set. */ - public Converter getValueConverter() { - return valueConverter; + public Converter getConverter() { + return converter; } /** @@ -1584,12 +1579,11 @@ public abstract class AbstractField extends AbstractComponent implements * The source for the converter is the data model and the target is the * field. * - * @param valueConverter - * The new value converter to use. + * @param converter + * The new converter to use. */ - public void setValueConverter(Converter valueConverter) { - // - this.valueConverter = (Converter) valueConverter; + public void setConverter(Converter converter) { + this.converter = (Converter) converter; requestRepaint(); } diff --git a/tests/server-side/com/vaadin/tests/server/component/abstractfield/AbstractFieldValueConversions.java b/tests/server-side/com/vaadin/tests/server/component/abstractfield/AbstractFieldValueConversions.java index 0bc40097d2..f39b479943 100644 --- a/tests/server-side/com/vaadin/tests/server/component/abstractfield/AbstractFieldValueConversions.java +++ b/tests/server-side/com/vaadin/tests/server/component/abstractfield/AbstractFieldValueConversions.java @@ -34,7 +34,7 @@ public class AbstractFieldValueConversions extends TestCase { public void testStringIdentityConversion() { TextField tf = new TextField(); - tf.setValueConverter(new Converter() { + tf.setConverter(new Converter() { public String convertFromTargetToSource(String value, Locale locale) { return value; @@ -64,7 +64,7 @@ public class AbstractFieldValueConversions extends TestCase { public void testFailingConversion() { TextField tf = new TextField(); - tf.setValueConverter(new Converter() { + tf.setConverter(new Converter() { public Integer convertFromTargetToSource(String value, Locale locale) { throw new ConversionException("Failed"); @@ -95,7 +95,7 @@ public class AbstractFieldValueConversions extends TestCase { public void testIntegerStringConversion() { TextField tf = new TextField(); - tf.setValueConverter(new IntegerToStringConverter()); + tf.setConverter(new IntegerToStringConverter()); tf.setPropertyDataSource(new MethodProperty(paulaBean, "age")); assertEquals(34, tf.getPropertyDataSource().getValue()); assertEquals("34", tf.getValue()); @@ -109,7 +109,7 @@ public class AbstractFieldValueConversions extends TestCase { public void testBooleanNullConversion() { CheckBox cb = new CheckBox(); - cb.setValueConverter(new Converter() { + cb.setConverter(new Converter() { public Boolean convertFromTargetToSource(Boolean value, Locale locale) { @@ -143,7 +143,7 @@ public class AbstractFieldValueConversions extends TestCase { cb.setPropertyDataSource(property); assertEquals(Boolean.FALSE, property.getValue()); assertEquals(Boolean.FALSE, cb.getValue()); - Boolean newDmValue = cb.getValueConverter().convertFromSourceToTarget( + Boolean newDmValue = cb.getConverter().convertFromSourceToTarget( cb.getValue(), new Locale("fi", "FI")); assertEquals(Boolean.FALSE, newDmValue); diff --git a/tests/testbench/com/vaadin/tests/components/abstractfield/DoubleInTextField.java b/tests/testbench/com/vaadin/tests/components/abstractfield/DoubleInTextField.java index e74513b9ac..b7077dba80 100644 --- a/tests/testbench/com/vaadin/tests/components/abstractfield/DoubleInTextField.java +++ b/tests/testbench/com/vaadin/tests/components/abstractfield/DoubleInTextField.java @@ -24,7 +24,7 @@ public class DoubleInTextField extends AbstractComponentDataBindingTest { addComponent(salary6); salary6.setPropertyDataSource(new MethodProperty(person, "salaryDouble")); - salary6.setValueConverter(new Vaadin6ImplicitDoubleConverter()); + salary6.setConverter(new Vaadin6ImplicitDoubleConverter()); } diff --git a/tests/testbench/com/vaadin/tests/components/abstractfield/IntegerFieldWithoutDataSource.java b/tests/testbench/com/vaadin/tests/components/abstractfield/IntegerFieldWithoutDataSource.java index e9c555ab17..8745df991a 100644 --- a/tests/testbench/com/vaadin/tests/components/abstractfield/IntegerFieldWithoutDataSource.java +++ b/tests/testbench/com/vaadin/tests/components/abstractfield/IntegerFieldWithoutDataSource.java @@ -26,7 +26,7 @@ public class IntegerFieldWithoutDataSource extends TestBase { private TextField createIntegerTextField() { final TextField tf = new TextField("Enter an integer"); - tf.updateValueConverterFromFactory(Integer.class); + tf.setConverter(Integer.class); tf.setImmediate(true); tf.addListener(new ValueChangeListener() { diff --git a/tests/testbench/com/vaadin/tests/fieldbinder/BasicPersonForm.java b/tests/testbench/com/vaadin/tests/fieldbinder/BasicPersonForm.java index 0bbf487c82..1e7d90ec18 100644 --- a/tests/testbench/com/vaadin/tests/fieldbinder/BasicPersonForm.java +++ b/tests/testbench/com/vaadin/tests/fieldbinder/BasicPersonForm.java @@ -160,7 +160,7 @@ public class BasicPersonForm extends TestBase { age.addValidator(new IntegerRangeValidator( "Must be between 0 and 150, {0} is not", 0, 150)); sex.setPageLength(0); - deceased.setValueConverter(new BooleanToStringConverter() { + deceased.setConverter(new BooleanToStringConverter() { @Override protected String getTrueString() { return "YAY!"; -- 2.39.5