Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(746)

Unified Diff: pkg/serialization/lib/serialization.dart

Issue 12136002: Some fixes to work better with the services framework (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Changes from review comments Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | pkg/serialization/lib/src/basic_rule.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/serialization/lib/serialization.dart
diff --git a/pkg/serialization/lib/serialization.dart b/pkg/serialization/lib/serialization.dart
index 3f2146d140cd58f33fea04af731f0bc4a041e8b0..a72dc571698021b17500d43764cafe348e484158 100644
--- a/pkg/serialization/lib/serialization.dart
+++ b/pkg/serialization/lib/serialization.dart
@@ -21,8 +21,8 @@
* This creates a new serialization and adds a rule for address objects. Right
* now it has to be passed an address instance because of limitations using
* Address as a literal. Then we ask the Serialization to write the address
- * and we get back a String which is a [JSON] representation of the state of
- * it and related objects.
+ * and we get back a Map which is a [json]able representation of the state of
+ * the address and related objects.
*
* The version above used reflection to automatically identify the public
* fields of the address object. We can also specify those fields explicitly.
@@ -105,7 +105,8 @@
* There are cases where the constructor needs values that we can't easily get
* from the serialized object. For example, we may just want to pass null, or a
* constant value. To support this, we can specify as constructor fields
- * values that aren't field names. If any value isn't a String, it will be
+ * values that aren't field names. If any value isn't a String, or is a string
+ * that doesn't correspond to a field name, it will be
* treated as a constant and passed unaltered to the constructor.
*
* In some cases a non-constructor field should not be set using field
@@ -125,7 +126,9 @@
*
* By default this uses a representation in which objects are represented as
* maps keyed by field name, but in which references between objects have been
- * converted into Reference objects. This is then encoded as a [json] string.
+ * converted into Reference objects. This is then typically encoded as
+ * a [json] string, but can also be used in other ways, e.g. sent to another
+ * isolate.
*
* We can write objects in different formats by passing a [Format] object to
* the [write] method or by getting a [Writer] object. The available formats
@@ -133,12 +136,12 @@
* and a simple JSON format that produces output more suitable for talking to
* services that expect JSON in a predefined format. Examples of these are
*
- * String output = serialization.write(address, new SimpleMapFormat());
+ * Map output = serialization.write(address, new SimpleMapFormat());
* List output = serialization.write(address, new SimpleFlatFormat());
- * Map output = serialization.write(address, new SimpleJsonFormat());
+ * var output = serialization.write(address, new SimpleJsonFormat());
* Or, using a [Writer] explicitly
* var writer = serialization.newWriter(new SimpleFlatFormat());
- * var output = writer.write(address);
+ * List output = writer.write(address);
*
* These representations are not yet considered stable.
*
@@ -146,7 +149,7 @@
* =======
* To read objects, the corresponding [read] method can be used.
*
- * Address input = serialization.read(aString);
+ * Address input = serialization.read(input);
*
* When reading, the serialization instance doing the reading must be configured
* with compatible rules to the one doing the writing. It's possible for the
@@ -235,6 +238,8 @@ class Serialization {
* is off by default.
*/
bool get selfDescribing {
+ // TODO(alanknight): Should this be moved to the format?
+ // TODO(alanknight): Allow self-describing in the presence of CustomRule.
if (_selfDescribing != null) return _selfDescribing;
return !_rules.any((x) => x is CustomRule);
}
@@ -344,14 +349,16 @@ class Serialization {
/**
* Read the serialized data from [input] and return the root object
- * from the result. If there are objects that need to be resolved
+ * from the result. The [input] can be of any type that the [Format]
+ * reads/writes, but normally will be a [List], [Map], or a simple type.
+ * If there are objects that need to be resolved
* in the current context, they should be provided in [externals] as a
* Map from names to values. In particular, in the current implementation
* any class mirrors needed should be provided in [externals] using the
* class name as a key. In addition to the [externals] map provided here,
- * values will be looked up in the [externalObjects] map.
+ * values will be looked up in the [namedObjects] map.
*/
- read(String input, [Map externals = const {}]) {
+ read(input, [Map externals = const {}]) {
return newReader().read(input, externals);
}
« no previous file with comments | « no previous file | pkg/serialization/lib/src/basic_rule.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698