1 2009-05-18 Atsushi Enomoto <atsushi@ximian.com>
3 * XmlFormatterDeserializer.cs : remove type lookup optimization
4 (since .NET 3.5 introduced system types with DC) and fix
5 serialization of system types (ISerializable types were not
6 resolved in previous code).
8 2009-05-18 Atsushi Enomoto <atsushi@ximian.com>
10 * SerializationMap.cs : it was only about 2.1. Fix build.
12 2009-05-18 Atsushi Enomoto <atsushi@ximian.com>
14 * SerializationMap.cs : It is not possible to get schema without
15 IXmlSerializable instance.
17 2009-05-15 Atsushi Enomoto <atsushi@ximian.com>
19 * DataContractSerializer.cs : write dictionary string directly for
20 root name/ns (root only, so far).
22 2009-05-14 Atsushi Enomoto <atsushi@ximian.com>
24 * SerializationMap.cs: interface collection failed to serialize as
25 it was calling inappropriate GetInterfaceMap().
27 2009-04-01 Atsushi Enomoto <atsushi@ximian.com>
29 * XmlFormatterDeserializer.cs : more hack to handle empty
32 2009-03-24 Atsushi Enomoto <atsushi@ximian.com>
34 * SerializationMap.cs, XmlFormatterDeserializer.cs:
35 empty collection deserialization resulted in extra
36 consumption of the next xml node.
38 2009-03-19 Atsushi Enomoto <atsushi@ximian.com>
40 * KnownTypeCollection.cs, XmlFormatterDeserializer.cs :
41 to infer type from xml qname, consider DataContractAttribute
44 2009-03-12 Atsushi Enomoto <atsushi@ximian.com>
46 * SerializationMap.cs : make generic type parsing sloppy.
47 because we don't know some cryptic hash algorithm:
48 http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2007/05/10/wcf-serialization-and-generics.aspx
50 2009-03-12 Atsushi Enomoto <atsushi@ximian.com>
52 * SerializationMap.cs, KnownTypeCollection.cs :
53 support CollectionDataContract-based dictionary too.
55 2009-03-12 Atsushi Enomoto <atsushi@ximian.com>
57 * SerializationMap.cs, KnownTypeCollection.cs :
58 added support for dictionary serialization (not for
59 CollectionDataContract-attributed dictionary yet).
61 2009-03-12 Atsushi Enomoto <atsushi@ximian.com>
63 * SerializationMap.cs : cosmetic !NET_2_1 fix (no effect).
64 * KnownTypeCollection.cs : use ICollection<> and IList instead of
65 IEnumerable. This causes confusion for dictionary.
67 2009-03-11 Atsushi Enomoto <atsushi@ximian.com>
69 * XmlFormatterSerializer.cs, XmlObjectSerializer.cs,
70 XmlFormatterDeserializer.cs, KnownTypeCollection.cs :
71 add more xsi:type to cover collection items.
73 2009-03-11 Atsushi Enomoto <atsushi@ximian.com>
75 * KnownTypeCollection.cs : fix generic argument names in xml.
76 They should use xmlized names instead of raw type name.
77 * XmlFormatterDeserializer.cs : remove extra Console.WriteLine.
79 2009-03-11 Atsushi Enomoto <atsushi@ximian.com>
81 * SerializationMap.cs : eliminate whitespace misuses.
83 2009-03-11 Atsushi Enomoto <atsushi@ximian.com>
85 * SerializationMap.cs : actually it could just be ICollection<T>.
87 2009-03-11 Atsushi Enomoto <atsushi@ximian.com>
89 * SerializationMap.cs : implemented generic IList deserialization.
91 2009-03-10 Atsushi Enomoto <atsushi@ximian.com>
93 * KnownTypeCollection.cs : fix for generic serialization.
95 2009-02-27 Atsushi Enomoto <atsushi@ximian.com>
97 * SerializationMap.cs : look for unordered members first, in
98 different iteration. Got SL OpenStreetMap working.
100 2009-02-13 Atsushi Enomoto <atsushi@ximian.com>
102 * SerializationMap.cs : remove use of non-2.1 CreateInstance().
103 * XmlFormatterDeserializer.cs : allow empty element.
105 2009-02-13 Atsushi Enomoto <atsushi@ximian.com>
107 * SerializationMap.cs, DataContractSerializer.cs,
108 KnownTypeCollection.cs : now .NET 3.5/SP1 supports non-contract
111 2009-02-13 Atsushi Enomoto <atsushi@ximian.com>
113 * SerializationMap.cs, KnownTypeCollection.cs : couple of refactoring
114 to simplify code base and handle CollectionDataContract namespace.
116 2009-02-13 Atsushi Enomoto <atsushi@ximian.com>
118 * SerializationMap.cs : oops, remove debug lines.
120 2009-02-13 Atsushi Enomoto <atsushi@ximian.com>
122 * DataContractSerializer.cs : remove extra writexmlns.
123 * SerializationMap.cs : allow DataMember of collection contract type
125 * KnownTypeCollection.cs : it was not iterating interfaces to find
126 IEnumerable<T> correctly.
128 2009-02-03 Atsushi Enomoto <atsushi@ximian.com>
130 * SerializationMap.cs : a bit more detailed error message.
132 2009-01-23 Atsushi Enomoto <atsushi@ximian.com>
134 * KnownTypeCollection.cs : similar fix to the previous one,
137 2009-01-22 Alan McGovern <amcgovern@novell.com>
139 * KnownTypeCollection.cs : The byte overload doesn't exist in
140 Silverlight, so cast the byte to an int instead.
142 2008-11-23 Atsushi Enomoto <atsushi@ximian.com>
144 * DataContractAttribute.cs : remove MonoTODO.
146 2008-11-23 Atsushi Enomoto <atsushi@ximian.com>
148 * SerializationMap.cs, XmlFormatterSerializer.cs,
149 XmlFormatterDeserializer.cs, DataContractAttribute.cs,
150 CollectionDataContractAttribute.cs, KnownTypeCollection.cs :
151 support IsReference (new in 3.5 SP1).
153 2008-11-23 Atsushi Enomoto <atsushi@ximian.com>
155 * DataContractSerializer.cs : remove extra type validity check.
157 2008-11-23 Atsushi Enomoto <atsushi@ximian.com>
159 * XmlFormatterSerializer.cs : one object could not be serialized
160 twice in non-circular situation.
162 2008-09-09 Atsushi Enomoto <atsushi@ximian.com>
163 Jb Evain <jbevain@novell.com>
165 * IDataContractSurrogater.cs, SerializationMap.cs:
166 add support to build on the net_2_1 profile.
168 2008-06-19 Noam Lampert <noaml@mainsoft.com>
170 * KnownTypeCollection.cs: Support anyUri type
172 2008-06-05 Noam Lampert <noaml@mainsoft.com>
174 * KnownTypeCollection.cs: Support XmlRoot attribute
176 2008-06-01 Noam Lampert <noaml@mainsoft.com>
178 * KnownTypeCollection.cs: Implement byte[] serialization.
180 2008-05-19 Noam Lampert <noaml@mainsoft.com>
182 * KnownTypeCollection.cs: Implement char serialization.
184 2008-05-19 Noam Lampert <noaml@mainsoft.com>
186 * KnownTypeCollection.cs, XmlFormatterDeserializer.cs: Imporve support for
187 Nullable types in contracts.
189 2008-04-29 Eyal Alaluf <eyala@mainsoft.com>
191 * KnownTypeCollection.cs: Fixed a typo in long conversion.
193 2008-04-17 Eyal Alaluf <eyala@mainsoft.com>
195 * SerializationMap.cs: Implement partially collections deserialization.
196 Supports arrays and types derived from IList. Needs support for calling
197 'Add' method and for dictionaries.
198 * SerializationMap.cs XmlFormatterSerializer.cs DataContractSerializer.cs:
199 Serialize namespaces for base members according to base class namespace.
201 2008-04-14 Eyal Alaluf <eyala@mainsoft.com>
203 * SerializationMap.cs: Use FormatterServices.GetUninitializedObject instead
204 of Activator.CreateInstance.
206 2008-04-10 Eyal Alaluf <eyala@mainsoft.com>
208 * DataContractSerializer.cs: Write and register the current type namespace
210 * XmlObjectSerializer.cs: ReadObject verifies by default.
211 * XmlFormatterSerializer.cs: Write and register XML namespaces.
212 * XmlFormatterDeserializer.cs: Refactored so Deserialize instance method can
213 be used from SerializationMap deserialization logic recursively.
214 * SerializationMap.cs: Reimplemented main deserialization logic. Now it
215 handles better missing entries, consumes the XmlReader until the end
216 element and handles XML namespaces correctly.
217 Enabled checks for required fields.
219 2008-02-27 Eyal Alaluf <eyala@mainsoft.com>
221 * SerializationMap.cs: Fix namespace logic at least in simple case where
222 there are several unknown elements before the current element.
223 * ContractNamespaceAttribute.cs: The ClrNamespace is not set by the ctor.
224 * XmlObjectSerializer.cs: Dispose the XmlWriter created in WriteObject
226 * DataMemberAttribute.cs: Added the EmitDefaultValue property.
227 * XsdDataContractImporter.cs: Handle null arguments in Import methods.
228 * KnownTypeCollection.cs: Use XmlConvert.ToDateTime with roundtrip style.
230 2007-12-05 Atsushi Enomoto <atsushi@ximian.com>
232 * XmlObjectSerializer.cs : some methods became virtual (in Redbits).
233 * DataContractSerializer.cs : added some overriden methods in Redbits.
234 knownTypes can be null in .ctor().
236 2007-08-17 Atsushi Enomoto <atsushi@ximian.com>
238 * SerializationMap.cs : for void it cannot be instantiated. Return
241 2007-08-17 Atsushi Enomoto <atsushi@ximian.com>
243 * XmlFormatterDeserializer.cs DataContractSerializer.cs :
244 uhoh, the semantic of bool parameter in ReadObject() has
245 changed in the RTM. Implemented it as verifyObjectName.
247 2007-03-27 Atsushi Enomoto <atsushi@ximian.com>
249 * SerializationMap.cs
250 XmlFormatterSerializer.cs
251 DataContractSerializer.cs :
252 now it needs some mess to handle serialization namespaces.
253 Collection items are serialized in its own xml namespace. Others,
254 (including the collection member itself) is serialized in its
255 parent xml namespace. Collection items are serialized with its
257 * XsdDataContractImporter.cs : use constant.
259 2007-03-26 Atsushi Enomoto <atsushi@ximian.com>
261 * KnownTypeCollection.cs : added support for Guid serialization.
263 2006-10-20 Atsushi Enomoto <atsushi@ximian.com>
265 * KnownTypeCollection.cs : (RemoveItem) don't remove items while
268 2006-09-06 Ankit Jain <jankit@novell.com>
270 * SerializationMap.cs (SerializationMap.GetSequence): Set minOccurs = 0
272 2006-09-05 Ankit Jain <jankit@novell.com>
274 * XsdDataContractExporter.cs (XsdDataContractExporter.MSTypesSchema):
275 Load resource mstypes.schema
276 (XsdDataContractExporter.Schemas): Add MSTypesSchema by default.
278 2006-09-05 Ankit Jain <jankit@novell.com>
280 * SerializationMap.cs (SerializationMap.AddImport): New.
281 (SerializationMap.GetSequence): Use AddImport.
283 2006-09-04 Ankit Jain <jankit@novell.com>
285 * SerializationMap.cs (SerializationMap.GetSchemaSet): Remove.
286 (SerializationMap.GetSchemaType):
287 (SerializationMap.GetSequence):
288 (SerializationMap.GetSchema): Change XmlSchemas param to XmlSchemaSet.
289 Call XmlSchemaSet.Reprocess whenever an existing schema is modified.
290 * XsdDataContractExporter.cs (XsdDataContractExporter.Export): Update to
291 changes in SerializationMap.
292 (XsdDataContractExporter.CanExport): Implement.
293 (XsdDataContractExporter.GetSchemaType): Implement.
294 (XsdDataContractExporter.GetSchemaTypeName): Implement.
295 (XsdDataContractExporter.KnownTypes): New.
296 (XsdDataContractExporter.GeneratedTypes): New.
298 2006-09-01 Ankit Jain <jankit@novell.com>
300 * SerializationMap.cs (SerializationMap.GetSchemaSet): New.
301 (SerializationMap.IsPrimitive): New.
302 (SerializationMap.GetSchemaType): New.
303 (SerializationMap.GetSequence): New.
304 (SerializationMap.GetMembers): New.
305 (SerializationMap.GetSchemaElement): New.
306 (SerializationMap.GetSchema): New.
307 (SerializationMap.GetQualifiedName): New.
308 New methods for exporting schema for the type.
310 (SharedContractMap.ctor): Move code for building Members list to ..
311 (SharedContractMap.GetMembers): .. here.
313 (CollectionTypeMap.Serialize): Mark 'override'.
314 (CollectionTypeMap.GetMembers): 'override' and throw
315 NotImplementedException.
316 (CollectionTypeMap.GetSchemaType): Implement.
318 (SharedTypeMap..ctor): Move code to ..
319 (SharedTypeMap.GetMembers): .. here.
320 (EnumMap.GetSchemaType): Implement.
322 * XsdDataContractExporter.cs (XsdDataContractExporter.Export):
324 * KnownTypeCollection.cs (KnownTypeCollection.GetCollectionQName): Use
325 GetQName instead of GetXmlName. Set Namespace for collections of
326 primitive types to MSArraysNamespace
328 2006-08-31 Ankit Jain <jankit@novell.com>
330 * SerializationMap.cs (EnumMap): New. For de/serializing enums.
331 (EnumMemberInfo): New.
332 (SerializationMap.DeserializeContent): Made protected virtual from private.
333 * DataContractSerializer.cs (WriteStartObject):
334 Ensure that "i:type" is not emitted for enums.
335 * KnownTypeCollection.cs (GetPrimitiveTypeName): Don't treat enum as a
337 (GetQName): Likewise. Use GetEnumQName for enums.
339 (IsPrimitiveNotEnum): New.
340 (TryRegister): Add support for enums.
343 2006-08-14 Atsushi Enomoto <atsushi@ximian.com>
345 * XmlFormatterSerializer.cs : (contd from my previous change)
346 ... and don't complain at WriteObject(). It is somehow required
347 in S.SM.D.WSTrustContract (soon to be committed).
349 2006-07-27 Ankit Jain <jankit@novell.com>
351 * XsdDataContractImporter.cs (Compile): Remove, thanks to eno
352 XmlSchemaSet.Compile () works now.
353 Update to directly use XmlSchemaSet.Compile ()
355 2006-07-27 Ankit Jain <jankit@novell.com>
357 * XsdDataContractImporter.cs (ImportInternal): New.
358 Update various overloads of Import to use this.
359 (ImportFromTypeMapping): New. Emits code for a DataContract from a
360 XmlTypeMapping. Code is duplicate of
361 ServiceContractGenerator.ExportDataContract .
362 (GetNamespace): New. Duplicate like above.
363 (Compile): New. Temporary hack, will XmlSchemaSet.Compile is not
366 2006-07-18 Atsushi Enomoto <atsushi@ximian.com>
368 * XmlFormatterSerializer.cs, KnownTypeCollection.cs :
369 don't raise an error at DataContractSerializer..ctor(). Raise
370 InvalidDataContractException on WriteObject().
372 2006-07-12 Ankit Jain <jankit@novell.com>
374 * SerializationMap.cs (XmlSerializableMap): New. Map for classes which
375 implement IXmlSerializable interface.
376 * KnownTypeCollection.cs (KnownTypeCollection.GetQName): Add support for
377 types which implement IXmlSerializable interface. Change the order in
378 which DataContractAttribute/IXmlSerializable/SerializableAttribute get
380 (KnownTypeCollection.TryRegister): Change the order like above.
381 (KnownTypeCollection.RegisterIXmlSerializable): New.
383 2006-07-04 Atsushi Enomoto <atsushi@ximian.com>
385 * XsdDataContractExporter.cs, XmlObjectSerializer.cs,
386 InvalidDataContractException.cs : some June CTP updates.
388 2006-07-04 Atsushi Enomoto <atsushi@ximian.com>
390 * IDataContractSurrogate.cs, ExportOptions.cs,
391 DataContractSerializer.cs, KnownTypeCollection.cs :
394 2006-05-09 Atsushi Enomoto <atsushi@ximian.com>
396 * DataContractSerializer.cs : null knownTypes argument is allowed.
397 * KnownTypeCollection.cs : Type.Namespace could be null.
399 2006-05-09 Atsushi Enomoto <atsushi@ximian.com>
401 * KnownTypeCollection.cs : for nested classes, treat localName of
402 the QName as "Parent.Child", not "Child".
403 Don't encode name here (to pass ".").
405 2006-05-09 Atsushi Enomoto <atsushi@ximian.com>
407 * DataContractSerializer.cs :
408 Added maxObjectsInGraph range check.
409 interface type has BaseType as null, so end base type check when
410 it is null (I don't think this check is required btw).
412 2006-04-05 Atsushi Enomoto <atsushi@ximian.com>
414 * DataContractSerializer.cs : xmlns:xsi is not written when the
415 target type is string.
417 2006-03-22 Ankit Jain <jankit@novell.com>
419 * SerializationMap.cs (CheckDataContractEqual): Remove.
420 (Deserialize): Allows expected type to be a derived one from actual
422 (DeserializeInternal): Handle DataMember of type 'object'.
423 * XmlFormatterSerializer.cs (SerializeNonPrimitive): Serialize types not
425 * DataContractSerializer.cs (.ctor): Use KnownTypeCollection.GetQName
426 instead of doing it manually.
427 (PopulateTypes): Change return type from KnownTypeCollection to void.
428 Scan the base types to ensure that all have DataContract or Serializable
430 Add all (including inherited) KnownTypeAttribute values to the
433 2006-03-18 Ankit Jain <jankit@novell.com>
435 * SerializationMap.cs (SerializationMap.GetEmptyInstance): Rename to ..
436 (SerializationMap.GetInstance): .. this. Gets the instance or null if nil=true.
437 (SerializationMap.DeserializeInternal): New. Renamed from ..
438 (SerializationMap.Deserialize): .. this. Check DataContract equivalence, and use new
439 DeserializeInternal for rest of the work.
440 (DeserializeContent): Cleanup and handle various "null" cases.
441 * XmlFormatterSerializer.cs (Write_i_type): New. Write i:type=".."
442 (SerializeNonPrimitive): Update to use Write_i_type.
443 * DataContractSerializer.cs (WriteStartObject): Add rootType to known_types.
445 2006-03-16 Ankit Jain <jankit@novell.com>
447 * SerializationMap.cs (SerializationMap.Deserialize): Use NameTable.Get
448 before reader.LookupNamespace.
449 (DataMemberInfo.Compare): Use String.CompareOrdinal instead of
452 2006-03-16 Ankit Jain <jankit@novell.com>
454 * SerializationMap.cs (SerializationMap.GetEmptyInstance): New.
455 (SerializationMap.Deserialize): Refactor, handle primitive types and nils.
456 (SerializationMap.DeserializeContent): Handle nils and nested DataContracts.
457 (SharedContractMap.ctor): Include inherited properties and fields, in
460 2006-03-15 Ankit Jain <jankit@novell.com>
462 * KnownTypeCollection.cs (IsPrimitiveType): New.
463 * SerializationMap.cs (Deserialize): Handle primitive types.
465 2006-03-15 Ankit Jain <jankit@novell.com>
467 * DataContractSerializer.cs (WriteObjectContent): Handle null.
468 (WriteStartObject): Rewritten.
469 * KnownTypeCollection.cs (GetQName): New. Return QName for a given type.
471 (GetSerializableQName):
472 (GetCollectionQName): New.
474 (RegisterSerializable):
475 (RegisterCollection): Update to use new Get* methods.
476 * SerializationMap.cs (CheckDataContractEqual): New.
477 (Deserialize): Split into this and ..
478 (DeserializeContent): .. this.
479 * XmlDictionaryWriter.cs (CreateTextWriter): Use UTF8Encoding.
481 2006-03-09 Atsushi Enomoto <atsushi@ximian.com>
483 * DataContractSerializer.cs : xmlns output should be done at
486 2006-03-08 Ankit Jain <jankit@novell.com>
488 * DataContractSerializer.cs (.ctor): Use name & namespace specified (if any)
489 with the DataContractAttribute for non-primitive types.
490 (DataContractSerializer.WriteStartObject): DataContractAttribute.Name
493 2006-03-03 Atsushi Enomoto <atsushi@ximian.com>
495 * DataContractSerializer.cs : Handle primitive type name rather than
496 raw type name in constructors that don't receive root QName.
497 In case the actual graph is not of root type, write xsi:type.
499 2006-03-02 Atsushi Enomoto <atsushi@ximian.com>
501 * KnownTypeCollection.cs : default namespace contains common MS base
503 * XmlObjectSerializer.cs : added internal common utility field.
504 * DataContractSerializer.cs : Fixed constructors to fill fields and
506 * NetDataContractSerializer.cs : just leave it unimplemented until
507 we find how it works. It looks different from what
508 DataContractSerializer does.
510 2006-01-17 Atsushi Enomoto <atsushi@ximian.com>
512 * XmlFormatter.cs : extra namespaces are not written in Dec.CTP.
514 2005-11-28 Atsushi Enomoto <atsushi@ximian.com>
516 * KnownTypeCollection.cs : override.
518 2005-11-02 Atsushi Enomoto <atsushi@ximian.com>
520 * SerializationMap.cs, XmlFormatterSerializer.cs, XmlFormatter.cs
521 XmlFormatterDeserializer.cs, KnownTypeCollection.cs :
522 several changes. Partial support for collection serialization.
523 SerializationMap now contains its own Deserialize()/Serialize()
526 2005-10-20 Atsushi Enomoto <atsushi@ximian.com>
528 * XmlFormatterDeserializer.cs : new file.
529 * SerializationMap.cs, XmlFormatter.cs, KnownTypeCollection.cs :
530 several changes for pretty primitive Deserialize() implementation.
532 2005-10-07 Atsushi Enomoto <atsushi@ximian.com>
534 Added hacky serialization feature. Actually it should be rewritten to
535 be based on IDataContractSurrogate.
536 * SerializationMap.cs, XmlFormatterSerializer.cs :
537 new files for Serialize() implementation.
538 * KnownTypeCollection.cs : use serialization maps to check contracts.
539 * XmlFormatter.cs : implemented hacky Serialize().
540 * DataMemberAttribute.cs : default Order is -1.
541 * DataContractAttribute.cs : added tiny comment.
543 2005-10-03 Atsushi Enomoto <atsushi@ximian.com>
545 * XmlFormatter.cs : Added implementation switch between
546 BinaryFormatter and internal DataContractFormatter.
547 * XmlSerializableServices.cs : WriteNodes() impl.
549 2005-10-03 Atsushi Enomoto <atsushi@ximian.com>
551 * XmlSerializableServices.cs : ReadNodes() impl.
553 2005-09-28 Atsushi Enomoto <atsushi@ximian.com>
555 * KnownTypeAttribute.cs : fixed attribute usage.
557 2005-09-22 Atsushi Enomoto <atsushi@ximian.com>
559 * IDataContractSurrogate.cs, ContractNamespaceAttribute.cs,
560 XsdDataContractExporter.cs, KnownTypeAttribute.cs,
561 SerializationMode.cs, XmlFormatter.cs, DataMemberAttribute.cs,
562 ImportOptions.cs, UnknownSerializationData.cs,
563 SerializationFactoryMethodAttribute.cs, XmlSerializableServices.cs,
564 DataContractAttribute.cs, ExportOptions.cs,
565 InvalidDataContractException.cs, IUnknownSerializationData.cs,
566 CollectionDataContractAttribute.cs, XsdDataContractImporter.cs,
567 KnownTypeCollection.cs :
568 #if NET_2_0. coding style was updated.
570 2005-09-22 Atsushi Enomoto <atsushi@ximian.com>
572 * CollectionDataContractAttribute.cs
573 ContractNamespaceAttribute.cs
574 DataContractAttribute.cs
575 DataMemberAttribute.cs
577 IDataContractSurrogate.cs
578 InvalidDataContractException.cs
579 IUnknownSerializationData.cs
581 KnownTypeAttribute.cs
582 KnownTypeCollection.cs
583 SerializationFactoryMethodAttribute.cs
585 UnknownSerializationData.cs
587 XmlSerializableServices.cs
588 XsdDataContractExporter.cs
589 XsdDataContractImporter.cs : new files.