]> source.dussan.org Git - vaadin-framework.git/commitdiff
Avoid throwing exceptions from toString, log message instead (#9804) 26/26/1
authorArtur Signell <artur@vaadin.com>
Mon, 1 Oct 2012 11:08:33 +0000 (14:08 +0300)
committerArtur Signell <artur@vaadin.com>
Mon, 1 Oct 2012 11:10:02 +0000 (14:10 +0300)
Change-Id: Ia2f8504a0fe75ab3a7c4746d533e5fd012e2a69c

server/src/com/vaadin/data/util/AbstractProperty.java
server/src/com/vaadin/data/util/IndexedContainer.java
server/src/com/vaadin/data/util/sqlcontainer/ColumnProperty.java

index 76d47039d08fe4dc3757470be5ea18f25828dc0b..aefe00ad322941caece8f6b127959f7b05efa6db 100644 (file)
@@ -18,6 +18,7 @@ package com.vaadin.data.util;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedList;
+import java.util.logging.Logger;
 
 import com.vaadin.data.Property;
 
@@ -78,9 +79,17 @@ public abstract class AbstractProperty<T> implements Property<T>,
     @Deprecated
     @Override
     public String toString() {
-        throw new UnsupportedOperationException(
-                "Use Property.getValue() instead of " + getClass()
-                        + ".toString()");
+        getLogger()
+                .warning(
+                        "You are using Property.toString() instead of getValue() to get the value for a "
+                                + getClass().getSimpleName()
+                                + ". This will not be supported starting from Vaadin 7.1 "
+                                + "(your debugger might call toString() and cause this message to appear).");
+        T v = getValue();
+        if (v == null) {
+            return null;
+        }
+        return v.toString();
     }
 
     /* Events */
@@ -277,4 +286,7 @@ public abstract class AbstractProperty<T> implements Property<T>,
         return Collections.EMPTY_LIST;
     }
 
+    private static Logger getLogger() {
+        return Logger.getLogger(AbstractProperty.class.getName());
+    }
 }
index e957d958a942044b89a3f7b378338f8b04a63f26..7273b28b66a6067226be3c68064091a5e39b9df9 100644 (file)
@@ -28,6 +28,7 @@ import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.logging.Logger;
 
 import com.vaadin.data.Container;
 import com.vaadin.data.Item;
@@ -961,8 +962,21 @@ public class IndexedContainer extends
         @Deprecated
         @Override
         public String toString() {
-            throw new UnsupportedOperationException(
-                    "Use Property.getValue() instead of IndexedContainerProperty.toString()");
+            getLogger()
+                    .warning(
+                            "You are using IndexedContainerProperty.toString() instead of getValue() to get the value for a "
+                                    + getClass().getSimpleName()
+                                    + ". This will not be supported starting from Vaadin 7.1 "
+                                    + "(your debugger might call toString() and cause this message to appear).");
+            Object v = getValue();
+            if (v == null) {
+                return null;
+            }
+            return v.toString();
+        }
+
+        private Logger getLogger() {
+            return Logger.getLogger(IndexedContainerProperty.class.getName());
         }
 
         /**
index 6e5ba0dc573547d63f8a198a71e5337eb4a01dc8..bd6b1a75bf9c225493acee9d6cb0b41a3d0ab26a 100644 (file)
@@ -18,6 +18,7 @@ package com.vaadin.data.util.sqlcontainer;
 import java.sql.Date;
 import java.sql.Time;
 import java.sql.Timestamp;
+import java.util.logging.Logger;
 
 import com.vaadin.data.Property;
 import com.vaadin.data.util.converter.Converter.ConversionException;
@@ -261,8 +262,21 @@ final public class ColumnProperty implements Property {
     @Deprecated
     @Override
     public String toString() {
-        throw new UnsupportedOperationException(
-                "Use ColumnProperty.getValue() instead of ColumnProperty.toString()");
+        getLogger()
+                .warning(
+                        "You are using ColumnProperty.toString() instead of getValue() to get the value for a "
+                                + getClass().getSimpleName()
+                                + ". This will not be supported starting from Vaadin 7.1 "
+                                + "(your debugger might call toString() and cause this message to appear).");
+        Object v = getValue();
+        if (v == null) {
+            return null;
+        }
+        return v.toString();
+    }
+
+    private static Logger getLogger() {
+        return Logger.getLogger(ColumnProperty.class.getName());
     }
 
     public void setOwner(RowItem owner) {