1 2009-02-13 Atsushi Enomoto <atsushi@ximian.com>
3 * SerializationMap.cs : remove use of non-2.1 CreateInstance().
4 * XmlFormatterDeserializer.cs : allow empty element.
6 2009-02-13 Atsushi Enomoto <atsushi@ximian.com>
8 * SerializationMap.cs, DataContractSerializer.cs,
9 KnownTypeCollection.cs : now .NET 3.5/SP1 supports non-contract
12 2009-02-13 Atsushi Enomoto <atsushi@ximian.com>
14 * SerializationMap.cs, KnownTypeCollection.cs : couple of refactoring
15 to simplify code base and handle CollectionDataContract namespace.
17 2009-02-13 Atsushi Enomoto <atsushi@ximian.com>
19 * SerializationMap.cs : oops, remove debug lines.
21 2009-02-13 Atsushi Enomoto <atsushi@ximian.com>
23 * DataContractSerializer.cs : remove extra writexmlns.
24 * SerializationMap.cs : allow DataMember of collection contract type
26 * KnownTypeCollection.cs : it was not iterating interfaces to find
27 IEnumerable<T> correctly.
29 2009-02-03 Atsushi Enomoto <atsushi@ximian.com>
31 * SerializationMap.cs : a bit more detailed error message.
33 2009-01-23 Atsushi Enomoto <atsushi@ximian.com>
35 * KnownTypeCollection.cs : similar fix to the previous one,
38 2009-01-22 Alan McGovern <amcgovern@novell.com>
40 * KnownTypeCollection.cs : The byte overload doesn't exist in
41 Silverlight, so cast the byte to an int instead.
43 2008-11-23 Atsushi Enomoto <atsushi@ximian.com>
45 * DataContractAttribute.cs : remove MonoTODO.
47 2008-11-23 Atsushi Enomoto <atsushi@ximian.com>
49 * SerializationMap.cs, XmlFormatterSerializer.cs,
50 XmlFormatterDeserializer.cs, DataContractAttribute.cs,
51 CollectionDataContractAttribute.cs, KnownTypeCollection.cs :
52 support IsReference (new in 3.5 SP1).
54 2008-11-23 Atsushi Enomoto <atsushi@ximian.com>
56 * DataContractSerializer.cs : remove extra type validity check.
58 2008-11-23 Atsushi Enomoto <atsushi@ximian.com>
60 * XmlFormatterSerializer.cs : one object could not be serialized
61 twice in non-circular situation.
63 2008-09-09 Atsushi Enomoto <atsushi@ximian.com>
64 Jb Evain <jbevain@novell.com>
66 * IDataContractSurrogater.cs, SerializationMap.cs:
67 add support to build on the net_2_1 profile.
69 2008-06-19 Noam Lampert <noaml@mainsoft.com>
71 * KnownTypeCollection.cs: Support anyUri type
73 2008-06-05 Noam Lampert <noaml@mainsoft.com>
75 * KnownTypeCollection.cs: Support XmlRoot attribute
77 2008-06-01 Noam Lampert <noaml@mainsoft.com>
79 * KnownTypeCollection.cs: Implement byte[] serialization.
81 2008-05-19 Noam Lampert <noaml@mainsoft.com>
83 * KnownTypeCollection.cs: Implement char serialization.
85 2008-05-19 Noam Lampert <noaml@mainsoft.com>
87 * KnownTypeCollection.cs, XmlFormatterDeserializer.cs: Imporve support for
88 Nullable types in contracts.
90 2008-04-29 Eyal Alaluf <eyala@mainsoft.com>
92 * KnownTypeCollection.cs: Fixed a typo in long conversion.
94 2008-04-17 Eyal Alaluf <eyala@mainsoft.com>
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.
102 2008-04-14 Eyal Alaluf <eyala@mainsoft.com>
104 * SerializationMap.cs: Use FormatterServices.GetUninitializedObject instead
105 of Activator.CreateInstance.
107 2008-04-10 Eyal Alaluf <eyala@mainsoft.com>
109 * DataContractSerializer.cs: Write and register the current type namespace
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.
120 2008-02-27 Eyal Alaluf <eyala@mainsoft.com>
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
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.
131 2007-12-05 Atsushi Enomoto <atsushi@ximian.com>
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().
137 2007-08-17 Atsushi Enomoto <atsushi@ximian.com>
139 * SerializationMap.cs : for void it cannot be instantiated. Return
142 2007-08-17 Atsushi Enomoto <atsushi@ximian.com>
144 * XmlFormatterDeserializer.cs DataContractSerializer.cs :
145 uhoh, the semantic of bool parameter in ReadObject() has
146 changed in the RTM. Implemented it as verifyObjectName.
148 2007-03-27 Atsushi Enomoto <atsushi@ximian.com>
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
158 * XsdDataContractImporter.cs : use constant.
160 2007-03-26 Atsushi Enomoto <atsushi@ximian.com>
162 * KnownTypeCollection.cs : added support for Guid serialization.
164 2006-10-20 Atsushi Enomoto <atsushi@ximian.com>
166 * KnownTypeCollection.cs : (RemoveItem) don't remove items while
169 2006-09-06 Ankit Jain <jankit@novell.com>
171 * SerializationMap.cs (SerializationMap.GetSequence): Set minOccurs = 0
173 2006-09-05 Ankit Jain <jankit@novell.com>
175 * XsdDataContractExporter.cs (XsdDataContractExporter.MSTypesSchema):
176 Load resource mstypes.schema
177 (XsdDataContractExporter.Schemas): Add MSTypesSchema by default.
179 2006-09-05 Ankit Jain <jankit@novell.com>
181 * SerializationMap.cs (SerializationMap.AddImport): New.
182 (SerializationMap.GetSequence): Use AddImport.
184 2006-09-04 Ankit Jain <jankit@novell.com>
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.
199 2006-09-01 Ankit Jain <jankit@novell.com>
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.
211 (SharedContractMap.ctor): Move code for building Members list to ..
212 (SharedContractMap.GetMembers): .. here.
214 (CollectionTypeMap.Serialize): Mark 'override'.
215 (CollectionTypeMap.GetMembers): 'override' and throw
216 NotImplementedException.
217 (CollectionTypeMap.GetSchemaType): Implement.
219 (SharedTypeMap..ctor): Move code to ..
220 (SharedTypeMap.GetMembers): .. here.
221 (EnumMap.GetSchemaType): Implement.
223 * XsdDataContractExporter.cs (XsdDataContractExporter.Export):
225 * KnownTypeCollection.cs (KnownTypeCollection.GetCollectionQName): Use
226 GetQName instead of GetXmlName. Set Namespace for collections of
227 primitive types to MSArraysNamespace
229 2006-08-31 Ankit Jain <jankit@novell.com>
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
238 (GetQName): Likewise. Use GetEnumQName for enums.
240 (IsPrimitiveNotEnum): New.
241 (TryRegister): Add support for enums.
244 2006-08-14 Atsushi Enomoto <atsushi@ximian.com>
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).
250 2006-07-27 Ankit Jain <jankit@novell.com>
252 * XsdDataContractImporter.cs (Compile): Remove, thanks to eno
253 XmlSchemaSet.Compile () works now.
254 Update to directly use XmlSchemaSet.Compile ()
256 2006-07-27 Ankit Jain <jankit@novell.com>
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
267 2006-07-18 Atsushi Enomoto <atsushi@ximian.com>
269 * XmlFormatterSerializer.cs, KnownTypeCollection.cs :
270 don't raise an error at DataContractSerializer..ctor(). Raise
271 InvalidDataContractException on WriteObject().
273 2006-07-12 Ankit Jain <jankit@novell.com>
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
281 (KnownTypeCollection.TryRegister): Change the order like above.
282 (KnownTypeCollection.RegisterIXmlSerializable): New.
284 2006-07-04 Atsushi Enomoto <atsushi@ximian.com>
286 * XsdDataContractExporter.cs, XmlObjectSerializer.cs,
287 InvalidDataContractException.cs : some June CTP updates.
289 2006-07-04 Atsushi Enomoto <atsushi@ximian.com>
291 * IDataContractSurrogate.cs, ExportOptions.cs,
292 DataContractSerializer.cs, KnownTypeCollection.cs :
295 2006-05-09 Atsushi Enomoto <atsushi@ximian.com>
297 * DataContractSerializer.cs : null knownTypes argument is allowed.
298 * KnownTypeCollection.cs : Type.Namespace could be null.
300 2006-05-09 Atsushi Enomoto <atsushi@ximian.com>
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 ".").
306 2006-05-09 Atsushi Enomoto <atsushi@ximian.com>
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).
313 2006-04-05 Atsushi Enomoto <atsushi@ximian.com>
315 * DataContractSerializer.cs : xmlns:xsi is not written when the
316 target type is string.
318 2006-03-22 Ankit Jain <jankit@novell.com>
320 * SerializationMap.cs (CheckDataContractEqual): Remove.
321 (Deserialize): Allows expected type to be a derived one from actual
323 (DeserializeInternal): Handle DataMember of type 'object'.
324 * XmlFormatterSerializer.cs (SerializeNonPrimitive): Serialize types not
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
331 Add all (including inherited) KnownTypeAttribute values to the
334 2006-03-18 Ankit Jain <jankit@novell.com>
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.
346 2006-03-16 Ankit Jain <jankit@novell.com>
348 * SerializationMap.cs (SerializationMap.Deserialize): Use NameTable.Get
349 before reader.LookupNamespace.
350 (DataMemberInfo.Compare): Use String.CompareOrdinal instead of
353 2006-03-16 Ankit Jain <jankit@novell.com>
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
361 2006-03-15 Ankit Jain <jankit@novell.com>
363 * KnownTypeCollection.cs (IsPrimitiveType): New.
364 * SerializationMap.cs (Deserialize): Handle primitive types.
366 2006-03-15 Ankit Jain <jankit@novell.com>
368 * DataContractSerializer.cs (WriteObjectContent): Handle null.
369 (WriteStartObject): Rewritten.
370 * KnownTypeCollection.cs (GetQName): New. Return QName for a given type.
372 (GetSerializableQName):
373 (GetCollectionQName): New.
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.
382 2006-03-09 Atsushi Enomoto <atsushi@ximian.com>
384 * DataContractSerializer.cs : xmlns output should be done at
387 2006-03-08 Ankit Jain <jankit@novell.com>
389 * DataContractSerializer.cs (.ctor): Use name & namespace specified (if any)
390 with the DataContractAttribute for non-primitive types.
391 (DataContractSerializer.WriteStartObject): DataContractAttribute.Name
394 2006-03-03 Atsushi Enomoto <atsushi@ximian.com>
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.
400 2006-03-02 Atsushi Enomoto <atsushi@ximian.com>
402 * KnownTypeCollection.cs : default namespace contains common MS base
404 * XmlObjectSerializer.cs : added internal common utility field.
405 * DataContractSerializer.cs : Fixed constructors to fill fields and
407 * NetDataContractSerializer.cs : just leave it unimplemented until
408 we find how it works. It looks different from what
409 DataContractSerializer does.
411 2006-01-17 Atsushi Enomoto <atsushi@ximian.com>
413 * XmlFormatter.cs : extra namespaces are not written in Dec.CTP.
415 2005-11-28 Atsushi Enomoto <atsushi@ximian.com>
417 * KnownTypeCollection.cs : override.
419 2005-11-02 Atsushi Enomoto <atsushi@ximian.com>
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()
427 2005-10-20 Atsushi Enomoto <atsushi@ximian.com>
429 * XmlFormatterDeserializer.cs : new file.
430 * SerializationMap.cs, XmlFormatter.cs, KnownTypeCollection.cs :
431 several changes for pretty primitive Deserialize() implementation.
433 2005-10-07 Atsushi Enomoto <atsushi@ximian.com>
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.
444 2005-10-03 Atsushi Enomoto <atsushi@ximian.com>
446 * XmlFormatter.cs : Added implementation switch between
447 BinaryFormatter and internal DataContractFormatter.
448 * XmlSerializableServices.cs : WriteNodes() impl.
450 2005-10-03 Atsushi Enomoto <atsushi@ximian.com>
452 * XmlSerializableServices.cs : ReadNodes() impl.
454 2005-09-28 Atsushi Enomoto <atsushi@ximian.com>
456 * KnownTypeAttribute.cs : fixed attribute usage.
458 2005-09-22 Atsushi Enomoto <atsushi@ximian.com>
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.
471 2005-09-22 Atsushi Enomoto <atsushi@ximian.com>
473 * CollectionDataContractAttribute.cs
474 ContractNamespaceAttribute.cs
475 DataContractAttribute.cs
476 DataMemberAttribute.cs
478 IDataContractSurrogate.cs
479 InvalidDataContractException.cs
480 IUnknownSerializationData.cs
482 KnownTypeAttribute.cs
483 KnownTypeCollection.cs
484 SerializationFactoryMethodAttribute.cs
486 UnknownSerializationData.cs
488 XmlSerializableServices.cs
489 XsdDataContractExporter.cs
490 XsdDataContractImporter.cs : new files.