aboutsummaryrefslogtreecommitdiffstats
path: root/server/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/src')
-rw-r--r--server/src/com/vaadin/ui/components/grid/AbstractRenderer.java27
-rw-r--r--server/src/com/vaadin/ui/components/grid/renderers/DateRenderer.java9
-rw-r--r--server/src/com/vaadin/ui/components/grid/renderers/HtmlRenderer.java8
-rw-r--r--server/src/com/vaadin/ui/components/grid/renderers/NumberRenderer.java9
-rw-r--r--server/src/com/vaadin/ui/components/grid/renderers/TextRenderer.java8
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);
- }
}