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