aboutsummaryrefslogtreecommitdiffstats
path: root/server/src/com/vaadin/ui/components/grid/AbstractRenderer.java
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/com/vaadin/ui/components/grid/AbstractRenderer.java')
-rw-r--r--server/src/com/vaadin/ui/components/grid/AbstractRenderer.java27
1 files changed, 27 insertions, 0 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>