1 2009-05-18 Atsushi Enomoto <atsushi@ximian.com>
3 * SerializationMap.cs, XmlFormatterDeserializer.cs,
4 KnownTypeCollection.cs : Support for array of some primitive types
5 in the deserializer was missing, which resulted in peer resolver
6 RegisterInfo deserialization failure.
8 2009-05-18 Atsushi Enomoto <atsushi@ximian.com>
10 * XmlFormatterDeserializer.cs : remove type lookup optimization
11 (since .NET 3.5 introduced system types with DC) and fix
12 serialization of system types (ISerializable types were not
13 resolved in previous code).
15 2009-05-18 Atsushi Enomoto <atsushi@ximian.com>
17 * SerializationMap.cs : it was only about 2.1. Fix build.
19 2009-05-18 Atsushi Enomoto <atsushi@ximian.com>
21 * SerializationMap.cs : It is not possible to get schema without
22 IXmlSerializable instance.
24 2009-05-15 Atsushi Enomoto <atsushi@ximian.com>
26 * DataContractSerializer.cs : write dictionary string directly for
27 root name/ns (root only, so far).
29 2009-05-14 Atsushi Enomoto <atsushi@ximian.com>
31 * SerializationMap.cs: interface collection failed to serialize as
32 it was calling inappropriate GetInterfaceMap().
34 2009-04-01 Atsushi Enomoto <atsushi@ximian.com>
36 * XmlFormatterDeserializer.cs : more hack to handle empty
39 2009-03-24 Atsushi Enomoto <atsushi@ximian.com>
41 * SerializationMap.cs, XmlFormatterDeserializer.cs:
42 empty collection deserialization resulted in extra
43 consumption of the next xml node.
45 2009-03-19 Atsushi Enomoto <atsushi@ximian.com>
47 * KnownTypeCollection.cs, XmlFormatterDeserializer.cs :
48 to infer type from xml qname, consider DataContractAttribute
51 2009-03-12 Atsushi Enomoto <atsushi@ximian.com>
53 * SerializationMap.cs : make generic type parsing sloppy.
54 because we don't know some cryptic hash algorithm:
55 http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2007/05/10/wcf-serialization-and-generics.aspx
57 2009-03-12 Atsushi Enomoto <atsushi@ximian.com>
59 * SerializationMap.cs, KnownTypeCollection.cs :
60 support CollectionDataContract-based dictionary too.
62 2009-03-12 Atsushi Enomoto <atsushi@ximian.com>
64 * SerializationMap.cs, KnownTypeCollection.cs :
65 added support for dictionary serialization (not for
66 CollectionDataContract-attributed dictionary yet).
68 2009-03-12 Atsushi Enomoto <atsushi@ximian.com>
70 * SerializationMap.cs : cosmetic !NET_2_1 fix (no effect).
71 * KnownTypeCollection.cs : use ICollection<> and IList instead of
72 IEnumerable. This causes confusion for dictionary.
74 2009-03-11 Atsushi Enomoto <atsushi@ximian.com>
76 * XmlFormatterSerializer.cs, XmlObjectSerializer.cs,
77 XmlFormatterDeserializer.cs, KnownTypeCollection.cs :
78 add more xsi:type to cover collection items.
80 2009-03-11 Atsushi Enomoto <atsushi@ximian.com>
82 * KnownTypeCollection.cs : fix generic argument names in xml.
83 They should use xmlized names instead of raw type name.
84 * XmlFormatterDeserializer.cs : remove extra Console.WriteLine.
86 2009-03-11 Atsushi Enomoto <atsushi@ximian.com>
88 * SerializationMap.cs : eliminate whitespace misuses.
90 2009-03-11 Atsushi Enomoto <atsushi@ximian.com>
92 * SerializationMap.cs : actually it could just be ICollection<T>.
94 2009-03-11 Atsushi Enomoto <atsushi@ximian.com>
96 * SerializationMap.cs : implemented generic IList deserialization.
98 2009-03-10 Atsushi Enomoto <atsushi@ximian.com>
100 * KnownTypeCollection.cs : fix for generic serialization.
102 2009-02-27 Atsushi Enomoto <atsushi@ximian.com>
104 * SerializationMap.cs : look for unordered members first, in
105 different iteration. Got SL OpenStreetMap working.
107 2009-02-13 Atsushi Enomoto <atsushi@ximian.com>
109 * SerializationMap.cs : remove use of non-2.1 CreateInstance().
110 * XmlFormatterDeserializer.cs : allow empty element.
112 2009-02-13 Atsushi Enomoto <atsushi@ximian.com>
114 * SerializationMap.cs, DataContractSerializer.cs,
115 KnownTypeCollection.cs : now .NET 3.5/SP1 supports non-contract
118 2009-02-13 Atsushi Enomoto <atsushi@ximian.com>
120 * SerializationMap.cs, KnownTypeCollection.cs : couple of refactoring
121 to simplify code base and handle CollectionDataContract namespace.
123 2009-02-13 Atsushi Enomoto <atsushi@ximian.com>
125 * SerializationMap.cs : oops, remove debug lines.
127 2009-02-13 Atsushi Enomoto <atsushi@ximian.com>
129 * DataContractSerializer.cs : remove extra writexmlns.
130 * SerializationMap.cs : allow DataMember of collection contract type
132 * KnownTypeCollection.cs : it was not iterating interfaces to find
133 IEnumerable<T> correctly.
135 2009-02-03 Atsushi Enomoto <atsushi@ximian.com>
137 * SerializationMap.cs : a bit more detailed error message.
139 2009-01-23 Atsushi Enomoto <atsushi@ximian.com>
141 * KnownTypeCollection.cs : similar fix to the previous one,
144 2009-01-22 Alan McGovern <amcgovern@novell.com>
146 * KnownTypeCollection.cs : The byte overload doesn't exist in
147 Silverlight, so cast the byte to an int instead.
149 2008-11-23 Atsushi Enomoto <atsushi@ximian.com>
151 * DataContractAttribute.cs : remove MonoTODO.
153 2008-11-23 Atsushi Enomoto <atsushi@ximian.com>
155 * SerializationMap.cs, XmlFormatterSerializer.cs,
156 XmlFormatterDeserializer.cs, DataContractAttribute.cs,
157 CollectionDataContractAttribute.cs, KnownTypeCollection.cs :
158 support IsReference (new in 3.5 SP1).
160 2008-11-23 Atsushi Enomoto <atsushi@ximian.com>
162 * DataContractSerializer.cs : remove extra type validity check.
164 2008-11-23 Atsushi Enomoto <atsushi@ximian.com>
166 * XmlFormatterSerializer.cs : one object could not be serialized
167 twice in non-circular situation.
169 2008-09-09 Atsushi Enomoto <atsushi@ximian.com>
170 Jb Evain <jbevain@novell.com>
172 * IDataContractSurrogater.cs, SerializationMap.cs:
173 add support to build on the net_2_1 profile.
175 2008-06-19 Noam Lampert <noaml@mainsoft.com>
177 * KnownTypeCollection.cs: Support anyUri type
179 2008-06-05 Noam Lampert <noaml@mainsoft.com>
181 * KnownTypeCollection.cs: Support XmlRoot attribute
183 2008-06-01 Noam Lampert <noaml@mainsoft.com>
185 * KnownTypeCollection.cs: Implement byte[] serialization.
187 2008-05-19 Noam Lampert <noaml@mainsoft.com>
189 * KnownTypeCollection.cs: Implement char serialization.
191 2008-05-19 Noam Lampert <noaml@mainsoft.com>
193 * KnownTypeCollection.cs, XmlFormatterDeserializer.cs: Imporve support for
194 Nullable types in contracts.
196 2008-04-29 Eyal Alaluf <eyala@mainsoft.com>
198 * KnownTypeCollection.cs: Fixed a typo in long conversion.
200 2008-04-17 Eyal Alaluf <eyala@mainsoft.com>
202 * SerializationMap.cs: Implement partially collections deserialization.
203 Supports arrays and types derived from IList. Needs support for calling
204 'Add' method and for dictionaries.
205 * SerializationMap.cs XmlFormatterSerializer.cs DataContractSerializer.cs:
206 Serialize namespaces for base members according to base class namespace.
208 2008-04-14 Eyal Alaluf <eyala@mainsoft.com>
210 * SerializationMap.cs: Use FormatterServices.GetUninitializedObject instead
211 of Activator.CreateInstance.
213 2008-04-10 Eyal Alaluf <eyala@mainsoft.com>
215 * DataContractSerializer.cs: Write and register the current type namespace
217 * XmlObjectSerializer.cs: ReadObject verifies by default.
218 * XmlFormatterSerializer.cs: Write and register XML namespaces.
219 * XmlFormatterDeserializer.cs: Refactored so Deserialize instance method can
220 be used from SerializationMap deserialization logic recursively.
221 * SerializationMap.cs: Reimplemented main deserialization logic. Now it
222 handles better missing entries, consumes the XmlReader until the end
223 element and handles XML namespaces correctly.
224 Enabled checks for required fields.
226 2008-02-27 Eyal Alaluf <eyala@mainsoft.com>
228 * SerializationMap.cs: Fix namespace logic at least in simple case where
229 there are several unknown elements before the current element.
230 * ContractNamespaceAttribute.cs: The ClrNamespace is not set by the ctor.
231 * XmlObjectSerializer.cs: Dispose the XmlWriter created in WriteObject
233 * DataMemberAttribute.cs: Added the EmitDefaultValue property.
234 * XsdDataContractImporter.cs: Handle null arguments in Import methods.
235 * KnownTypeCollection.cs: Use XmlConvert.ToDateTime with roundtrip style.
237 2007-12-05 Atsushi Enomoto <atsushi@ximian.com>
239 * XmlObjectSerializer.cs : some methods became virtual (in Redbits).
240 * DataContractSerializer.cs : added some overriden methods in Redbits.
241 knownTypes can be null in .ctor().
243 2007-08-17 Atsushi Enomoto <atsushi@ximian.com>
245 * SerializationMap.cs : for void it cannot be instantiated. Return
248 2007-08-17 Atsushi Enomoto <atsushi@ximian.com>
250 * XmlFormatterDeserializer.cs DataContractSerializer.cs :
251 uhoh, the semantic of bool parameter in ReadObject() has
252 changed in the RTM. Implemented it as verifyObjectName.
254 2007-03-27 Atsushi Enomoto <atsushi@ximian.com>
256 * SerializationMap.cs
257 XmlFormatterSerializer.cs
258 DataContractSerializer.cs :
259 now it needs some mess to handle serialization namespaces.
260 Collection items are serialized in its own xml namespace. Others,
261 (including the collection member itself) is serialized in its
262 parent xml namespace. Collection items are serialized with its
264 * XsdDataContractImporter.cs : use constant.
266 2007-03-26 Atsushi Enomoto <atsushi@ximian.com>
268 * KnownTypeCollection.cs : added support for Guid serialization.
270 2006-10-20 Atsushi Enomoto <atsushi@ximian.com>
272 * KnownTypeCollection.cs : (RemoveItem) don't remove items while
275 2006-09-06 Ankit Jain <jankit@novell.com>
277 * SerializationMap.cs (SerializationMap.GetSequence): Set minOccurs = 0
279 2006-09-05 Ankit Jain <jankit@novell.com>
281 * XsdDataContractExporter.cs (XsdDataContractExporter.MSTypesSchema):
282 Load resource mstypes.schema
283 (XsdDataContractExporter.Schemas): Add MSTypesSchema by default.
285 2006-09-05 Ankit Jain <jankit@novell.com>
287 * SerializationMap.cs (SerializationMap.AddImport): New.
288 (SerializationMap.GetSequence): Use AddImport.
290 2006-09-04 Ankit Jain <jankit@novell.com>
292 * SerializationMap.cs (SerializationMap.GetSchemaSet): Remove.
293 (SerializationMap.GetSchemaType):
294 (SerializationMap.GetSequence):
295 (SerializationMap.GetSchema): Change XmlSchemas param to XmlSchemaSet.
296 Call XmlSchemaSet.Reprocess whenever an existing schema is modified.
297 * XsdDataContractExporter.cs (XsdDataContractExporter.Export): Update to
298 changes in SerializationMap.
299 (XsdDataContractExporter.CanExport): Implement.
300 (XsdDataContractExporter.GetSchemaType): Implement.
301 (XsdDataContractExporter.GetSchemaTypeName): Implement.
302 (XsdDataContractExporter.KnownTypes): New.
303 (XsdDataContractExporter.GeneratedTypes): New.
305 2006-09-01 Ankit Jain <jankit@novell.com>
307 * SerializationMap.cs (SerializationMap.GetSchemaSet): New.
308 (SerializationMap.IsPrimitive): New.
309 (SerializationMap.GetSchemaType): New.
310 (SerializationMap.GetSequence): New.
311 (SerializationMap.GetMembers): New.
312 (SerializationMap.GetSchemaElement): New.
313 (SerializationMap.GetSchema): New.
314 (SerializationMap.GetQualifiedName): New.
315 New methods for exporting schema for the type.
317 (SharedContractMap.ctor): Move code for building Members list to ..
318 (SharedContractMap.GetMembers): .. here.
320 (CollectionTypeMap.Serialize): Mark 'override'.
321 (CollectionTypeMap.GetMembers): 'override' and throw
322 NotImplementedException.
323 (CollectionTypeMap.GetSchemaType): Implement.
325 (SharedTypeMap..ctor): Move code to ..
326 (SharedTypeMap.GetMembers): .. here.
327 (EnumMap.GetSchemaType): Implement.
329 * XsdDataContractExporter.cs (XsdDataContractExporter.Export):
331 * KnownTypeCollection.cs (KnownTypeCollection.GetCollectionQName): Use
332 GetQName instead of GetXmlName. Set Namespace for collections of
333 primitive types to MSArraysNamespace
335 2006-08-31 Ankit Jain <jankit@novell.com>
337 * SerializationMap.cs (EnumMap): New. For de/serializing enums.
338 (EnumMemberInfo): New.
339 (SerializationMap.DeserializeContent): Made protected virtual from private.
340 * DataContractSerializer.cs (WriteStartObject):
341 Ensure that "i:type" is not emitted for enums.
342 * KnownTypeCollection.cs (GetPrimitiveTypeName): Don't treat enum as a
344 (GetQName): Likewise. Use GetEnumQName for enums.
346 (IsPrimitiveNotEnum): New.
347 (TryRegister): Add support for enums.
350 2006-08-14 Atsushi Enomoto <atsushi@ximian.com>
352 * XmlFormatterSerializer.cs : (contd from my previous change)
353 ... and don't complain at WriteObject(). It is somehow required
354 in S.SM.D.WSTrustContract (soon to be committed).
356 2006-07-27 Ankit Jain <jankit@novell.com>
358 * XsdDataContractImporter.cs (Compile): Remove, thanks to eno
359 XmlSchemaSet.Compile () works now.
360 Update to directly use XmlSchemaSet.Compile ()
362 2006-07-27 Ankit Jain <jankit@novell.com>
364 * XsdDataContractImporter.cs (ImportInternal): New.
365 Update various overloads of Import to use this.
366 (ImportFromTypeMapping): New. Emits code for a DataContract from a
367 XmlTypeMapping. Code is duplicate of
368 ServiceContractGenerator.ExportDataContract .
369 (GetNamespace): New. Duplicate like above.
370 (Compile): New. Temporary hack, will XmlSchemaSet.Compile is not
373 2006-07-18 Atsushi Enomoto <atsushi@ximian.com>
375 * XmlFormatterSerializer.cs, KnownTypeCollection.cs :
376 don't raise an error at DataContractSerializer..ctor(). Raise
377 InvalidDataContractException on WriteObject().
379 2006-07-12 Ankit Jain <jankit@novell.com>
381 * SerializationMap.cs (XmlSerializableMap): New. Map for classes which
382 implement IXmlSerializable interface.
383 * KnownTypeCollection.cs (KnownTypeCollection.GetQName): Add support for
384 types which implement IXmlSerializable interface. Change the order in
385 which DataContractAttribute/IXmlSerializable/SerializableAttribute get
387 (KnownTypeCollection.TryRegister): Change the order like above.
388 (KnownTypeCollection.RegisterIXmlSerializable): New.
390 2006-07-04 Atsushi Enomoto <atsushi@ximian.com>
392 * XsdDataContractExporter.cs, XmlObjectSerializer.cs,
393 InvalidDataContractException.cs : some June CTP updates.
395 2006-07-04 Atsushi Enomoto <atsushi@ximian.com>
397 * IDataContractSurrogate.cs, ExportOptions.cs,
398 DataContractSerializer.cs, KnownTypeCollection.cs :
401 2006-05-09 Atsushi Enomoto <atsushi@ximian.com>
403 * DataContractSerializer.cs : null knownTypes argument is allowed.
404 * KnownTypeCollection.cs : Type.Namespace could be null.
406 2006-05-09 Atsushi Enomoto <atsushi@ximian.com>
408 * KnownTypeCollection.cs : for nested classes, treat localName of
409 the QName as "Parent.Child", not "Child".
410 Don't encode name here (to pass ".").
412 2006-05-09 Atsushi Enomoto <atsushi@ximian.com>
414 * DataContractSerializer.cs :
415 Added maxObjectsInGraph range check.
416 interface type has BaseType as null, so end base type check when
417 it is null (I don't think this check is required btw).
419 2006-04-05 Atsushi Enomoto <atsushi@ximian.com>
421 * DataContractSerializer.cs : xmlns:xsi is not written when the
422 target type is string.
424 2006-03-22 Ankit Jain <jankit@novell.com>
426 * SerializationMap.cs (CheckDataContractEqual): Remove.
427 (Deserialize): Allows expected type to be a derived one from actual
429 (DeserializeInternal): Handle DataMember of type 'object'.
430 * XmlFormatterSerializer.cs (SerializeNonPrimitive): Serialize types not
432 * DataContractSerializer.cs (.ctor): Use KnownTypeCollection.GetQName
433 instead of doing it manually.
434 (PopulateTypes): Change return type from KnownTypeCollection to void.
435 Scan the base types to ensure that all have DataContract or Serializable
437 Add all (including inherited) KnownTypeAttribute values to the
440 2006-03-18 Ankit Jain <jankit@novell.com>
442 * SerializationMap.cs (SerializationMap.GetEmptyInstance): Rename to ..
443 (SerializationMap.GetInstance): .. this. Gets the instance or null if nil=true.
444 (SerializationMap.DeserializeInternal): New. Renamed from ..
445 (SerializationMap.Deserialize): .. this. Check DataContract equivalence, and use new
446 DeserializeInternal for rest of the work.
447 (DeserializeContent): Cleanup and handle various "null" cases.
448 * XmlFormatterSerializer.cs (Write_i_type): New. Write i:type=".."
449 (SerializeNonPrimitive): Update to use Write_i_type.
450 * DataContractSerializer.cs (WriteStartObject): Add rootType to known_types.
452 2006-03-16 Ankit Jain <jankit@novell.com>
454 * SerializationMap.cs (SerializationMap.Deserialize): Use NameTable.Get
455 before reader.LookupNamespace.
456 (DataMemberInfo.Compare): Use String.CompareOrdinal instead of
459 2006-03-16 Ankit Jain <jankit@novell.com>
461 * SerializationMap.cs (SerializationMap.GetEmptyInstance): New.
462 (SerializationMap.Deserialize): Refactor, handle primitive types and nils.
463 (SerializationMap.DeserializeContent): Handle nils and nested DataContracts.
464 (SharedContractMap.ctor): Include inherited properties and fields, in
467 2006-03-15 Ankit Jain <jankit@novell.com>
469 * KnownTypeCollection.cs (IsPrimitiveType): New.
470 * SerializationMap.cs (Deserialize): Handle primitive types.
472 2006-03-15 Ankit Jain <jankit@novell.com>
474 * DataContractSerializer.cs (WriteObjectContent): Handle null.
475 (WriteStartObject): Rewritten.
476 * KnownTypeCollection.cs (GetQName): New. Return QName for a given type.
478 (GetSerializableQName):
479 (GetCollectionQName): New.
481 (RegisterSerializable):
482 (RegisterCollection): Update to use new Get* methods.
483 * SerializationMap.cs (CheckDataContractEqual): New.
484 (Deserialize): Split into this and ..
485 (DeserializeContent): .. this.
486 * XmlDictionaryWriter.cs (CreateTextWriter): Use UTF8Encoding.
488 2006-03-09 Atsushi Enomoto <atsushi@ximian.com>
490 * DataContractSerializer.cs : xmlns output should be done at
493 2006-03-08 Ankit Jain <jankit@novell.com>
495 * DataContractSerializer.cs (.ctor): Use name & namespace specified (if any)
496 with the DataContractAttribute for non-primitive types.
497 (DataContractSerializer.WriteStartObject): DataContractAttribute.Name
500 2006-03-03 Atsushi Enomoto <atsushi@ximian.com>
502 * DataContractSerializer.cs : Handle primitive type name rather than
503 raw type name in constructors that don't receive root QName.
504 In case the actual graph is not of root type, write xsi:type.
506 2006-03-02 Atsushi Enomoto <atsushi@ximian.com>
508 * KnownTypeCollection.cs : default namespace contains common MS base
510 * XmlObjectSerializer.cs : added internal common utility field.
511 * DataContractSerializer.cs : Fixed constructors to fill fields and
513 * NetDataContractSerializer.cs : just leave it unimplemented until
514 we find how it works. It looks different from what
515 DataContractSerializer does.
517 2006-01-17 Atsushi Enomoto <atsushi@ximian.com>
519 * XmlFormatter.cs : extra namespaces are not written in Dec.CTP.
521 2005-11-28 Atsushi Enomoto <atsushi@ximian.com>
523 * KnownTypeCollection.cs : override.
525 2005-11-02 Atsushi Enomoto <atsushi@ximian.com>
527 * SerializationMap.cs, XmlFormatterSerializer.cs, XmlFormatter.cs
528 XmlFormatterDeserializer.cs, KnownTypeCollection.cs :
529 several changes. Partial support for collection serialization.
530 SerializationMap now contains its own Deserialize()/Serialize()
533 2005-10-20 Atsushi Enomoto <atsushi@ximian.com>
535 * XmlFormatterDeserializer.cs : new file.
536 * SerializationMap.cs, XmlFormatter.cs, KnownTypeCollection.cs :
537 several changes for pretty primitive Deserialize() implementation.
539 2005-10-07 Atsushi Enomoto <atsushi@ximian.com>
541 Added hacky serialization feature. Actually it should be rewritten to
542 be based on IDataContractSurrogate.
543 * SerializationMap.cs, XmlFormatterSerializer.cs :
544 new files for Serialize() implementation.
545 * KnownTypeCollection.cs : use serialization maps to check contracts.
546 * XmlFormatter.cs : implemented hacky Serialize().
547 * DataMemberAttribute.cs : default Order is -1.
548 * DataContractAttribute.cs : added tiny comment.
550 2005-10-03 Atsushi Enomoto <atsushi@ximian.com>
552 * XmlFormatter.cs : Added implementation switch between
553 BinaryFormatter and internal DataContractFormatter.
554 * XmlSerializableServices.cs : WriteNodes() impl.
556 2005-10-03 Atsushi Enomoto <atsushi@ximian.com>
558 * XmlSerializableServices.cs : ReadNodes() impl.
560 2005-09-28 Atsushi Enomoto <atsushi@ximian.com>
562 * KnownTypeAttribute.cs : fixed attribute usage.
564 2005-09-22 Atsushi Enomoto <atsushi@ximian.com>
566 * IDataContractSurrogate.cs, ContractNamespaceAttribute.cs,
567 XsdDataContractExporter.cs, KnownTypeAttribute.cs,
568 SerializationMode.cs, XmlFormatter.cs, DataMemberAttribute.cs,
569 ImportOptions.cs, UnknownSerializationData.cs,
570 SerializationFactoryMethodAttribute.cs, XmlSerializableServices.cs,
571 DataContractAttribute.cs, ExportOptions.cs,
572 InvalidDataContractException.cs, IUnknownSerializationData.cs,
573 CollectionDataContractAttribute.cs, XsdDataContractImporter.cs,
574 KnownTypeCollection.cs :
575 #if NET_2_0. coding style was updated.
577 2005-09-22 Atsushi Enomoto <atsushi@ximian.com>
579 * CollectionDataContractAttribute.cs
580 ContractNamespaceAttribute.cs
581 DataContractAttribute.cs
582 DataMemberAttribute.cs
584 IDataContractSurrogate.cs
585 InvalidDataContractException.cs
586 IUnknownSerializationData.cs
588 KnownTypeAttribute.cs
589 KnownTypeCollection.cs
590 SerializationFactoryMethodAttribute.cs
592 UnknownSerializationData.cs
594 XmlSerializableServices.cs
595 XsdDataContractExporter.cs
596 XsdDataContractImporter.cs : new files.