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