--- /dev/null
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.terminal.gwt.client.communication;
+
+import com.google.gwt.json.client.JSONObject;
+import com.vaadin.terminal.gwt.client.ConnectorMap;
+import com.vaadin.terminal.gwt.server.JsonCodec;
+
+/**
+ * Implementors of this interface knows how to serialize an Object of a given
+ * type to JSON and how to deserialize the JSON back into an object.
+ *
+ * The {@link #serialize(Object, ConnectorMap)} and
+ * {@link #deserialize(JSONObject, ConnectorMap)} methods must be symmetric so
+ * they can be chained and produce the original result (or an equal result).
+ *
+ * Each {@link JSONSerializer} implementation can handle an object of a single
+ * type - see {@link SerializerMap}.
+ *
+ * @since 7.0
+ */
+public interface JSONSerializer {
+
+ /**
+ * Creates and deserializes an object received from the server. Must be
+ * compatible with {@link #serialize(Object, ConnectorMap)} and also with
+ * the server side
+ * {@link JsonCodec#encode(Object, com.vaadin.terminal.gwt.server.PaintableIdMapper)}
+ * .
+ *
+ * @param jsonValue
+ * JSON map from property name to property value
+ * @param idMapper
+ * mapper from paintable id to paintable, used to decode
+ * references to paintables
+ * @return A deserialized object
+ */
+ Object deserialize(JSONObject jsonValue, ConnectorMap idMapper);
+
+ /**
+ * Serialize the given object into JSON. Must be compatible with
+ * {@link #deserialize(JSONObject, ConnectorMap)} and also with the server
+ * side
+ * {@link JsonCodec#decode(com.vaadin.external.json.JSONArray, com.vaadin.terminal.gwt.server.PaintableIdMapper)}
+ *
+ * @param value
+ * The object to serialize
+ * @param idMapper
+ * mapper from paintable id to paintable, used to decode
+ * references to paintables
+ * @return A JSON serialized version of the object
+ */
+ JSONObject serialize(Object value, ConnectorMap idMapper);
+
+}
val = idMapper.getConnector(String.valueOf(value));
} else {
// object, class name as type
- VaadinSerializer serializer = serializerMap
+ JSONSerializer serializer = serializerMap
.getSerializer(variableType);
// TODO handle case with no serializer found
Object object = serializer
// Try to find a generated serializer object, class name is the
// type
String type = value.getClass().getName();
- VaadinSerializer serializer = JsonDecoder.serializerMap
+ JSONSerializer serializer = JsonDecoder.serializerMap
.getSerializer(type);
// TODO handle case with no serializer found
/**
* Provide a mapping from a type (communicated between the server and the
- * client) and a {@link VaadinSerializer} instance.
+ * client) and a {@link JSONSerializer} instance.
*
* An implementation of this class is created at GWT compilation time by
* {@link SerializerMapGenerator}, so this interface can be instantiated with
* if no serializer is found
*/
// TODO better error handling in javadoc and in generator
- public VaadinSerializer getSerializer(String type);
+ public JSONSerializer getSerializer(String type);
}
+++ /dev/null
-/*
-@VaadinApache2LicenseForJavaFiles@
- */
-
-package com.vaadin.terminal.gwt.client.communication;
-
-import com.google.gwt.json.client.JSONObject;
-import com.google.gwt.json.client.JSONValue;
-import com.vaadin.terminal.gwt.client.ConnectorMap;
-import com.vaadin.terminal.gwt.server.JsonCodec;
-
-/**
- * Serializer that can deserialize custom objects received from the server.
- *
- * Each serializer can handle objects of a single type - see
- * {@link SerializerMap}.
- *
- * @since 7.0
- */
-public interface VaadinSerializer {
-
- /**
- * Creates and deserializes an object received from the server. Must be
- * compatible with {@link #serialize(Object, ConnectorMap)} and also with
- * the server side
- * {@link JsonCodec#encode(Object, com.vaadin.terminal.gwt.server.PaintableIdMapper)}
- * .
- *
- * @param jsonValue
- * JSON map from property name to property value
- * @param idMapper
- * mapper from paintable id to paintable, used to decode
- * references to paintables
- * @return A deserialized object
- */
- Object deserialize(JSONObject jsonValue, ConnectorMap idMapper);
-
- /**
- * Serialize the given object into JSON. Must be compatible with
- * {@link #deserialize(JSONObject, ConnectorMap)} and also with the server
- * side
- * {@link JsonCodec#decode(com.vaadin.external.json.JSONArray, com.vaadin.terminal.gwt.server.PaintableIdMapper)}
- *
- * @param value
- * The object to serialize
- * @param idMapper
- * mapper from paintable id to paintable, used to decode
- * references to paintables
- * @return A JSON serialized version of the object
- */
- JSONObject serialize(Object value, ConnectorMap idMapper);
-
-}
import com.vaadin.terminal.gwt.client.communication.JsonDecoder;
import com.vaadin.terminal.gwt.client.communication.JsonEncoder;
import com.vaadin.terminal.gwt.client.communication.SerializerMap;
-import com.vaadin.terminal.gwt.client.communication.VaadinSerializer;
+import com.vaadin.terminal.gwt.client.communication.JSONSerializer;
/**
* GWT generator for creating serializer classes for custom classes sent from
composer.addImport(JsonDecoder.class.getName());
// composer.addImport(VaadinSerializer.class.getName());
- composer.addImplementedInterface(VaadinSerializer.class.getName());
+ composer.addImplementedInterface(JSONSerializer.class.getName());
SourceWriter sourceWriter = composer.createSourceWriter(context,
printWriter);
import com.vaadin.terminal.gwt.client.communication.SerializerMap;
import com.vaadin.terminal.gwt.client.communication.ServerRpc;
import com.vaadin.terminal.gwt.client.communication.SharedState;
-import com.vaadin.terminal.gwt.client.communication.VaadinSerializer;
+import com.vaadin.terminal.gwt.client.communication.JSONSerializer;
/**
* GWT generator that creates a {@link SerializerMap} implementation (mapper
printWriter);
sourceWriter.indent();
- sourceWriter.println("public " + VaadinSerializer.class.getName()
+ sourceWriter.println("public " + JSONSerializer.class.getName()
+ " getSerializer(String type) {");
sourceWriter.indent();