aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Dahlström <johannesd@vaadin.com>2014-09-23 17:52:44 +0300
committerJohannes Dahlström <johannesd@vaadin.com>2014-09-23 18:48:18 +0300
commitd156b34db4aad889e5dcdfe6de660826e53de050 (patch)
tree272be49c88c03ff5b59a5b8a8ea4cc740daf3689
parentdd26a0da34260f0ad303b820e8a1624ca13de04a (diff)
downloadvaadin-framework-d156b34db4aad889e5dcdfe6de660826e53de050.tar.gz
vaadin-framework-d156b34db4aad889e5dcdfe6de660826e53de050.zip
Add default implementation of Renderer.encode to AbstractRenderer (#13334)
Change-Id: I74a0960bbe56e71702762e4cf1067098dd428125
-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
-rw-r--r--server/tests/src/com/vaadin/tests/server/component/grid/RendererTest.java15
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/IntArrayRenderer.java13
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/RowAwareRenderer.java8
8 files changed, 46 insertions, 51 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);
- }
}
diff --git a/server/tests/src/com/vaadin/tests/server/component/grid/RendererTest.java b/server/tests/src/com/vaadin/tests/server/component/grid/RendererTest.java
index 54d15f15d8..a98ce22469 100644
--- a/server/tests/src/com/vaadin/tests/server/component/grid/RendererTest.java
+++ b/server/tests/src/com/vaadin/tests/server/component/grid/RendererTest.java
@@ -21,6 +21,7 @@ import static org.junit.Assert.assertSame;
import java.util.Locale;
+import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
@@ -32,11 +33,12 @@ import com.vaadin.data.util.converter.Converter.ConversionException;
import com.vaadin.data.util.converter.StringToIntegerConverter;
import com.vaadin.server.VaadinSession;
import com.vaadin.tests.util.AlwaysLockedVaadinSession;
+import com.vaadin.ui.ConnectorTracker;
+import com.vaadin.ui.UI;
import com.vaadin.ui.components.grid.Grid;
import com.vaadin.ui.components.grid.GridColumn;
import com.vaadin.ui.components.grid.renderers.TextRenderer;
-import elemental.json.Json;
import elemental.json.JsonValue;
public class RendererTest {
@@ -51,9 +53,8 @@ public class RendererTest {
private static class TestRenderer extends TextRenderer {
@Override
- public JsonValue encode(String value) {
- return Json.create("renderer(" + super.encode(value).asString()
- + ")");
+ protected String doEncode(String value) {
+ return "renderer(" + super.doEncode(value) + ")";
}
}
@@ -114,7 +115,13 @@ public class RendererTest {
item.getItemProperty("baz").setValue(new TestBean());
item.getItemProperty("bah").setValue(new ExtendedBean());
+ UI ui = EasyMock.createNiceMock(UI.class);
+ ConnectorTracker ct = EasyMock.createNiceMock(ConnectorTracker.class);
+ EasyMock.expect(ui.getConnectorTracker()).andReturn(ct).anyTimes();
+ EasyMock.replay(ui, ct);
+
grid = new Grid(c);
+ grid.setParent(ui);
foo = grid.getColumn("foo");
bar = grid.getColumn("bar");
diff --git a/uitest/src/com/vaadin/tests/components/grid/IntArrayRenderer.java b/uitest/src/com/vaadin/tests/components/grid/IntArrayRenderer.java
index ccedcc908a..737dccbc82 100644
--- a/uitest/src/com/vaadin/tests/components/grid/IntArrayRenderer.java
+++ b/uitest/src/com/vaadin/tests/components/grid/IntArrayRenderer.java
@@ -17,21 +17,8 @@ package com.vaadin.tests.components.grid;
import com.vaadin.ui.components.grid.AbstractRenderer;
-import elemental.json.Json;
-import elemental.json.JsonArray;
-import elemental.json.JsonValue;
-
public class IntArrayRenderer extends AbstractRenderer<int[]> {
public IntArrayRenderer() {
super(int[].class);
}
-
- @Override
- public JsonValue encode(int[] value) {
- JsonArray valueArray = Json.createArray();
- for (int i = 0; i < value.length; ++i) {
- valueArray.set(i, value[i]);
- }
- return valueArray;
- }
}
diff --git a/uitest/src/com/vaadin/tests/components/grid/RowAwareRenderer.java b/uitest/src/com/vaadin/tests/components/grid/RowAwareRenderer.java
index 41ccddc2cf..2b89d2ea99 100644
--- a/uitest/src/com/vaadin/tests/components/grid/RowAwareRenderer.java
+++ b/uitest/src/com/vaadin/tests/components/grid/RowAwareRenderer.java
@@ -19,9 +19,6 @@ import com.vaadin.tests.widgetset.client.grid.RowAwareRendererConnector.RowAware
import com.vaadin.ui.Label;
import com.vaadin.ui.components.grid.AbstractRenderer;
-import elemental.json.Json;
-import elemental.json.JsonValue;
-
public class RowAwareRenderer extends AbstractRenderer<Void> {
public RowAwareRenderer(final Label debugLabel) {
super(Void.class);
@@ -35,8 +32,7 @@ public class RowAwareRenderer extends AbstractRenderer<Void> {
}
@Override
- public JsonValue encode(Void value) {
- return Json.createNull();
+ protected Object doEncode(Void value) {
+ return null;
}
-
}