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