summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2015-02-05 11:20:38 +0200
committerLeif Åstrand <leif@vaadin.com>2015-02-05 12:51:57 +0000
commit3c0a9961b0965b8cd0d88af8f3f4971c09ab271a (patch)
treea61735ac98770381c0592992dc0501e661d01662 /server
parentedabf251a53762d5bf45a70be757e5b0bd48d25a (diff)
downloadvaadin-framework-3c0a9961b0965b8cd0d88af8f3f4971c09ab271a.tar.gz
vaadin-framework-3c0a9961b0965b8cd0d88af8f3f4971c09ab271a.zip
Render Object.toString() when no converter is set (#15417)
Change-Id: I8a00857d5829cd01ceb98c4264029f62e45e7073
Diffstat (limited to 'server')
-rw-r--r--server/src/com/vaadin/data/RpcDataProviderExtension.java25
-rw-r--r--server/tests/src/com/vaadin/tests/server/renderer/RendererTest.java7
2 files changed, 17 insertions, 15 deletions
diff --git a/server/src/com/vaadin/data/RpcDataProviderExtension.java b/server/src/com/vaadin/data/RpcDataProviderExtension.java
index d4e40ee915..630336816e 100644
--- a/server/src/com/vaadin/data/RpcDataProviderExtension.java
+++ b/server/src/com/vaadin/data/RpcDataProviderExtension.java
@@ -25,7 +25,6 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
-import java.util.logging.Level;
import java.util.logging.Logger;
import com.google.gwt.thirdparty.guava.common.collect.BiMap;
@@ -40,7 +39,6 @@ import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.data.Property.ValueChangeNotifier;
import com.vaadin.data.util.converter.Converter;
-import com.vaadin.data.util.converter.Converter.ConversionException;
import com.vaadin.server.AbstractExtension;
import com.vaadin.server.ClientConnector;
import com.vaadin.server.KeyMapper;
@@ -1060,20 +1058,19 @@ public class RpcDataProviderExtension extends AbstractExtension {
try {
presentationValue = presentationType.cast(modelValue);
} catch (ClassCastException e) {
- ConversionException ee = new Converter.ConversionException(
- "Unable to convert value of type "
- + modelValue.getClass().getName()
- + " to presentation type "
- + presentationType.getName()
- + ". No converter is set and the types are not compatible.");
if (presentationType == String.class) {
- // We don't want to throw an exception for the default cause
- // when one column can't be rendered. Just log the exception
- // and let the column be empty
- presentationValue = (T) "";
- getLogger().log(Level.SEVERE, ee.getMessage(), ee);
+ // If there is no converter, just fallback to using
+ // toString().
+ // modelValue can't be null as Class.cast(null) will always
+ // succeed
+ presentationValue = (T) modelValue.toString();
} else {
- throw ee;
+ throw new Converter.ConversionException(
+ "Unable to convert value of type "
+ + modelValue.getClass().getName()
+ + " to presentation type "
+ + presentationType.getName()
+ + ". No converter is set and the types are not compatible.");
}
}
} else {
diff --git a/server/tests/src/com/vaadin/tests/server/renderer/RendererTest.java b/server/tests/src/com/vaadin/tests/server/renderer/RendererTest.java
index 464d409543..f6a766bd07 100644
--- a/server/tests/src/com/vaadin/tests/server/renderer/RendererTest.java
+++ b/server/tests/src/com/vaadin/tests/server/renderer/RendererTest.java
@@ -44,6 +44,11 @@ public class RendererTest {
private static class TestBean {
int i = 42;
+
+ @Override
+ public String toString() {
+ return "TestBean [" + i + "]";
+ }
}
private static class ExtendedBean extends TestBean {
@@ -177,7 +182,7 @@ public class RendererTest {
@Test
public void testEncodingWithoutConverter() throws Exception {
- assertEquals("", render(baz, new TestBean()).asString());
+ assertEquals("TestBean [42]", render(baz, new TestBean()).asString());
}
@Test