diff options
Diffstat (limited to 'server/src')
5 files changed, 33 insertions, 28 deletions
diff --git a/server/src/com/vaadin/ui/components/grid/AbstractRenderer.java b/server/src/com/vaadin/ui/components/grid/AbstractRenderer.java index d1cf77c24b..a0eea891e7 100644 --- a/server/src/com/vaadin/ui/components/grid/AbstractRenderer.java +++ b/server/src/com/vaadin/ui/components/grid/AbstractRenderer.java @@ -17,6 +17,9 @@ package com.vaadin.ui.components.grid; import com.vaadin.server.AbstractClientConnector; import com.vaadin.server.AbstractExtension; +import com.vaadin.server.JsonCodec; + +import elemental.json.JsonValue; /** * An abstract base class for server-side Grid renderers. @@ -65,6 +68,30 @@ public abstract class AbstractRenderer<T> extends AbstractExtension implements return presentationType; } + @Override + public JsonValue encode(T value) { + return JsonCodec.encode(doEncode(value), null, getPresentationType(), + getUI().getConnectorTracker()).getEncodedValue(); + } + + /** + * Encodes the given value to an intermediate representation that can be + * serialized to JSON by Vaadin. The default implementation simply returns + * the value as is. + * <p> + * This is a helper method intended to be overridden if the value must be + * processed somehow but doing the JSON serialization manually is not + * desired. For instance, a {@code Renderer<Date>} could return a formatted + * string from {@code doEncode}. + * + * @param value + * the value to be encoded + * @return a value that can be serialized by Vaadin + */ + protected Object doEncode(T value) { + return value; + } + /** * Gets the item id for a row key. * <p> diff --git a/server/src/com/vaadin/ui/components/grid/renderers/DateRenderer.java b/server/src/com/vaadin/ui/components/grid/renderers/DateRenderer.java index aeb653ae27..e5b7fe8ae4 100644 --- a/server/src/com/vaadin/ui/components/grid/renderers/DateRenderer.java +++ b/server/src/com/vaadin/ui/components/grid/renderers/DateRenderer.java @@ -21,9 +21,6 @@ import java.util.Locale; import com.vaadin.ui.components.grid.AbstractRenderer; -import elemental.json.Json; -import elemental.json.JsonValue; - /** * A renderer for presenting date values. * @@ -133,11 +130,11 @@ public class DateRenderer extends AbstractRenderer<Date> { } @Override - public JsonValue encode(Date value) { + protected String doEncode(Date value) { if (dateFormat != null) { - return Json.create(dateFormat.format(value)); + return dateFormat.format(value); } else { - return Json.create(String.format(locale, formatString, value)); + return String.format(locale, formatString, value); } } diff --git a/server/src/com/vaadin/ui/components/grid/renderers/HtmlRenderer.java b/server/src/com/vaadin/ui/components/grid/renderers/HtmlRenderer.java index acbe4a69e7..6e68314ce2 100644 --- a/server/src/com/vaadin/ui/components/grid/renderers/HtmlRenderer.java +++ b/server/src/com/vaadin/ui/components/grid/renderers/HtmlRenderer.java @@ -17,9 +17,6 @@ package com.vaadin.ui.components.grid.renderers; import com.vaadin.ui.components.grid.AbstractRenderer; -import elemental.json.Json; -import elemental.json.JsonValue; - /** * A renderer for presenting HTML content. * @@ -33,9 +30,4 @@ public class HtmlRenderer extends AbstractRenderer<String> { public HtmlRenderer() { super(String.class); } - - @Override - public JsonValue encode(String value) { - return Json.create(value); - } } diff --git a/server/src/com/vaadin/ui/components/grid/renderers/NumberRenderer.java b/server/src/com/vaadin/ui/components/grid/renderers/NumberRenderer.java index 0f4619c180..12a2f1b10f 100644 --- a/server/src/com/vaadin/ui/components/grid/renderers/NumberRenderer.java +++ b/server/src/com/vaadin/ui/components/grid/renderers/NumberRenderer.java @@ -20,9 +20,6 @@ import java.util.Locale; import com.vaadin.ui.components.grid.AbstractRenderer; -import elemental.json.Json; -import elemental.json.JsonValue; - /** * A renderer for presenting number values. * @@ -134,11 +131,11 @@ public class NumberRenderer extends AbstractRenderer<Number> { } @Override - public JsonValue encode(Number value) { + protected String doEncode(Number value) { if (formatString != null && locale != null) { - return Json.create(String.format(locale, formatString, value)); + return String.format(locale, formatString, value); } else if (numberFormat != null) { - return Json.create(numberFormat.format(value)); + return numberFormat.format(value); } else { throw new IllegalStateException(String.format("Internal bug: " + "%s is in an illegal state: " diff --git a/server/src/com/vaadin/ui/components/grid/renderers/TextRenderer.java b/server/src/com/vaadin/ui/components/grid/renderers/TextRenderer.java index 26fc226cfa..bffbc34e7e 100644 --- a/server/src/com/vaadin/ui/components/grid/renderers/TextRenderer.java +++ b/server/src/com/vaadin/ui/components/grid/renderers/TextRenderer.java @@ -17,9 +17,6 @@ package com.vaadin.ui.components.grid.renderers; import com.vaadin.ui.components.grid.AbstractRenderer; -import elemental.json.Json; -import elemental.json.JsonValue; - /** * A renderer for presenting simple plain-text string values. * @@ -34,9 +31,4 @@ public class TextRenderer extends AbstractRenderer<String> { public TextRenderer() { super(String.class); } - - @Override - public JsonValue encode(String value) { - return Json.create(value); - } } |