2009-02-13 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mcs / class / System.Runtime.Serialization / System.Runtime.Serialization / ChangeLog
1 2009-02-13  Atsushi Enomoto  <atsushi@ximian.com>
2
3         * SerializationMap.cs : remove use of non-2.1 CreateInstance().
4         * XmlFormatterDeserializer.cs : allow empty element.
5
6 2009-02-13  Atsushi Enomoto  <atsushi@ximian.com>
7
8         * SerializationMap.cs, DataContractSerializer.cs,
9           KnownTypeCollection.cs : now .NET 3.5/SP1 supports non-contract
10           type serialization.
11
12 2009-02-13  Atsushi Enomoto  <atsushi@ximian.com>
13
14         * SerializationMap.cs, KnownTypeCollection.cs : couple of refactoring
15           to simplify code base and handle CollectionDataContract namespace.
16
17 2009-02-13  Atsushi Enomoto  <atsushi@ximian.com>
18
19         * SerializationMap.cs : oops, remove debug lines.
20
21 2009-02-13  Atsushi Enomoto  <atsushi@ximian.com>
22
23         * DataContractSerializer.cs : remove extra writexmlns.
24         * SerializationMap.cs : allow DataMember of collection contract type
25           as read-only.
26         * KnownTypeCollection.cs : it was not iterating interfaces to find
27           IEnumerable<T> correctly.
28
29 2009-02-03  Atsushi Enomoto  <atsushi@ximian.com>
30
31         * SerializationMap.cs : a bit more detailed error message.
32
33 2009-01-23  Atsushi Enomoto  <atsushi@ximian.com>
34
35         * KnownTypeCollection.cs : similar fix to the previous one,
36           on uint16.
37
38 2009-01-22  Alan McGovern  <amcgovern@novell.com>
39
40         * KnownTypeCollection.cs : The byte overload doesn't exist in
41         Silverlight, so cast the byte to an int instead.
42
43 2008-11-23  Atsushi Enomoto  <atsushi@ximian.com>
44
45         * DataContractAttribute.cs : remove MonoTODO.
46
47 2008-11-23  Atsushi Enomoto  <atsushi@ximian.com>
48
49         * SerializationMap.cs, XmlFormatterSerializer.cs,
50           XmlFormatterDeserializer.cs, DataContractAttribute.cs,
51           CollectionDataContractAttribute.cs, KnownTypeCollection.cs :
52           support IsReference (new in 3.5 SP1).
53
54 2008-11-23  Atsushi Enomoto  <atsushi@ximian.com>
55
56         * DataContractSerializer.cs : remove extra type validity check.
57
58 2008-11-23  Atsushi Enomoto  <atsushi@ximian.com>
59
60         * XmlFormatterSerializer.cs : one object could not be serialized
61           twice in non-circular situation.
62
63 2008-09-09  Atsushi Enomoto  <atsushi@ximian.com>
64                         Jb Evain  <jbevain@novell.com>
65
66         * IDataContractSurrogater.cs, SerializationMap.cs:
67         add support to build on the net_2_1 profile.
68
69 2008-06-19  Noam Lampert <noaml@mainsoft.com>
70         
71         * KnownTypeCollection.cs: Support anyUri type
72
73 2008-06-05  Noam Lampert <noaml@mainsoft.com>
74         
75         * KnownTypeCollection.cs: Support XmlRoot attribute
76
77 2008-06-01  Noam Lampert <noaml@mainsoft.com>
78         
79         * KnownTypeCollection.cs: Implement byte[] serialization.
80
81 2008-05-19  Noam Lampert <noaml@mainsoft.com>
82         
83         * KnownTypeCollection.cs: Implement char serialization.
84            
85 2008-05-19  Noam Lampert <noaml@mainsoft.com>
86         
87         * KnownTypeCollection.cs, XmlFormatterDeserializer.cs: Imporve support for 
88            Nullable types in contracts.
89            
90 2008-04-29  Eyal Alaluf <eyala@mainsoft.com>
91
92         * KnownTypeCollection.cs: Fixed a typo in long conversion.
93
94 2008-04-17  Eyal Alaluf <eyala@mainsoft.com>
95
96         * SerializationMap.cs: Implement partially collections deserialization.
97           Supports arrays and types derived from IList. Needs support for calling
98           'Add' method and for dictionaries.
99         * SerializationMap.cs XmlFormatterSerializer.cs DataContractSerializer.cs:
100           Serialize namespaces for base members according to base class namespace.
101
102 2008-04-14  Eyal Alaluf <eyala@mainsoft.com>
103
104         * SerializationMap.cs: Use FormatterServices.GetUninitializedObject instead
105           of Activator.CreateInstance.
106
107 2008-04-10  Eyal Alaluf <eyala@mainsoft.com>
108
109         * DataContractSerializer.cs: Write and register the current type namespace
110           within the writer.
111         * XmlObjectSerializer.cs: ReadObject verifies by default.
112         * XmlFormatterSerializer.cs: Write and register XML namespaces.
113         * XmlFormatterDeserializer.cs: Refactored so Deserialize instance method can
114           be used from SerializationMap deserialization logic recursively.
115         * SerializationMap.cs: Reimplemented main deserialization logic. Now it
116           handles better missing entries, consumes the XmlReader until the end
117           element and handles XML namespaces correctly.
118           Enabled checks for required fields.
119
120 2008-02-27  Eyal Alaluf <eyala@mainsoft.com>
121
122         * SerializationMap.cs: Fix namespace logic at least in simple case where
123           there are several unknown elements before the current element.
124         * ContractNamespaceAttribute.cs: The ClrNamespace is not set by the ctor.
125         * XmlObjectSerializer.cs: Dispose the XmlWriter created in WriteObject
126           to a stream.
127         * DataMemberAttribute.cs: Added the EmitDefaultValue property.
128         * XsdDataContractImporter.cs: Handle null arguments in Import methods.
129         * KnownTypeCollection.cs: Use XmlConvert.ToDateTime with roundtrip style.
130
131 2007-12-05  Atsushi Enomoto  <atsushi@ximian.com>
132
133         * XmlObjectSerializer.cs : some methods became virtual (in Redbits).
134         * DataContractSerializer.cs : added some overriden methods in Redbits.
135           knownTypes can be null in .ctor().
136
137 2007-08-17  Atsushi Enomoto  <atsushi@ximian.com>
138
139         * SerializationMap.cs : for void it cannot be instantiated. Return
140           null instead.
141
142 2007-08-17  Atsushi Enomoto  <atsushi@ximian.com>
143
144         * XmlFormatterDeserializer.cs DataContractSerializer.cs :
145           uhoh, the semantic of bool parameter in ReadObject() has
146           changed in the RTM. Implemented it as verifyObjectName.
147
148 2007-03-27  Atsushi Enomoto  <atsushi@ximian.com>
149
150         * SerializationMap.cs
151           XmlFormatterSerializer.cs
152           DataContractSerializer.cs :
153           now it needs some mess to handle serialization namespaces.
154           Collection items are serialized in its own xml namespace. Others,
155           (including the collection member itself) is serialized in its
156           parent xml namespace. Collection items are serialized with its
157           wrapping element.
158         * XsdDataContractImporter.cs : use constant.
159
160 2007-03-26  Atsushi Enomoto  <atsushi@ximian.com>
161
162         * KnownTypeCollection.cs : added support for Guid serialization.
163
164 2006-10-20  Atsushi Enomoto  <atsushi@ximian.com>
165
166         * KnownTypeCollection.cs : (RemoveItem) don't remove items while 
167           iterating.
168
169 2006-09-06  Ankit Jain  <jankit@novell.com>
170
171         * SerializationMap.cs (SerializationMap.GetSequence): Set minOccurs = 0
172
173 2006-09-05  Ankit Jain  <jankit@novell.com>
174
175         * XsdDataContractExporter.cs (XsdDataContractExporter.MSTypesSchema):
176         Load resource mstypes.schema
177         (XsdDataContractExporter.Schemas): Add MSTypesSchema by default.
178
179 2006-09-05  Ankit Jain  <jankit@novell.com>
180
181         * SerializationMap.cs (SerializationMap.AddImport): New.
182         (SerializationMap.GetSequence): Use AddImport.
183
184 2006-09-04  Ankit Jain  <jankit@novell.com>
185
186         * SerializationMap.cs (SerializationMap.GetSchemaSet): Remove.
187         (SerializationMap.GetSchemaType):
188         (SerializationMap.GetSequence):
189         (SerializationMap.GetSchema): Change XmlSchemas param to XmlSchemaSet.
190         Call XmlSchemaSet.Reprocess whenever an existing schema is modified.
191         * XsdDataContractExporter.cs (XsdDataContractExporter.Export): Update to
192         changes in SerializationMap.
193         (XsdDataContractExporter.CanExport): Implement.
194         (XsdDataContractExporter.GetSchemaType): Implement.
195         (XsdDataContractExporter.GetSchemaTypeName): Implement.
196         (XsdDataContractExporter.KnownTypes): New.
197         (XsdDataContractExporter.GeneratedTypes): New.
198
199 2006-09-01  Ankit Jain  <jankit@novell.com>
200
201         * SerializationMap.cs (SerializationMap.GetSchemaSet): New.
202         (SerializationMap.IsPrimitive): New.
203         (SerializationMap.GetSchemaType): New.
204         (SerializationMap.GetSequence): New.
205         (SerializationMap.GetMembers): New.
206         (SerializationMap.GetSchemaElement): New.
207         (SerializationMap.GetSchema): New.
208         (SerializationMap.GetQualifiedName): New.
209         New methods for exporting schema for the type.
210
211         (SharedContractMap.ctor): Move code for building Members list to ..
212         (SharedContractMap.GetMembers): .. here.
213
214         (CollectionTypeMap.Serialize): Mark 'override'.
215         (CollectionTypeMap.GetMembers): 'override' and throw
216         NotImplementedException.
217         (CollectionTypeMap.GetSchemaType): Implement.
218
219         (SharedTypeMap..ctor): Move code to ..
220         (SharedTypeMap.GetMembers): .. here.
221         (EnumMap.GetSchemaType): Implement.
222
223         * XsdDataContractExporter.cs (XsdDataContractExporter.Export):
224         Implement.
225         * KnownTypeCollection.cs (KnownTypeCollection.GetCollectionQName): Use
226         GetQName instead of GetXmlName. Set Namespace for collections of
227         primitive types to MSArraysNamespace
228
229 2006-08-31  Ankit Jain  <jankit@novell.com>
230
231         * SerializationMap.cs (EnumMap): New. For de/serializing enums.
232         (EnumMemberInfo): New.
233         (SerializationMap.DeserializeContent): Made protected virtual from private.
234         * DataContractSerializer.cs (WriteStartObject):
235         Ensure that "i:type" is not emitted for enums.
236         * KnownTypeCollection.cs (GetPrimitiveTypeName): Don't treat enum as a
237         primitive type.
238         (GetQName): Likewise. Use GetEnumQName for enums.
239         (GetEnumQName): New.
240         (IsPrimitiveNotEnum): New.
241         (TryRegister): Add support for enums.
242         (RegisterEnum): New.
243
244 2006-08-14  Atsushi Enomoto  <atsushi@ximian.com>
245
246         * XmlFormatterSerializer.cs : (contd from my previous change)
247           ... and don't complain at WriteObject(). It is somehow required
248           in S.SM.D.WSTrustContract (soon to be committed).
249
250 2006-07-27  Ankit Jain  <jankit@novell.com>
251
252         * XsdDataContractImporter.cs (Compile): Remove, thanks to eno
253         XmlSchemaSet.Compile () works now.
254         Update to directly use XmlSchemaSet.Compile ()
255
256 2006-07-27  Ankit Jain  <jankit@novell.com>
257
258         * XsdDataContractImporter.cs (ImportInternal): New.
259         Update various overloads of Import to use this.
260         (ImportFromTypeMapping): New. Emits code for a DataContract from a
261         XmlTypeMapping. Code is duplicate of
262         ServiceContractGenerator.ExportDataContract .
263         (GetNamespace): New. Duplicate like above.
264         (Compile): New. Temporary hack, will XmlSchemaSet.Compile is not
265         working.
266
267 2006-07-18  Atsushi Enomoto  <atsushi@ximian.com>
268
269         * XmlFormatterSerializer.cs, KnownTypeCollection.cs :
270           don't raise an error at DataContractSerializer..ctor(). Raise
271           InvalidDataContractException on WriteObject().
272
273 2006-07-12  Ankit Jain  <jankit@novell.com>
274
275         * SerializationMap.cs (XmlSerializableMap): New. Map for classes which
276         implement IXmlSerializable interface.
277         * KnownTypeCollection.cs (KnownTypeCollection.GetQName): Add support for
278         types which implement IXmlSerializable interface. Change the order in
279         which DataContractAttribute/IXmlSerializable/SerializableAttribute get
280         selected.
281         (KnownTypeCollection.TryRegister): Change the order like above.
282         (KnownTypeCollection.RegisterIXmlSerializable): New.
283
284 2006-07-04  Atsushi Enomoto  <atsushi@ximian.com>
285
286         * XsdDataContractExporter.cs, XmlObjectSerializer.cs,
287           InvalidDataContractException.cs : some June CTP updates.
288
289 2006-07-04  Atsushi Enomoto  <atsushi@ximian.com>
290
291         * IDataContractSurrogate.cs, ExportOptions.cs,
292           DataContractSerializer.cs, KnownTypeCollection.cs :
293           June CTP updates.
294
295 2006-05-09  Atsushi Enomoto  <atsushi@ximian.com>
296
297         * DataContractSerializer.cs : null knownTypes argument is allowed.
298         * KnownTypeCollection.cs : Type.Namespace could be null.
299
300 2006-05-09  Atsushi Enomoto  <atsushi@ximian.com>
301
302         * KnownTypeCollection.cs : for nested classes, treat localName of
303           the QName as "Parent.Child", not "Child".
304           Don't encode name here (to pass ".").
305
306 2006-05-09  Atsushi Enomoto  <atsushi@ximian.com>
307
308         * DataContractSerializer.cs :
309           Added maxObjectsInGraph range check.
310           interface type has BaseType as null, so end base type check when
311           it is null (I don't think this check is required btw).
312
313 2006-04-05  Atsushi Enomoto  <atsushi@ximian.com>
314
315         * DataContractSerializer.cs : xmlns:xsi is not written when the
316           target type is string.
317
318 2006-03-22  Ankit Jain  <jankit@novell.com>
319
320         * SerializationMap.cs (CheckDataContractEqual): Remove.
321         (Deserialize): Allows expected type to be a derived one from actual
322         type.
323         (DeserializeInternal): Handle DataMember of type 'object'.
324         * XmlFormatterSerializer.cs (SerializeNonPrimitive): Serialize types not
325         already known.
326         * DataContractSerializer.cs (.ctor): Use KnownTypeCollection.GetQName
327         instead of doing it manually.
328         (PopulateTypes): Change return type from KnownTypeCollection to void.
329         Scan the base types to ensure that all have DataContract or Serializable
330         attributes.
331         Add all (including inherited) KnownTypeAttribute values to the
332         collection.
333
334 2006-03-18  Ankit Jain  <jankit@novell.com>
335
336         * SerializationMap.cs (SerializationMap.GetEmptyInstance): Rename to ..
337         (SerializationMap.GetInstance): .. this. Gets the instance or null if nil=true.
338         (SerializationMap.DeserializeInternal): New. Renamed from .. 
339         (SerializationMap.Deserialize): .. this. Check DataContract equivalence, and use new
340         DeserializeInternal for rest of the work.
341         (DeserializeContent): Cleanup and handle various "null" cases.
342         * XmlFormatterSerializer.cs (Write_i_type): New. Write i:type=".."
343         (SerializeNonPrimitive): Update to use Write_i_type.
344         * DataContractSerializer.cs (WriteStartObject): Add rootType to known_types.
345
346 2006-03-16  Ankit Jain  <jankit@novell.com>
347
348         * SerializationMap.cs (SerializationMap.Deserialize): Use NameTable.Get
349         before reader.LookupNamespace.
350         (DataMemberInfo.Compare): Use String.CompareOrdinal instead of
351         String.Compare.
352
353 2006-03-16  Ankit Jain  <jankit@novell.com>
354
355         * SerializationMap.cs (SerializationMap.GetEmptyInstance): New.
356         (SerializationMap.Deserialize): Refactor, handle primitive types and nils.
357         (SerializationMap.DeserializeContent): Handle nils and nested DataContracts.
358         (SharedContractMap.ctor): Include inherited properties and fields, in
359         the correct order.
360
361 2006-03-15  Ankit Jain  <jankit@novell.com>
362
363         * KnownTypeCollection.cs (IsPrimitiveType): New.
364         * SerializationMap.cs (Deserialize): Handle primitive types.
365
366 2006-03-15  Ankit Jain  <jankit@novell.com>
367
368         * DataContractSerializer.cs (WriteObjectContent): Handle null.
369         (WriteStartObject): Rewritten.
370         * KnownTypeCollection.cs (GetQName): New. Return QName for a given type.        
371         (GetContractQName):
372         (GetSerializableQName):
373         (GetCollectionQName): New.
374         (RegisterContract):
375         (RegisterSerializable):
376         (RegisterCollection): Update to use new Get* methods.
377         * SerializationMap.cs (CheckDataContractEqual): New.
378         (Deserialize): Split into this and ..
379         (DeserializeContent): .. this.
380         * XmlDictionaryWriter.cs (CreateTextWriter): Use UTF8Encoding.
381
382 2006-03-09  Atsushi Enomoto  <atsushi@ximian.com>
383
384         * DataContractSerializer.cs : xmlns output should be done at
385           WriteStartObject().
386
387 2006-03-08  Ankit Jain  <jankit@novell.com>
388
389         * DataContractSerializer.cs (.ctor): Use name & namespace specified (if any) 
390         with the DataContractAttribute for non-primitive types.
391         (DataContractSerializer.WriteStartObject): DataContractAttribute.Name
392         cannot be "".
393
394 2006-03-03  Atsushi Enomoto  <atsushi@ximian.com>
395
396         * DataContractSerializer.cs : Handle primitive type name rather than
397           raw type name in constructors that don't receive root QName.
398           In case the actual graph is not of root type, write xsi:type.
399
400 2006-03-02  Atsushi Enomoto  <atsushi@ximian.com>
401
402         * KnownTypeCollection.cs : default namespace contains common MS base
403           URI fragment.
404         * XmlObjectSerializer.cs : added internal common utility field.
405         * DataContractSerializer.cs : Fixed constructors to fill fields and
406           make it work.
407         * NetDataContractSerializer.cs : just leave it unimplemented until
408           we find how it works. It looks different from what
409           DataContractSerializer does.
410
411 2006-01-17  Atsushi Enomoto  <atsushi@ximian.com>
412
413         * XmlFormatter.cs : extra namespaces are not written in Dec.CTP.
414
415 2005-11-28  Atsushi Enomoto  <atsushi@ximian.com>
416
417         * KnownTypeCollection.cs : override.
418
419 2005-11-02  Atsushi Enomoto  <atsushi@ximian.com>
420
421         * SerializationMap.cs, XmlFormatterSerializer.cs, XmlFormatter.cs
422           XmlFormatterDeserializer.cs, KnownTypeCollection.cs :
423           several changes. Partial support for collection serialization.
424           SerializationMap now contains its own Deserialize()/Serialize()
425           methods.
426
427 2005-10-20  Atsushi Enomoto  <atsushi@ximian.com>
428
429         * XmlFormatterDeserializer.cs : new file.
430         * SerializationMap.cs, XmlFormatter.cs, KnownTypeCollection.cs :
431           several changes for pretty primitive Deserialize() implementation.
432
433 2005-10-07  Atsushi Enomoto  <atsushi@ximian.com>
434
435         Added hacky serialization feature. Actually it should be rewritten to
436         be based on IDataContractSurrogate.
437         * SerializationMap.cs, XmlFormatterSerializer.cs :
438           new files for Serialize() implementation.
439         * KnownTypeCollection.cs : use serialization maps to check contracts.
440         * XmlFormatter.cs : implemented hacky Serialize().
441         * DataMemberAttribute.cs : default Order is -1.
442         * DataContractAttribute.cs : added tiny comment.
443
444 2005-10-03  Atsushi Enomoto  <atsushi@ximian.com>
445
446         * XmlFormatter.cs : Added implementation switch between
447           BinaryFormatter and internal DataContractFormatter.
448         * XmlSerializableServices.cs : WriteNodes() impl.
449
450 2005-10-03  Atsushi Enomoto  <atsushi@ximian.com>
451
452         * XmlSerializableServices.cs : ReadNodes() impl.
453
454 2005-09-28  Atsushi Enomoto  <atsushi@ximian.com>
455
456         * KnownTypeAttribute.cs : fixed attribute usage.
457
458 2005-09-22  Atsushi Enomoto  <atsushi@ximian.com>
459
460         * IDataContractSurrogate.cs, ContractNamespaceAttribute.cs,
461           XsdDataContractExporter.cs, KnownTypeAttribute.cs,
462           SerializationMode.cs, XmlFormatter.cs, DataMemberAttribute.cs,
463           ImportOptions.cs, UnknownSerializationData.cs,
464           SerializationFactoryMethodAttribute.cs, XmlSerializableServices.cs,
465           DataContractAttribute.cs, ExportOptions.cs,
466           InvalidDataContractException.cs, IUnknownSerializationData.cs,
467           CollectionDataContractAttribute.cs, XsdDataContractImporter.cs,
468           KnownTypeCollection.cs :
469           #if NET_2_0. coding style was updated.
470
471 2005-09-22  Atsushi Enomoto  <atsushi@ximian.com>
472
473         * CollectionDataContractAttribute.cs
474           ContractNamespaceAttribute.cs
475           DataContractAttribute.cs
476           DataMemberAttribute.cs
477           ExportOptions.cs
478           IDataContractSurrogate.cs
479           InvalidDataContractException.cs
480           IUnknownSerializationData.cs
481           ImportOptions.cs
482           KnownTypeAttribute.cs
483           KnownTypeCollection.cs
484           SerializationFactoryMethodAttribute.cs
485           SerializationMode.cs
486           UnknownSerializationData.cs
487           XmlFormatter.cs
488           XmlSerializableServices.cs
489           XsdDataContractExporter.cs
490           XsdDataContractImporter.cs : new files.
491