2007-04-17 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mcs / class / System.Configuration / System.Configuration / ChangeLog
1 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
2
3         * ConfigurationSectionCollection.cs : GetEnumerator() should return
4           IEnumerator for the items, not keys.
5         * ConfigurationProperty.cs : more helpful type mismatch message.
6
7 2007-04-16  Marek Habersack  <mhabersack@novell.com>
8
9         * SectionGroupInfo.cs: another (and final, hopefully) fix for bug
10         #81321 and several other related issues that were discovered by
11         the way. Thanks to Atsushi for help with XmlReader!
12
13 2007-04-15  Marek Habersack  <mhabersack@novell.com>
14
15         * SectionGroupInfo.cs: another incarnation of the fix for bug
16         #81321.
17
18 2007-04-12  Marek Habersack  <mhabersack@novell.com>
19
20         * SectionGroupInfo.cs: a better fix for #81321
21
22 2007-04-10  Marek Habersack  <mhabersack@novell.com>
23
24         * SectionGroupInfo.cs: make sure empty sections with the
25         short-circuit tag ends (<section/>) don't make the process loop
26         endlessly. Fixes bug #81321.
27
28 2007-03-22  Konstantin Triger <kostat@mainsoft.com>
29
30         * ConfigInfo.cs: should be able instantiate types with private ctors.
31
32 2007-03-19  Vladimir Krasnov  <vladimirk@mainsoft.com>
33
34         * ConfigurationSectionCollection.cs,
35         * ConfigurationSectionGroupCollection.cs,
36         * PropertyInformationCollection.cs, 
37         * SectionGroupInfo.cs: used StringComparer.Ordinal instead of
38         OrdinalComparer
39
40 2007-03-15  Vladimir Krasnov  <vladimirk@mainsoft.com>
41
42         * ConfigurationSectionCollection.cs,
43         * ConfigurationSectionGroupCollection.cs,
44         * PropertyInformationCollection.cs, 
45         * SectionGroupInfo.cs: these collections should be based on case
46         insensitive NameObjectCollectionBase
47         * added OrdinalComparer.cs for use in NameObjectCollectionBase
48
49 2007-02-07  Atsushi Enomoto  <atsushi@ximian.com>
50
51         * SectionInfo.cs : don't stop at restartOnExternalChanges attribute.
52
53 2007-01-16  Konstantin Triger <kostat@mainsoft.com>
54
55         * ConfigurationElement.cs: ignore properties with null or empty name.
56
57 2007-01-16  Konstantin Triger <kostat@mainsoft.com>
58
59         * ConfigurationElement.cs: Try to deserilalize an unrecognized element by
60                 current element, and only if failed delegate to default collection.
61
62 2006-12-27  Vladimir Krasnov  <vladimirk@mainsoft.com>
63
64         * ConfigurationElementCollection.cs: fixed BaseAdd, looking for
65         identical element when collection type is not alternate
66
67 2006-12-27  Vladimir Krasnov  <vladimirk@mainsoft.com>
68
69         * ConnectionStringSettingsCollection.cs: made connection string key
70         case insensitive
71
72 2006-12-27  Atsushi Enomoto  <atsushi@ximian.com>
73
74         * ConfigurationElementCollection.cs : fixed BaseAdd() with
75           throwIfExists to not raise an error for identical element
76           but for different element which shares the same key. Fix by
77           Konstantin Triger.
78
79 2006-12-21  Vladimir Krasnov  <vladimirk@mainsoft.com>
80
81         * ConfigurationProperty.cs: fixed DefaultValue of type Enum
82
83 2006-12-10  Konstantin Triger <kostat@mainsoft.com>
84
85         * ConfigurationElement.cs: Delegate parameter checking and default
86                 assigning to Configuratin property.
87         * ConfigurationProperty.cs:
88                 Ensure the TypeConvert and Validator always exist.
89                 Ensure the primitive types are properly initialized.
90
91 2006-12-09  Vladimir Krasnov  <vladimirk@mainsoft.com>
92
93         * ConfigurationElementCollection.cs
94         * ConfigurationRemoveElement.cs: fixed key for <remove> element in
95         ConfigurationRemoveElement class
96
97 2006-11-28  Marek Habersack  <grendello@gmail.com>
98
99         * SectionGroupInfo.cs: Implement merging of section groups with
100         the same names and parents.
101
102         * ConfigInfo.cs: Add an abstract method for merging sections.
103
104         * SectionInfo.cs: Add implementation of an abstract base method
105
106 2006-08-23  Konstantin Triger <kostat@mainsoft.com>
107
108         * SectionInfo.cs: refactoring - remove unneeded bool? usage.
109         
110 2006-11-05  Vladimir Krasnov  <vladimirk@mainsoft.com>
111
112         * added: ConfigurationRemoveElement.cs, common element for <remove>
113         * ConnectionStringSettingsCollection.cs: reverted last fix for
114         <remove> element
115         * ConfigurationElementCollection.cs: fixed the way that
116         OnDeserializeUnrecognizedElement method handles <remove> element
117
118 2006-11-02  Vladimir Krasnov  <vladimirk@mainsoft.com>
119
120         * ConfigurationElement.cs: typo in DefaultCollectionProperty
121         method
122
123 2006-10-30  Joel Reed <joel.reed@ddiworld.com>
124
125         * NameValueConfigurationCollection.cs: Implement the Properties
126         property. 
127
128 2006-08-23  Konstantin Triger <kostat@mainsoft.com>
129
130         * ConfigurationLocation.cs: do not read root element, correctly close stream.
131         * Configuration.cs: use ReadData for nested content to throw if location
132                 elements are encounterd.
133                 In constructor taking parent Configurqation: do not call Init and so avoid
134                 rereading config file.
135
136 2006-09-05  Vladimir Krasnov  <vladimirk@mainsoft.com>
137
138         * NameValueConfigurationElement.cs: fixed functionality
139         * ConfigurationElementCollection.cs,
140         ConnectionStringSettingsCollection.cs: fixed <remove> element in
141         connectionStrings section
142
143 2006-08-23  Konstantin Triger <kostat@mainsoft.com>
144
145         * ConfigurationSection.cs: for net 1.1 SectionHandlers: return null in case
146                 RawXml is null, as net 1.1 does.
147
148 2006-08-17  Vladimir Krasnov  <vladimirk@mainsoft.com>
149
150         * ConfigurationFileMap.cs: added TARGET_JVM on not supported members
151         in grasshopper
152
153 2006-07-07  Atsushi Enomoto  <atsushi@ximian.com>
154
155         * ConfigurationManager.cs : OpenExeConfiguration(null) should still
156           work. This is required for embedded scenario.
157
158 2006-06-10  Atsushi Enomoto  <atsushi@ximian.com>
159
160         * SectionGroupInfo.cs : skip <dllmap> in configuration.
161
162 2006-05-14  Atsushi Enomoto  <atsushi@ximian.com>
163
164         * ConfigurationManager.cs: since ConfigurationSystem is different
165           for web.config, cast from ConfigurationSection to runtime object
166           should be done at GetSection().
167           This really fixed bug #78372.
168
169 2006-05-12  Atsushi Enomoto  <atsushi@ximian.com>
170
171         * Configuration.cs : configPath is null for machine.config, so don't
172           use it. Use streamName instead. To my understanding, this should
173           fix bug #78372.
174
175 2006-05-10  Atsushi Enomoto  <atsushi@ximian.com>
176
177         * ConnectionStringSettings.cs : it seems that "name" property
178           could be null i.e. there is no StringValidator.
179         * StringValidator.cs : allow null.
180
181 2006-05-10  Atsushi Enomoto  <atsushi@ximian.com>
182
183         * ConfigurationManager.cs : use GetCallingAssembly() instead of
184           GetEntryAssembly() which possibly returns null (e.g. nunit) in
185           OpenExeConfiguration(). Several nunit test failures are gone.
186
187 2006-05-10  Atsushi Enomoto  <atsushi@ximian.com>
188
189         * ConnectionStringSettings.cs : oops, this API fix broke standalone
190           test.
191
192 2006-05-10  Atsushi Enomoto  <atsushi@ximian.com>
193
194         * ConfigurationElement.cs,
195           ConfigurationErrorsException.cs,
196           ConfigurationUserLevel.cs,
197           ConfigurationPropertyOptions.cs,
198           ConnectionStringSettings.cs : assorted minor corcompare fixes.
199
200 2006-05-10  Atsushi Enomoto  <atsushi@ximian.com>
201
202         * Configuration.cs : some kind of refactoring is absolutely needed
203           here. Reuse RawXml from parentSection when data was not available
204           on current section. This should fix bug #78353.
205
206 2006-05-10  Atsushi Enomoto  <atsushi@ximian.com>
207
208         * ConfigurationElement.cs,
209           DefaultSection.cs :
210           in some cases RawXml was set null string, so skip such cases.
211         * Configuration.cs : support IConfigurationSectionHandler here.
212         * ConfigurationManager.cs : GetSection() now returns name value
213           collection, not a section.
214         * ConfigurationSection.cs : added SectionHandler for
215           IConfigurationSectionHandler support, and use its Create() in
216           GetRuntimeObject().
217         * ClientConfigurationSystem.cs :
218           use GetRuntimeObject() in GetSection(). Thus now
219           ConfigurationManager.GetSection() returns a runtime object.
220           Fixed bug #78337.
221
222 2006-04-28  Atsushi Enomoto  <atsushi@ximian.com>
223
224         * SectionGroupInfo.cs :
225           sections which are defined in sectionGroups could be directly
226           referenced, so search corresponding section recursively.
227         * DefaultSection.cs : It does not reject unrecognized contents.
228
229 2006-04-26  Chris Toshok  <toshok@ximian.com>
230
231         * SectionInformation.cs (.ctor): add MonoTODO about the default
232         value for require_permission.
233         (RequirePermission): implement the getter/setter for this so
234         Atsushi's previous commit doesn't break everything :)
235
236 2006-04-26  Atsushi Enomoto  <atsushi@ximian.com>
237
238         * Configuration.cs,
239           SectionInfo.cs : added support for "requirePermission" attribute
240           in "section" element. This fixes bug #77957.
241
242 2006-04-25  Chris Toshok  <toshok@ximian.com>
243
244         * ConfigurationElementCollection.cs (Reset): it makes no sense to
245         pass the typename to CreateNewElementInternal.  the argument is
246         the elementname. pass null instead.
247         (Unmerge): same.
248
249 2006-02-01  Atsushi Enomoto  <atsushi@ximian.com>
250
251         * ConfigurationElement.cs : ListErrors() and SetPropertyValue()
252           are protected.
253         * ConfigurationSection.cs : the .ctor() is protected.
254         * ConfigurationElementCollection.cs : CollectionType is public.
255           Count and BaseAdd() are not virtual.
256         * ConfigurationPropertyCollection.cs : Count is not virtual.
257
258 2006-02-01  Chris Toshok  <toshok@ximian.com>
259
260         * ConfigurationElement.cs: revert the patch that stores and writes
261         out xmlns attributes for all elements.
262
263         * ClientConfigurationSystem.cs: SupportsUserConfig == false.
264
265         * AppSettingsSection.cs (GetRuntimeObject): call col.SetReadOnly()
266         only if SupportsUserConfig != true.
267
268         * ConfigurationManager.cs (ConfigurationSystem): add a property
269         like ConfigurationFactory, and use it instead of the private field
270         throughout.
271
272 2006-01-26  Chris Toshok  <toshok@ximian.com>
273
274         * SectionGroupInfo.cs (ReadContent): handle "location" (seemingly)
275         correctly.
276
277         * InternalConfigurationRoot.cs: misc logical additions.  still
278         isn't useful.
279
280         * ConfigurationManager.cs (OpenExeConfigurationInternal): throw an
281         exception if both calling_assembly and exePath are null.  Allow
282         the exePath to be a path to a config file as well, checking to see
283         if it ends in .config before appending.
284         (OpenExeConfiguration): stop blindly passing
285         Assembly.GetCallingAssembly.  I'm assuming this will likely break
286         .dll.config usage.  need to investigate that (and write more unit
287         tests.)
288         (GetSection): call configSystem.GetSection.
289         (RefreshSection): call configSystem.RefreshSection.
290         (ChangeConfigurationSystem): modeled after the
291         ConfigurationSettings System.Web hack - allow
292         WebConfigurationManager to replace the current
293         IInternalConfigSystem.
294
295         * InternalConfigurationHost.cs (InternalConfigurationHost): make
296         abstract, and remove all the NotImplenmentedException's.
297
298         * ConfigurationElement.cs (DeserializeElement): store off the xml
299         namespace if there is one.
300         (SerializeElement): write out the namespace if there was one.
301
302         * ClientConfigurationSystem.cs: new class, based on some stack
303         traces I've seen in tests.  Kinda (well, not *kinda*..) hacky.
304
305         * Configuration.cs (NamespaceDeclared): implement.
306         (Load): don't swallow all exceptions, just the ones raised when we
307         open the stream for reading.
308         (ReadConfigFile): handle xmlns.
309
310 2006-01-25  Chris Toshok  <toshok@ximian.com>
311
312         * ConfigInfo.cs (ThrowException): throw a
313         ConfigurationErrorsException, not a ConfigurationException.
314
315         * SectionGroupInfo.cs (ReadContent): throw an exception
316         unconditionally if we see a <location>.  they aren't valid in
317         section groups.
318
319 2006-01-25  Chris Toshok  <toshok@ximian.com>
320
321         * KeyValueInternalCollection.cs: don't use a nested collection,
322         just defer to our base class.  This fixes usage of
323         ConfigurationManager.AppSettings.Keys.
324
325 2006-01-13  Chris Toshok  <toshok@ximian.com>
326
327         * AppSettingsSection.cs (GetRuntimeObject): only access
328         Settings[key] once per iteration.
329
330 2006-01-09  Chris Toshok  <toshok@ximian.com>
331
332         * ConfigurationManager.cs (AppSettings): just return
333         AppSettingsSection.GetRuntimeObject() here.
334
335         * AppSettingsSection.cs: fix the "file" property to match dumper
336         output.
337         (GetRuntimeObject): this returns a KeyValueInternalCollection in
338         MS's implementation.
339
340 2006-01-09  Chris Toshok  <toshok@ximian.com>
341
342         * ElementInformation.cs (Validator): if propertyInfo == null,
343         return a DefaultValidator instance.
344
345 2006-01-09  Chris Toshok  <toshok@ximian.com>
346
347         * AppSettingsSection.cs (.cctor): specify null for
348         validator/converter.
349
350         * ProtectedProviderSettings.cs (.cctor): specify null for
351         validator/converter.
352
353 2006-01-03  Chris Toshok  <toshok@ximian.com>
354
355         * Configuration.cs (SaveAs): open with FileMode.OpenOrCreate so we
356         can save to a new file.
357         (CreateSection): don't bother to set the section information's
358         Name here.  we'll do it in SectionInfo.CreateInstance.
359
360         * ProtectedConfiguration.cs (Section): new static property so we
361         can remove all the GetSection calls.
362         (GetProvider): load a named provider, optionally throwing an
363         exception if it's not found.
364
365         * InternalConfigurationHost.cs (EncryptSection, DecryptSection):
366         make these private interface implementations, and call
367         protectedSection.{EncryptSection,DecryptSection}.
368
369         * ProtectedConfigurationSection.cs (EncryptSection,
370         DecryptSection): add these two calls.  They really shouldn't be
371         here, but I saw them in an MS stack trace and thought "why not?".
372
373         * ConfigurationSection.cs (SectionInformation): don't set
374         attributes here, that's done in SectionInfo.CreateInstance.
375         (DeserializeSection): shoehorn in the decryption stuff here.  It
376         doesn't belong here, and I've added a MonoTODO about it.  It
377         should live someplace like SectionInfo.ReadData (which would make
378         it similar to the encryption stuff in .WriteData).
379
380         * SectionInformation.cs (IsProtected): remove the special flag,
381         just return true if we have a non-null protection_provider.
382         (ProtectSection): do nothing but try to instantiate the named
383         provider.
384         (UnprotectSection): null out protection_provider.
385
386         * DpapiProtectedConfigurationProvider.cs: move the
387         NotSupportedExceptions to Decrypt/Encrypt so we don't bomb out
388         when parsing our machine.config file.
389
390         * RsaProtectedConfigurationProvider.cs: initial implementation.
391         much is missing (OAEP support, key importing, adding/deleting
392         keys), but it can be used.
393
394 2006-01-02  Chris Toshok  <toshok@ximian.com>
395
396         * RsaProtectedConfigurationProvider.cs: implement the
397         CspProviderName and UseOAEP properties..
398
399 2006-01-02  Chris Toshok  <toshok@ximian.com>
400
401         * ProtectedConfigurationSection.cs: flesh this out (and add logic
402         to instantiate providers, based on some of the standalone test
403         exception stack traces.)
404
405         * ProtectedConfiguration.cs: new implementation.
406
407         * ProtectedConfigurationProviderCollection.cs: new
408         implementation.
409
410         * ProtectedProviderSettings.cs: new implementation.
411
412         * ProtectedConfigurationProvider.cs: trim the superclass's name.
413
414         * RsaProtectedConfigurationProvider.cs: stubbed, unimplemented.
415
416         * DpapiProtectedConfigurationProvider.cs: add stubbed
417         implementation that throws NotSupportedException telling people
418         they should be using RsaProtectedConfigurationProvider.
419
420 2006-01-02  Chris Toshok  <toshok@ximian.com>
421
422         * DefaultSection.cs (Properties): implement.
423
424         * IgnoreSection.cs: move from lazily creating the properties
425         collection to sharing a single one across all instances.
426
427         * ConfigurationLockCollection.cs (IsReadOnly): fix compiler warning.
428
429         * ConfigurationElementCollection.cs (BaseAdd) remove logic to
430         remove an old matching element.
431         (BaseGetKey): throw an exception if @index is out of range.
432
433         * SectionInformation.cs (SectionName): just return name, like Name
434         does.. redundant, but it matches tests.
435         (GetRawXml): implement.
436         (SetRawXml): implement.
437
438         * ConfigurationSection.cs (SectionInformation): fill in
439         sectionInformation.Type before returning.
440         (DeserializeSection): save off the raw xml to our
441         SectionInformation.
442
443         * ConfigurationElement.cs (LockItem): implement.
444         (DeserializeElement): add support for the "lockItem" attribute.
445
446 2005-12-16  Chris Toshok  <toshok@ximian.com>
447
448         * ConfigurationLockCollection.cs (Add): only add the name if it's
449         not already there.
450         (IsReadOnly): always return false for the time being, in the
451         non-exceptional case.
452
453 2005-12-15  Chris Toshok  <toshok@ximian.com>
454
455         * ConfigurationElement.cs (LockAllAttributesExcept): implement.
456         (LockAllElementsExcept): implement.
457         (DeserializeElement): handle the built-in attributes (lock* for
458         the time being).
459
460 2005-12-15  Chris Toshok  <toshok@ximian.com>
461
462         * ConfigurationLockCollection.cs (..ctor): don't call Populate.
463         (Populate): nuke.
464         (CheckName): make sure the passes in name is valid for this type
465         of lock collection.
466         (Add): call CheckName, and set is_modified to true.
467         (Clear): set is_modified.
468         (IsReadOnly): add plausable implementation, including exception in
469         the case where the name isn't found.
470         (Remove): set is_modified.
471         (SetFromList): implement.
472         (get_AttributeList): implement.
473         (set_IsModified): add internal setter so we can clear the modified
474         flag.
475
476 2005-12-12  Chris Toshok  <toshok@ximian.com>
477
478         * AppSettingsSection.cs (DeserializeElement): provide rather naive
479         version of the file="" handling.  It's enough to make our tests
480         pass.
481
482 2005-12-11  Chris Toshok  <toshok@ximian.com>
483
484         * ConnectionStringsSection.cs (..cctor): use "" instead of null
485         for the name of the default collection.
486
487         * AppSettingsSection.cs (..cctor): create a property for the
488         default collection.
489         (DeserializeElement): call base.DeserializeElement.
490         (File): index off the property, not the name.
491         (Settings): don't use an private variable here, use
492         base[_propSettings].
493
494         * ConfigurationManager.cs (GetSection): GetEntryAssembly returns
495         null for new app domains.  so deal with this by calling
496         GetCallingAssembly if it's null.  This is probably still wrong but
497         it doesn't NRE in xsp2.
498         (AppSettings): remove MonoTODO.
499         
500         * KeyValueConfigurationElement.cs (..ctor): new method, create the
501         ConfigurationProperty's and the collection here.
502         (.ctor): add internal arg-less ctor.
503         (Key): use keyProp instead of "key".
504         (Value): use vlaueProp instead of "value".
505         (Properties): return our class's properties.
506
507         * KeyValueConfigurationCollection.cs (CreateNewElement): use the
508         arg-less ctor.
509         (GetElementKey): re-enable the BaseIndexOf test.
510
511 2005-12-02  Chris Toshok  <toshok@ximian.com>
512
513         * Configuration.cs (Save): call WriteStartDocument.
514
515         * ConnectionStringSettingsCollection.cs (CreateNewElement): use
516         parameter-less ctor to keep from generating exceptions when using
517         the collection.
518
519 2005-12-02  Chris Toshok  <toshok@ximian.com>
520
521         * ConnectionStringSettings.cs: tabify, fix default values, and add
522         a string validator for "name".
523
524 2005-12-02  Chris Toshok  <toshok@ximian.com>
525
526         * CommaDelimitedStringCollectionConverter.cs (ConvertTo): change
527         the type check away from an exact check for
528         CommaDelimitedStringCollection to an assignable test from
529         StringCollection.  This is due to the fact that AuthorizationRule
530         doesn't create CommaDelimitedStringCollections, for some odd
531         reason.  It uses StringCollections.
532
533         * PropertyInformation.cs (Value): remove the case for
534         IsDefaultCollection - it's not necessary, as the property is an
535         Element.
536
537         * ConnectionStringSettings.cs: fix formatting and remove some
538         #regions.
539
540         * ConnectionStringSettingsCollection.cs: same.
541
542         * ConnectionStringsSection.cs: same.
543
544         * ConfigurationElement.cs (SerializeToXmlElement): don't write the
545         enclosing start/end elements if the elementName is null or "".
546         this fixes the case for the DefaultCollections (at least in the
547         case of connectionStrings).
548
549         * IgnoreSection.cs (Properties): remove the MonoTODO.
550
551         * SectionInfo.cs (WriteData): remove the "<!-- dd -->" output.
552
553 2005-11-28  Chris Toshok  <toshok@ximian.com>
554
555         * ProviderSettings.cs: use ConfigurationProperty's to implement
556         the properties.
557
558 2005-11-24  Chris Toshok  <toshok@ximian.com>
559
560         * ConfigurationProperty.cs (Validate): add internal method.
561
562 2005-11-24  Chris Toshok  <toshok@ximian.com>
563
564         * ConfigurationElement.cs (ElementProperty): make this protected
565         internal virtual instead of public.
566         (SetPropertyValue): add a validator call and a blurb about the
567         code based on information gleaned from tests.
568         (set_Item (string)): call SetPropertyValue in the setter.
569         
570 2005-11-14  Chris Toshok  <toshok@ximian.com>
571
572         * CommaDelimitedStringCollection.cs: reformat things a bit, and
573         flag ToString() as override.
574
575         * DefaultSection.cs: new stubbed out implementation.
576
577         * CommaDelimitedStringCollectionConverter.cs: new implementation.
578
579 2005-11-10  Chris Toshok  <toshok@ximian.com>
580
581         * AppSettingsSection.cs (DeserializeElement): stop explicitly
582         calling Settings.DeserializeElement, as the DefaultCollection
583         works now.
584
585         * ConfigurationElement.cs (DeserializeElement): rework the loop
586         here so that we actually loop over all the content elements.
587
588 2005-11-09  Chris Toshok  <toshok@ximian.com>
589
590         * ConfigurationElement.cs: Add support for DefaultCollection
591         attributes.
592
593         * PropertyInformation.cs (PropertyInformation.Value): add case for
594         IsDefaultCollection.
595
596         * SectionGroupInfo.cs (SectionGroupInfo.ReadConfig): when we read
597         a "type" attribute, make sure the cached System.Type is cleared.
598
599 2005-10-25  Chris Toshok  <toshok@ximian.com>
600
601         * InfiniteTimeSpanConverter.cs: new implementation.
602
603         * InfiniteIntConverter.cs: new implementation.
604
605         * GenericEnumConverter.cs: new implementation.
606
607         * Configuration.cs: we don't need to check with "is" after we use
608         "as"..  just check for null-ness.
609
610         * KeyValueConfigurationCollection.cs: GetElementKey should throw
611         NRE if element == null.
612
613         * CommaDelimitedStringCollection.cs: raise the correct exceptions
614         in the read only case, and return null from ToString if there are
615         0 elements.
616
617 2005-10-25  Chris Toshok  <toshok@ximian.com>
618
619         * PositiveTimeSpanValidatorAttribute.cs: new implementation.
620
621         * PositiveTimeSpanValidator.cs: new implementation.
622
623 2005-10-24  Chris Toshok  <toshok@ximian.com>
624
625         * TimeSpanSecondsOrInfiniteConverter.cs: new implementation.
626
627         * TypeNameConverter.cs: new implementation.
628
629         * WhiteSpaceTrimStringConverter.cs: new implementation.
630
631 2005-10-24  Chris Toshok  <toshok@ximian.com>
632
633         * AppSettingsSection.cs (DeserializeElement, SerializeSection):
634         split the behavior based on if File == "".  If it is, we do the
635         default.  otherwise we throw NIE.
636
637         * ConnectionStringsSection.cs (DeserializeElement): we shouldn't
638         need this, but we do until the IsDefaultCollection stuff is fixed.
639
640         * ConfigurationElementCollection.cs
641         (OnDeserializeUnrecognizedElement): for clearElementName, make
642         sure we have no attributes.
643
644         * ConnectionStringSettingsCollection.cs (get_Properties): for now
645         just chain up to base.Properties.
646
647         * ConfigurationElement.cs (ReflectProperties): do the default
648         value/property type check in a more robust way, using
649         Convert.ChangeType.
650
651 2005-10-24  Chris Toshok  <toshok@ximian.com>
652
653         * ConfigurationElement.cs: treat
654         ConfigurationProperty.NoDefaultValue the same as null when we're
655         checking the default value's type.  this fixes t13 and 14.
656
657         * ConnectionStringsSection.cs (ConnectionStrings): fix the
658         DefaultValue in the ConfigurationPropertyAttribute.
659
660 2005-10-24  Chris Toshok  <toshok@ximian.com>
661
662         * KeyValueConfigurationCollection.cs (GetElementKey): sacrifice
663         one test to get another working.  Return a valid key even if the
664         element is not in this collection.
665         (get_ThrowOnDuplicate): return false.
666
667         * ConfigurationElementCollection.cs (BaseAdd): if we're adding an
668         element with the same key, overwrite the old one (remove the old
669         one after inserting the new one).  Also, re-enable the throwing of
670         exceptions if ThrowOnDuplicate == true.
671
672 2005-10-24  Chris Toshok  <toshok@ximian.com>
673
674         * AppSettingsSection.cs (Settings): fix ConfigurationProperty
675         attribute.
676
677         * ProtectedConfigurationSection.cs (Providers): same.
678
679 2005-10-12  Chris Toshok  <toshok@ximian.com>
680
681         * ConfigurationPermission.cs: flesh out as per tests.
682
683 2005-10-11  Chris Toshok  <toshok@ximian.com>
684
685         * ConfigurationProperty.cs: don't use null to mean no default
686         value, use NoDefaultValue.
687
688 2005-10-11  Chris Toshok  <toshok@ximian.com>
689
690         * KeyValueConfigurationCollection.cs (GetElementKey): duh.
691         BaseGet calls GetElementKey, so we were hitting an infinite
692         recursion here.  Use BaseIndexOf instead.
693
694 2005-10-07  Chris Toshok  <toshok@ximian.com>
695
696         * InternalConfigurationHost.cs: some interface work, adding in the
697         new methods.
698
699         * ConfigurationProperty.cs: remove debug spew.
700
701         * Configuration.cs: add NIE'd NamespaceDeclared property.
702
703         * ElementInformation.cs: add NIE'd Errors property.
704
705         * PropertyInformationCollection.cs: add NIE'd GetObjectData().
706
707         * ConfigurationManager.cs: quite a bit of new work here.  Some
708         definie TODO's still though.
709
710 2005-10-07  Chris Toshok  <toshok@ximian.com>
711
712         * ConfigurationErrorsException.cs (.ctor): for the (string)
713         overload, chain up to the base (string) ctor.
714
715 2005-10-07  Chris Toshok  <toshok@ximian.com>
716
717         * ConfigurationElement.cs (ElementMap.ReflectProperties): make
718         sure the type of the default value is compatible with that of the
719         property itself, and throw ConfigurationErrorsException if they
720         don't match.  Fixes t12.
721
722 2005-10-07  Chris Toshok  <toshok@ximian.com>
723
724         * ConfigHelper.cs: remove some unused code.
725
726         * ConfigurationProperty.cs: disambiguate the ctor we chain to.
727
728         * ConfigurationElement.cs (ElementProperty): implement.
729         (ElementMap.ReflectProperties): make DefaultValidator the default
730         validator, not null.
731
732 2005-10-06  Chris Toshok  <toshok@ximian.com>
733
734         * KeyValueConfigurationElement.cs: uncomment out some stuff.
735         (Properties): just return base.Properties.  Not sure why they
736         override this, as the base class's implementation passes our test.
737
738         * KeyValueConfigurationCollection.cs (Add): for the keyValue
739         overload, call keyValue.Init as the unit test stack traces
740         indicates that'9s where it's called.  For the string,string
741         overload, just call the keyValue overload instead of calling
742         BaseAdd.
743         (CreateNewElement): just use the name/value ctor, and specify ""
744         for each.
745         (GetElementKey): this function always returns "" for elements that
746         haven't been added to the collection.  Once theyre added, it seems
747         to always return keyValue.Key.
748         (Properties): the unit tests show this returns a 0 length
749         collection.
750
751 2005-10-05  Chris Toshok  <toshok@ximian.com>
752
753         * ConfigurationPermissionAttribute.cs: stub out.
754
755 2005-10-05  Chris Toshok  <toshok@ximian.com>
756
757         * TimeSpanMinutesOrInfiniteConverter.cs: fill in the
758         implementation.
759
760 2005-10-05  Chris Toshok  <toshok@ximian.com>
761
762         * TimeSpanSecondsConverter.cs: new implementation.
763
764 2005-10-05  Chris Toshok  <toshok@ximian.com>
765
766         * TimeSpanMinutesConverter.cs: flesh out implementation.
767
768         * ConfigurationConverterBase.cs: make all subclasses work with
769         strings only, since that's what seems to manifest itself in the
770         tests.
771
772 2005-10-05  Chris Toshok  <toshok@ximian.com>
773
774         * ConfigurationLockCollection.cs: add NIE'd AttributeList
775         property.
776
777         * ConfigurationConverterBase.cs: add MonoTODO'd CanConvertFrom and
778         CanConvertTo methods.
779
780         * ConfigurationSectionGroup.cs: add NIE'd IsDeclared property.
781
782         * ProtectedConfigurationSection.cs: add NIE'd properties.
783
784         * ConfigurationElementCollection.cs: add MonoTODO'd IsReadOnly
785         and SetReadOnly methods, and have then chain up to the base class.
786
787         * KeyValueConfigurationCollection.cs: add the class level
788         ConfigurationCollectionAttribute, and add a NIE'ed Properties
789         property.
790
791         * ProviderSettingsCollection.cs: add the class level
792         ConfigurationCollectionAttribute, and add a "new" keyword to the
793         this property.  Also, nuke the Provider's property.
794
795         * SectionInformation.cs: add some NEI'd properties.
796
797         * ConfigurationSection.cs (ResetModified): leave the MonoTODO, but
798         chain up to base class's method instead of throwing NIE.
799
800         * ConnectionStringSettingsCollection.cs: add the class-level
801         ConfigurationCollectionAttribute, and add the unimplemented
802         Properties property.
803
804         * ConfigurationErrorsException.cs: flesh this out, and add a
805         pragma to disable the obsolete warnings from our base class.
806
807         * ProviderSettings.cs: add unimplemented Properties property.
808
809         * ConfigurationElement.cs: remove unnecessary
810         EvaluationInformation.
811
812         * InternalConfigurationRoot.cs: add unimplemented IsDesignTime
813         property.
814
815         * ConfigurationProperty.cs: add a missing ctor.
816
817         * AppSettingsSection.cs: add missing "override" keyword.
818
819         * ConnectionStringsSection.cs: remove override.
820         
821         * ConfigurationSectionCollection.cs: AllKeys -> Keys, and add
822         unimplemented GetObjectData override.
823
824         * ConfigurationSectionGroupCollection.cs: same.
825
826         * ConfigurationCollectionAttribute.cs: add missing CollectionType
827         property.
828
829 2005-10-05  Chris Toshok  <toshok@ximian.com>
830
831         * ConfigurationPermission.cs: new implementation.
832
833         * IgnoreSection.cs: new implementation.
834
835 2005-10-05  Chris Toshok  <toshok@ximian.com>
836
837         * CommaDelimitedStringCollection.cs: new implementation.
838
839 2005-10-05  Chris Toshok  <toshok@ximian.com>
840
841         * NameValueConfigurationCollection.cs: new implementation.
842
843         * NameValueConfigurationElement.cs: new implementation.
844
845 2005-10-05  Chris Toshok  <toshok@ximian.com>
846
847         * ValidatorCallback.cs: new implementation.
848
849         * SubclassTypeValidator.cs, SubclassTypeValidatorAttribute.cs: new
850         implementation.
851
852         * CallbackValidator.cs, CallbackValidatorAttribute.cs: new
853         implementation.
854
855         * RegexStringValidator.cs, RegexStringValidatorAttribute.cs: new
856         implementation.
857
858         * LongValidator.cs, LongValidatorAttribute.cs: new implementation.
859
860         * IntegerValidator.cs, IntegerValidatorAttribute.cs: new
861         implementation.
862
863         * DefaultValidator.cs: new implementation.
864
865 2005-09-28  Chris Toshok  <toshok@ximian.com>
866
867         * ConfigurationElementCollection.cs: more work on the "<clear />"
868         handling - just skip the element for now.  this causes a failure
869         in one test ('<clear hi="bye" />' doesn't throw an exception when
870         it should), but it succeeds for collections that have required
871         attributes.
872
873         * ConnectionStringSettings.cs: providerName isn't a required
874         attribute.
875
876         * AppSettingsSection.cs (.cctor): initialize our "file" Property.
877         (File): implement.
878         (Properties): fix.
879         (GetRuntimeObject): call the base class method instead of just
880         returning "this".
881
882         * ConnectionStringsSection.cs: Add a hacky DeserializeElement
883         method here (that isn't in MS's) for the time being so we actually
884         deserialize our collection.
885
886 2005-09-28  Chris Toshok  <toshok@ximian.com>
887
888         * KeyValueInternalCollection.cs: found this by way of a stack
889         trace in one of the tests.  A NameValueCollection that wraps a
890         KeyValueConfigurationCollection.
891
892         * Configuration.cs (Init): save off configPath.
893         (EvaluationContext): new, mostly implemented.
894         (GetSectionInstance): use IgnoreSection instead of
895         RuntimeOnlySection.
896         (Load): don't fail when we can't load a file.
897
898         * IgnoreSection.cs: replace RuntimeOnlySection with this new
899         public type.
900
901         * RuntimeOnlySection.cs: nuke.
902         
903 2005-09-27  Chris Toshok  <toshok@ximian.com>
904
905         * TimeSpanMinutesOrInfiniteConverter.cs: this is sealed.
906
907 2005-09-27  Chris Toshok  <toshok@ximian.com>
908
909         * ConfigurationProperty.cs: add IsDefaultCollection property.
910
911 2005-09-27  Chris Toshok  <toshok@ximian.com>
912
913         * ConfigurationElementProperty.cs: new file.
914
915         * ConfigurationLockCollection.cs: new file.
916
917         * ConfigurationElementCollection.cs
918         (OnDeserializeUnrecognizedElement): make sure we consume the
919         <clear /> element so we don't into an endless loop.
920
921         * ConfigurationElement.cs: add a bunch of NIE's properties.
922
923         * ContextInformation.cs: Add NIE'ed IsMachineLevel property.
924
925 2005-09-23  Chris Toshok  <toshok@ximian.com>
926
927         * AppSettingsSection.cs: fix build and add a couple of TODO'ed
928         properties.
929
930 2005-09-23  Chris Toshok  <toshok@ximian.com>
931
932         * ProviderSettings.cs (Unmerge): track change to
933         ConfigurationElement.Unmerge.
934
935         * ConfigurationSection.cs: add functions nuked from
936         ConfigurationElement here.
937
938         * ConfigurationElementCollection.cs: add DebuggerDisplay attribute
939         to the class.
940         (BaseGetAllKeys): returns object[], not string[].
941         (BaseGetKey): returns object, not string.
942         (Unmerge): track change to ConfigurationElement.Unmerge signature.
943
944         * ConfigurationElement.cs (ConfigurationElement.Unmerge): fix
945         signature (drop the serializeCollectionKey parameter).
946         
947
948 2005-09-23  Chris Toshok  <toshok@ximian.com>
949
950         * StringValidator.cs: throw ArgumentException instead of
951         ConfigurationErrorsException.
952
953 2005-09-23  Chris Toshok  <toshok@ximian.com>
954
955         * ConnectionStringsSection.cs: track change to
956         ConfigurationPropertyOptions.
957
958         * ConfigurationPropertyAttribute.cs, ConfigurationProperty.cs,
959         ProviderSettings.cs: track change to ConfigurationPropertyOptions.
960
961         * ConnectionStringSettings.cs: track change to
962         ConfigurationProprertyOptions, and add some ConfigurationProperty
963         attributes.
964         
965         * ConfigurationPropertyOptions.cs: DefaultCollection ->
966         IsDefaultCollection, Required -> IsRequired.
967
968 2005-09-22  Chris Toshok  <toshok@ximian.com>
969
970         * PositiveTimeSpanValidator.cs: this lives in
971         System.Web.Configuration, not System.Configuration.
972
973 2005-09-22  Chris Toshok  <toshok@ximian.com>
974
975         * TimeSpanValidator.cs: change to ArgumentException and alter the
976         messages slightly.
977
978 2005-09-22  Chris Toshok  <toshok@ximian.com>
979
980         * ExeConfigurationFileMap.cs (ctor): init all the strings to "".
981
982 2005-07-01  Lluis Sanchez Gual  <lluis@novell.com>
983
984         * ProviderSettings.cs: Implemented properties using property attributes.
985         * ConfigurationElement.cs: Implemented ElementInformation property and
986         moved there all value management.
987         * ProtectedConfigurationProvider.cs: Set the correct base class.
988         * SectionInformation.cs: Added missing AllowExeDefinition property.
989         * TimeSpanValidatorAttribute.cs: Implemented.
990         * StringValidator.cs: Implemented.
991         * ProviderSettingsCollection.cs: Added missing class attribute.
992         * ConfigurationSaveMode.cs: Fix enum values.
993         * ConfigurationElementCollection.cs: Added Init method for initializing
994         elements from properties.
995         * StringValidatorAttribute.cs: Implemented.
996         * ConfigurationLocation.cs: Added support for allowOverride flag.
997         * TimeSpanMinutesOrInfiniteConverter.cs: Created skeleton class.
998         * PositiveTimeSpanValidator.cs: Implemented.
999         * TimeSpanMinutesConverter.cs: Created skeleton class.
1000         * SectionInfo.cs: Properly read, store and check the values of AllowLocation,
1001         AllowDefinition and AllowExeDefinition.
1002         * TimeSpanValidator.cs: Implemented.
1003         * ConfigurationConverterBase.cs: Created skeleton class.
1004         * InternalConfigurationHost.cs: Implemented IsDefinitionAllowed and
1005         VerifyDefinitionAllowed.
1006         * ConfigurationManager.cs: That class must be static.
1007         * PropertyInformationCollection.cs: Implemented.
1008         * Configuration.cs: Added some checks for AllowLocation, AllowDefinition and
1009         so on. In Save(), don't forget to save location elements.
1010         * ConfigurationProperty.cs: Keep track of collection attributes.
1011         * ConfigInfo.cs: Support overrideAllowed flag.
1012         * KeyValueConfigurationElement.cs: Define properties using attributes.
1013         * PropertyValueOrigin.cs: implemented.
1014         * PropertyInformation.cs: Mostly implemented.
1015         * SectionGroupInfo.cs: Properly propagate the overrideAllowed flag.
1016         * ElementInformation.cs: Mostly implemented.
1017         * ConfigurationPropertyAttribute.cs: Set the correct default value.
1018         * ConfigurationCollectionAttribute.cs: Implemented.
1019
1020 2005-06-23  Lluis Sanchez Gual <lluis@novell.com>
1021
1022         * SectionInfo.cs: Set the config host when loading the section.
1023         * InternalConfigurationHost.cs: Implemented some basic methods.
1024         * Configuration.cs: Find the correct parent for the configuration,
1025         taking into accound locations and such. Use Host functions to get
1026         types from names.
1027         * ConfigurationLocationCollection.cs: Added find method.
1028         * ConfigInfo.cs: Added Host property.
1029         * InternalConfigurationFactory.cs: The InitForConfiguration calls
1030         are now done in each correspoding configuration.
1031         * SectionGroupInfo.cs: When reading a location element, create
1032         a Configuration object for each path specified in the location.
1033         * ConfigurationElementCollection.cs: Added the CreateNewElementInternal
1034         method, which properly initializes the created element.
1035         * ConfigurationLocation.cs: OpenConfiguration now has to read the
1036         xml contents. It also has to find the correct parent configuration,
1037         if it has not been specified.
1038
1039 2005-06-17  Lluis Sanchez Gual <lluis@novell.com>
1040
1041         * SectionInfo.cs, ConfigInfo.cs, SectionGroupInfo.cs: Minor api fixes.
1042         * ConfigurationPropertyCollection.cs: Added Clear method.
1043         * ContextInformation.cs: Implemented.
1044         * ConfigurationManager.cs: Implemented some missing methods.
1045         Configuration objects are now created through the ConfigurationFactory.
1046         * InternalConfigurationHost.cs: Implementation of IInternalConfigHost
1047         to be used for exe files and machine.config.
1048         * ConfigurationFileMap.cs: Implemented.
1049         * Configuration.cs: Read and write config files using the methods that
1050           IInternalConfigHost provides.
1051         * InternalConfigurationRoot.cs: IInternalConfigRoot stub.
1052         * ExeContext.cs: Implemented.
1053         * AppSettingsSection.cs: Use the KeyValueConfigurationCollection
1054         collection to store values.
1055         * KeyValueConfigurationElement.cs: Implemented.
1056         * KeyValueConfigurationCollection.cs: Implemented.
1057         * InternalConfigurationFactory.cs: An implementation of 
1058         IInternalConfigConfigurationFactory.
1059         * ConfigurationPropertyAttribute.cs: Added missing attributes.
1060         * ExeConfigurationFileMap.cs: Implemented.
1061
1062 2005-06-15  Lluis Sanchez Gual <lluis@novell.com>
1063
1064         * ConfigurationElement.cs, ConfigurationErrorsException.cs
1065         SectionInfo.cs, ConnectionStringSettingsCollection.cs,
1066         ConfigurationPropertyCollection.cs, ProtectedConfigurationProvider.cs,
1067         ConfigurationSection.cs, NonEmptyStringConfigurationProperty.cs,
1068         ConfigurationElementCollectionType.cs, Configuration.cs, 
1069         ConnectionStringSettings.cs, ConfigurationProperty.cs,
1070         ConfigurationLocationCollection.cs, TimeSpanConfigurationProperty.cs,
1071         ConfigurationAllowDefinition.cs, ConfigInfo.cs,
1072         ConfigurationSectionGroupCollection.cs, AppSettingsSection.cs,
1073         ProviderSettingsCollection.cs, IntegerConfigurationProperty.cs,
1074         SectionGroupInfo.cs, ConfigurationUserLevel.cs,
1075         ConnectionStringsSection.cs, ConfigurationPropertyAttribute.cs,
1076         ConfigurationLocation.cs, ConfigurationSectionCollection.cs,
1077         ConfigurationSectionGroup.cs, RuntimeOnlySection.cs,
1078         ProviderSettings.cs: 
1079                 Track API changes.
1080         
1081         * ConfigurationElementCollection.cs: Implemented support for Basic
1082         collection type. Other fixes.
1083         
1084         * ConfigurationPropertyFlags.cs: Renamed to ConfigurationPropertyOptions.
1085         * ConfigurationUpdateMode.cs: Renamed to ConfigurationSaveMode.
1086         
1087         * SectionInformation.cs, ConfigurationAllowExeDefinition.cs
1088         ConfigurationManager.cs, ConfigurationSaveMode.cs,
1089         ConfigurationValidatorAttribute.cs, ProtectedConfigurationSection.cs,
1090         ConfigurationValidatorBase.cs, ConfigurationPropertyOptions.cs:
1091                 New files.
1092         
1093         * ConfigurationValidationAttribute.cs: Removed.
1094         
1095         * ProviderBase.cs: Moved to System.dll.
1096
1097 2005-06-14  Lluis Sanchez Gual <lluis@novell.com>
1098
1099         * AppSettingsSection.cs, ConfigInfo.cs, Configuration.cs
1100         ConfigurationAllowDefinition.cs, ConfigurationElement.cs
1101         ConfigurationElementCollection.cs, ConfigurationElementCollectionType.cs
1102         ConfigurationLocation.cs, ConfigurationLocationCollection.cs
1103         ConfigurationProperty.cs, ConfigurationPropertyAttribute.cs
1104         ConfigurationPropertyCollection.cs, ConfigurationPropertyFlags.cs
1105         ConfigurationSection.cs, ConfigurationSectionCollection.cs
1106         ConfigurationSectionGroup.cs, ConfigurationSectionGroupCollection.cs
1107         ConfigurationUpdateMode.cs, ConfigurationUserLevel.cs
1108         ConfigurationValidationAttribute.cs, ConnectionStringsSection.cs
1109         ConnectionStringSettingsCollection.cs, ConnectionStringSettings.cs
1110         IntegerConfigurationProperty.cs, NonEmptyStringConfigurationProperty.cs
1111         NonEmptyStringFlags.cs, PathLevel.cs, ProtectedConfigurationProvider.cs
1112         ProviderBase.cs, ProviderSettings.cs, ProviderSettingsCollection.cs
1113         RuntimeOnlySection.cs, SectionInfo.cs, SectionGroupInfo.cs
1114         TimeSpanConfigurationProperty.cs, TimeSpanPropertyFlags.cs
1115         TimeSpanSerializedFormat.cs:
1116
1117         Moved from the System assembly.