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