diff options
-rw-r--r-- | client/src/com/vaadin/client/Util.java | 20 | ||||
-rw-r--r-- | server/src/com/vaadin/ui/AbstractField.java | 24 | ||||
-rw-r--r-- | server/src/com/vaadin/ui/Label.java | 3 | ||||
-rw-r--r-- | shared/src/com/vaadin/shared/util/SharedUtil.java | 45 |
4 files changed, 74 insertions, 18 deletions
diff --git a/client/src/com/vaadin/client/Util.java b/client/src/com/vaadin/client/Util.java index 9810156bcc..8972670232 100644 --- a/client/src/com/vaadin/client/Util.java +++ b/client/src/com/vaadin/client/Util.java @@ -48,6 +48,7 @@ import com.vaadin.shared.AbstractComponentState; import com.vaadin.shared.ApplicationConstants; import com.vaadin.shared.communication.MethodInvocation; import com.vaadin.shared.ui.ComponentStateUtil; +import com.vaadin.shared.util.SharedUtil; public class Util { @@ -550,12 +551,21 @@ public class Util { } } + /** + * Checks if a and b are equals using {@link #equals(Object)}. Handles null + * values as well. Does not ensure that objects are of the same type. + * Assumes that the first object's equals method handle equals properly. + * + * @param a + * The first value to compare + * @param b + * The second value to compare + * @return + * @deprecated As of 7.1 use {@link SharedUtil#equals(Object)} instead + */ + @Deprecated public static boolean equals(Object a, Object b) { - if (a == null) { - return b == null; - } - - return a.equals(b); + return SharedUtil.equals(a, b); } public static void updateRelativeChildrenAndSendSizeUpdateEvent( diff --git a/server/src/com/vaadin/ui/AbstractField.java b/server/src/com/vaadin/ui/AbstractField.java index 4ec6d7bac2..eb8fc30a45 100644 --- a/server/src/com/vaadin/ui/AbstractField.java +++ b/server/src/com/vaadin/ui/AbstractField.java @@ -42,6 +42,7 @@ import com.vaadin.server.AbstractErrorMessage; import com.vaadin.server.CompositeErrorMessage; import com.vaadin.server.ErrorMessage; import com.vaadin.shared.AbstractFieldState; +import com.vaadin.shared.util.SharedUtil; /** * <p> @@ -427,7 +428,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements throws Property.ReadOnlyException, Converter.ConversionException, InvalidValueException { - if (!equals(newFieldValue, getInternalValue())) { + if (!SharedUtil.equals(newFieldValue, getInternalValue())) { // Read only fields can not be changed if (isReadOnly()) { @@ -435,7 +436,8 @@ public abstract class AbstractField<T> extends AbstractComponent implements } try { T doubleConvertedFieldValue = convertFromModel(convertToModel(newFieldValue)); - if (!equals(newFieldValue, doubleConvertedFieldValue)) { + if (!SharedUtil + .equals(newFieldValue, doubleConvertedFieldValue)) { newFieldValue = doubleConvertedFieldValue; repaintIsNotNeeded = false; } @@ -512,11 +514,9 @@ public abstract class AbstractField<T> extends AbstractComponent implements } } + @Deprecated static boolean equals(Object value1, Object value2) { - if (value1 == null) { - return value2 == null; - } - return value1.equals(value2); + return SharedUtil.equals(value1, value2); } /* External data source */ @@ -1204,8 +1204,8 @@ public abstract class AbstractField<T> extends AbstractComponent implements public void valueChange(Property.ValueChangeEvent event) { if (!isBuffered()) { if (committingValueToDataSource) { - boolean propertyNotifiesOfTheBufferedValue = equals(event - .getProperty().getValue(), getInternalValue()); + boolean propertyNotifiesOfTheBufferedValue = SharedUtil.equals( + event.getProperty().getValue(), getInternalValue()); if (!propertyNotifiesOfTheBufferedValue) { /* * Property (or chained property like PropertyFormatter) now @@ -1321,7 +1321,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements } private void localeMightHaveChanged() { - if (!equals(valueLocale, getLocale())) { + if (!SharedUtil.equals(valueLocale, getLocale())) { // The locale HAS actually changed if (dataSource != null && !isModified()) { @@ -1329,7 +1329,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements // read from that we want to update the value T newInternalValue = convertFromModel(getPropertyDataSource() .getValue()); - if (!equals(newInternalValue, getInternalValue())) { + if (!SharedUtil.equals(newInternalValue, getInternalValue())) { setInternalValue(newInternalValue); fireValueChange(false); } @@ -1345,7 +1345,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements Object convertedValue = convertToModel(getInternalValue(), valueLocale); T newinternalValue = convertFromModel(convertedValue); - if (!equals(getInternalValue(), newinternalValue)) { + if (!SharedUtil.equals(getInternalValue(), newinternalValue)) { setConvertedValue(convertedValue); } } @@ -1594,7 +1594,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements setModified(false); // If the new value differs from the previous one - if (!equals(newFieldValue, getInternalValue())) { + if (!SharedUtil.equals(newFieldValue, getInternalValue())) { setInternalValue(newFieldValue); fireValueChange(false); } else if (wasModified) { diff --git a/server/src/com/vaadin/ui/Label.java b/server/src/com/vaadin/ui/Label.java index f413ea47f2..72f556ee5b 100644 --- a/server/src/com/vaadin/ui/Label.java +++ b/server/src/com/vaadin/ui/Label.java @@ -25,6 +25,7 @@ import com.vaadin.data.util.converter.Converter; import com.vaadin.data.util.converter.ConverterUtil; import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.shared.ui.label.LabelState; +import com.vaadin.shared.util.SharedUtil; /** * Label component for showing non-editable short texts. @@ -402,7 +403,7 @@ public class Label extends AbstractComponent implements Property<String>, private void updateValueFromDataSource() { // Update the internal value from the data source String newConvertedValue = getDataSourceValue(); - if (!AbstractField.equals(newConvertedValue, getState().text)) { + if (!SharedUtil.equals(newConvertedValue, getState().text)) { getState().text = newConvertedValue; fireValueChange(); } diff --git a/shared/src/com/vaadin/shared/util/SharedUtil.java b/shared/src/com/vaadin/shared/util/SharedUtil.java new file mode 100644 index 0000000000..2242fa4363 --- /dev/null +++ b/shared/src/com/vaadin/shared/util/SharedUtil.java @@ -0,0 +1,45 @@ +/* + * 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.shared.util; + +/** + * Misc internal utility methods used by both the server and the client package. + * + * @author Vaadin Ltd + * @since 7.1 + * + */ +public class SharedUtil { + /** + * Checks if a and b are equals using {@link #equals(Object)}. Handles null + * values as well. Does not ensure that objects are of the same type. + * Assumes that the first object's equals method handle equals properly. + * + * @param o1 + * The first value to compare + * @param o2 + * The second value to compare + * @return true if the objects are equal, false otherwise + */ + public static boolean equals(Object o1, Object o2) { + if (o1 == null) { + return o2 == null; + } + + return o1.equals(o2); + } + +} |