005312a358f6399975f73e80cd19079de77b583f
[mono.git] / mcs / class / System.Configuration / System.Configuration / ChangeLog
1 2010-07-27  Atsushi Enomoto  <atsushi@ximian.com>
2
3         * ConfigurationPropertyCollection.cs, PropertyInformation.cs:
4           add null check to detect bogus configuration early.
5
6 2010-01-09  Marek Habersack  <mhabersack@novell.com>
7
8         * ConfigurationLocation.cs: trailing / characters are removed from
9         the path.
10
11         * Configuration.cs: instances created for locations inherit
12         ConfigPath from their containing document.
13         Host.GetConfigPathFromLocationSubPath must be called with current
14         instance's configPath, not LocationConfigPath.
15         Locations are sought for using paths relative to the current
16         instance's configPath, not to the root path.
17         All of the above is part of fix for bug #568441
18
19 2009-12-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
20
21         * SectionInformation.cs: ConfigSource should never be null, but empty.
22         Also, the Type property should throw an argument exception if the
23         new value is null or empty.
24         Fixes #458185.
25
26 2009-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
27
28         * Configuration.cs: make this work again with bundled configuration
29         files. Fixes bug #495957. Patch from Tor Lillqvist.
30
31 2009-07-17 Gonzalo Paniagua Javier <gonzalo@novell.com>
32
33         * ConfigurationElement.cs: don't skip xml nodes when reading 2
34         ConfigurationElement in a row. Patch by Greg Smolyn that fixes bug
35         #521231.
36
37 2009-07-15  Marek Habersack  <mhabersack@novell.com>
38
39         * Configuration.cs: explicitly flush the stream when writing XML
40         data. Part of fix for bug #522017
41
42 2009-07-14  Marek Habersack  <mhabersack@novell.com>
43
44         * ConfigurationSaveEventArgs.cs, ConfigurationSaveEventHandler.cs:
45         added
46
47         * Configuration.cs: added two internal events - SaveStart and
48         SaveEnd. They are used by System.Web's configuration system to
49         suppress application reloads when configuration is modified and
50         saved from within a web application. It is necessary to use events
51         since there is no guarantee the web application will use
52         WebConfigurationManager (and thus WebConfigurationHost) for
53         writing.
54
55 2009-06-08  Marek Habersack  <mhabersack@novell.com>
56
57         * ConfigurationLocation.cs: if the path passed to constructor
58         starts with any of ' ' '.' '/' or '\', throw an exception. Fixes
59         bug #510735
60
61 2008-12-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
62
63         * Configuration.cs: don't try to open the file if we know it does not
64         exist. Also, don't hide the actual exception in case there's a problem
65         opening the configuration file.
66
67 2008-11-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
68
69         * ConfigurationManager.cs: the config file name is arbitrary.
70         (Standalone test t46)
71
72 2008-11-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
73
74         * ConfigurationManager.cs: when we're dealing with an EXE hosted
75         application, the configuration file is the one for the AppDomain,
76         otherwise we might try to get a config file for a dll. Fixes the
77         regression in 2.0 sys.config.
78
79 2008-07-09  Marek Habersack  <mhabersack@novell.com>
80
81         * ConfigurationManager.cs: implemented a work-around for
82         OpenExeConfiguration ("") not working with ASP.NET apps properly.
83
84 2008-07-07  Rodrigo Kumpera  <rkumpera@novell.com>
85
86         * ConfigurationManager.cs: Return the right path if the calling assembly is
87         not null. This happens when ConfigurationSession::GetRuntimeObject() is
88         called, SectionHandler != null and the handler itself calls
89         OpenExeConfigurationInternal ("").
90
91 2008-07-07  Rodrigo Kumpera  <rkumpera@novell.com>
92
93         * ClientConfigurationSystem.cs:
94         * ConfigurationManager.cs: Reaply the patch from Gert.
95         This change doesn't contain any fix to to not clutter
96         the commit history.
97
98 2008-07-07  Rodrigo Kumpera  <rkumpera@novell.com>
99
100         * ClientConfigurationSystem.cs:
101         * ConfigurationManager.cs: The previous patch since it
102         causes a regression. It will remain reverted until we figure
103         out what's wrong and how to fix it.
104
105 2008-07-02  Gert Driesen  <drieseng@users.sourceforge.net>
106
107         * ClientConfigurationSystem.cs: Moved logic for defaulting to
108         configuration file of AppDomain to OpenExeConfigurationInternal.
109         * ConfigurationManager.cs (OpenExeConfigurationInternal):
110         Allow calling_assembly and exePath to be null. When userLevel is None,
111         default to configuration file of AppDomain if exePath is null or empty.
112         When exePath is specified, resolve it to absolute path and throw
113         ConfigurationErrorsException if exePath does not exist and add
114         .config extension to get config file name if exePath does exist.
115
116 2008-06-27  Atsushi Enomoto  <atsushi@ximian.com>
117
118         * SectionInfo.cs, Configuration.cs, ConfigInfo.cs,
119           SectionGroupInfo.cs :
120           eliminate XmlTextReader, first stage.
121
122 2008-06-27  Atsushi Enomoto  <atsushi@ximian.com>
123
124         * ConfigurationErrorsException.cs : recover from
125           silly change that tries to prevent debuggin by
126           decreasing error location information.
127
128 2008-06-26  Gert Driesen  <drieseng@users.sourceforge.net>
129
130         * ConfigurationElement.cs: Use ConfigurationErrorsException instead of
131         ConfigurationException, and pass reader to ConfigurationErrorsException
132         ctor to allow for file/linenumber info in exception message.
133         * ConfigurationErrorsException.cs: Removed local bareMessage field, and
134         use base.BareMessage field instead. Fixed Message property to only add
135         filename if not null or zero-length string, and only add line if not
136         zero. In GetFilename/GetLineNumber overloads, only try to get info if
137         node/reader implements IConfigErrorInfo.
138         * ConfigurationSection.cs: Use ConfigXmlTextReader instead of
139         XmlTextReader to allow for file/linenumber info in exception messages.
140         * ConfigXmlTextReader.cs: Added XmlTextReader that implements
141         IConfigErrorInfo.
142         * ConfigurationLocation.cs: Use ConfigXmlTextReader instead of
143         XmlTextReader to allow for file/linenumber info in exception messages.
144         * ClientConfigurationSystem.cs: Perform lazy initialization and
145         wrap exceptions in ConfigurationErrorsException. Fixes standalone test
146         t28.
147         * Configuration.cs: Use ConfigXmlTextReader instead of XmlTextReader
148         to allow for file/linenumber info in exception messages.
149         * ConfigInfo.cs: Fixed ThrowException to use file/number info available
150         in XmlTextReader for exception message.
151         * AppSettingsSection.cs: Use ConfigXmlTextReader instead of
152         XmlTextReader to allow for file/linenumber info in exception messages.
153
154 2008-06-19  Jb Evain  <jbevain@novell.com>
155
156         * ConfigurationPermissionAttribute.cs (CreatePermission): implement.
157
158 2008-05-28  Marek Habersack  <mhabersack@novell.com>
159
160         * Configuration.cs: set the ConfigContext when getting
161         and instance of a section. Fix for bug #325128.
162
163         * ConfigurationSection.cs: added an internal property -
164         ConfigContext used to supply the HttpContext to the Create
165         method of SectionHandler when called from GetRuntimeObject.
166         Fix for bug #325128.
167
168         * InternalConfiguationHost.cs: changed CreateDeprecatedConfigContext
169         to return null rather than throwing a NotImplementedException.
170         Fix for bug #325128.
171
172         * All patches above contributed by James Fitzsimons <james.fitzsimons@gmail.com>,
173           thanks!
174
175 2008-05-18  Sebastien Pouliot  <sebastien@ximian.com>
176
177         * SectionGroupInfo.cs: Use String.IsNullOrEmpty inside 2.0 code.
178         [Found using Gendarme]
179
180 2008-05-11  Roei Erez  <roeie@mainsoft.com>
181
182         * SectionGroupInfo.cs: fix loading a SectionGroup without sections as childern.
183
184 2008-05-05  Gonzalo Paniagua Javier <gonzalo.mono@gmail.com>
185
186         * ConfigurationElement.cs: don't fail when a mandatory property is a
187         configuration element itself.
188
189 2008-04-30  Marek Habersack  <mhabersack@novell.com>
190
191         * ConfigurationElement.cs: HasLocalModifications considers a
192         property modifed locally if its origin is SetHere and it's been
193         marked as modified.
194
195 2008-03-20  Igor Zelmanovich  <igorz@mainsoft.com>
196
197         * Configuration.cs:
198         * ConfigurationElement.cs:
199         implement EvaluationContext property.           
200
201 2008-03-01  Marek Habersack  <mhabersack@novell.com>
202
203         * SectionInformation.cs: added an internal property -
204         ConfigFilePath, used when deserializing a section in
205         ConfigurationSection.GetRuntimeObject.
206
207         * Configuration.cs: set SectionInformation.ConfigFilePath when
208         getting an instance of a section.
209
210         * ConfigurationSection.cs: support the 'configSource' attribute
211         when section is read through GetRuntimeObject.
212
213 2008-02-21  Marek Habersack  <mhabersack@novell.com>
214
215         * Configuration.cs: if the section being deserialized uses the
216         configSource attribute, call the section's DeserializeConfigSource
217         method.
218
219         * SectionInfo.cs: WriteData takes care of writing the section data
220         to the configSource file, if any.
221
222         * ConfigurationSection.cs: moved reading of the configSource
223         external data file to a separate internal method,
224         DeserializeConfigSource. Section's source config file path is now
225         used to find the configSource.
226         SerializeSection now doesn't write the section content to the
227         passed writer if configSource was used. Writing of the section
228         data is now done in SectionInfo.
229
230         * ConfigurationElement.cs: added a new method -
231         HasLocalModifications which returns true of any of the element
232         properties have been set locally on that element.
233
234 2008-02-20  Marek Habersack  <mhabersack@novell.com>
235
236         * ConfigurationSection.cs: support the "configSource" attribute
237         when deserializing a section. Contents of the file (if it exists)
238         replaces the previous section contents.
239
240         * ConfigurationElement.cs: ignore the "configSource" attribute if we're a
241         ConfigurationSection instance.
242         HasValues () returns true only if any of the properties has the
243         origin set to SetHere.
244
245 2008-02-07  Konstantin Triger <kostat@mainsoft.com>
246
247         * ClientConfigurationSystem.cs: performance: refactor out the Configuration
248                 object construction from GetSection() to the ctor.
249
250 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
251
252         * ConfigurationElement.cs: Allow non-public constructors. Fixes #353554.
253
254         * PropertyInformation.cs: Allow non-public constructors. Fixes #353557.
255
256         * ConfigurationElement.cs: Consider non-public properties as well. Fixes
257         #353553.
258
259 2008-01-12  Sebastien Pouliot  <sebastien@ximian.com>
260
261         * ConfigurationLocationCollection.cs: Avoid infinite recursion. 
262         Found using Gendarme.
263
264 2007-12-25  Konstantin Triger <kostat@mainsoft.com>
265
266         * KeyValueInternalCollection.cs: properly override NameValueCollection
267                 to support interop with it.
268
269 2007-12-25  Konstantin Triger <kostat@mainsoft.com>
270
271         * ConfigurationElement.cs:
272                 1. typo - pass the correct property to Attribute.GetCustomAttribute.
273                 2. Pass oroginal exception as inner.
274
275 2007-12-05  Marek Habersack  <mhabersack@novell.com>
276
277         * ConfigurationElement.cs: some property values may be null
278         objects in GetHashCode.
279
280 2007-11-23  Marek Habersack  <mhabersack@novell.com>
281
282         * ConfigurationElementCollection.cs: ThrowOnDuplicate returns true
283         if the collection is one of the AddRemoveClearMap or
284         AddRemoveClearMapAlternate types.
285
286 2007-11-15  Atsushi Enomoto  <atsushi@ximian.com>
287
288         Part of fix for bug #323708.
289         * ConfigurationSection.cs : in GetRuntimeObject(), take parent
290           section instance into consideration.
291         * SectionInformation.cs : to make it possible, GetParentSection()
292           should be implemented.
293         * Configuration.cs : to make it possible, GetSectionInstance()
294           should set parent section on its SectionInformation. It used to
295           just steal parent's xml when its own xml does not exist, but
296           it now blocks correct configuration retrieval.
297
298 2007-11-15  Atsushi Enomoto  <atsushi@ximian.com>
299
300         * SectionGroupInfo.cs : remove extra StringBuilder creation.
301
302 2007-11-14  Atsushi Enomoto  <atsushi@ximian.com>
303
304         * Configuration.cs : (Save) when the given file path is relative
305           it failed to create directory. Fixed standalone test t25/t26.
306         * InternalConfigurationHost.cs : pass userLevel to create a host
307           instance.
308
309 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
310
311         * InternalConfigurationHost.cs : when the streamName is for
312           machine.config, try get_bundled_machine_config() icall first.
313           This hopefully implements the requested feature in bug #325022.
314         * Configuration.cs : added comment.
315
316 2007-08-31  Gert Driesen  <drieseng@users.sourceforge.net>
317
318         * ConfigurationManager.cs: Fixed line endings. Avoid warning by
319         changing accessibility of ChangeConfigurationSystem to internal.
320         * Configuration.cs: Fixed compiler warnings.
321         * DpapiProtectedConfigurationProvider.cs: Fixed line endings.
322
323 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
324
325         * ConfigurationManager.cs : To open exe configuration, use 
326           GetEntryAssembly() first, and GetCallingAssembly() only when
327           it was not found. Should fix bug #82071.
328
329 2007-06-21  Atsushi Enomoto  <atsushi@ximian.com>
330
331         * Configuration.cs, InternalConfigurationHost.cs :
332           configuration file to write might be given as an absolute path,
333           where the ancestor directories may not exist.
334
335 2007-06-20  Atsushi Enomoto  <atsushi@ximian.com>
336
337         * ConfigurationManager.cs : in OpenExeConfiguration() and
338           OpenMappedExeConfiguration(), take userLevel into consideration.
339         * InternalConfigurationHost.cs : consider ConfigurationUserLevel and
340           use correct config map file in InitForConfiguration().
341
342 2007-06-18  Atsushi Enomoto  <atsushi@ximian.com>
343
344         * ClientConfigurationSystem.cs : do not asume GetEntryAssembly()
345           returns non-null. Patch by Patrick Perry.
346
347 2007-06-13  Atsushi Enomoto  <atsushi@ximian.com>
348
349         * ConfigurationElement.cs : SerializeToXmlElement() should be
350           called regardless of HasValues() return value, especially since
351           it could be overriden (e.g. in SettingsValueElement).
352
353 2007-06-13  Atsushi Enomoto  <atsushi@ximian.com>
354
355         * ConfigurationSectionGroup.cs
356           Configuration.cs : ConfigurationSectionGroup must be initialized
357           at least when being added to a collection.
358
359 2007-06-12  Vladimir Krasnov  <vladimirk@mainsoft.com>
360
361         * ConfigurationElement.cs: refactored GetKeyProperties and
362         GetDefaultCollection methods, map should not be used here, Properties
363         will do instead. Refactored ElementMap class
364         * ConfigurationElementCollection.cs: fixed InitFromProperty, GetMap()
365         should not be called here
366         * ElementInformation.cs: fixed Properties, moved to ctor to be thread
367         safe
368         * PropertyInformation.cs: members assigned readonly modifier
369
370 2007-05-30  Marek Habersack  <mhabersack@novell.com>
371
372         * SectionGroupInfo.cs: <location> elements are case-insensitive
373         and the same 'path' attribute may be used only once.
374
375         * ConfigurationLocationCollection.cs: Find should be
376         case-insensitive for all targets, not just TARGET_JVM.
377
378 2007-05-17 Igor Zelmanovich <igorz@mainsoft.com>
379
380         * Configuration.cs: FilePath implemented according to MSDN:
381         If the value for this FilePath property represents a merged view and 
382         no actual file exists for the application, the path to the parent 
383         configuration file is returned.
384
385 2007-05-15 Igor Zelmanovich <igorz@mainsoft.com>
386
387         * Configuration.cs:
388         * ConfigurationLocation.cs:
389         implemented EvaluationContext property.         
390
391 2007-05-15 Igor Zelmanovich <igorz@mainsoft.com>
392
393         * ConfigurationLocationCollection.cs: for TARGET_JVM only:
394         location path is case-insensitive.
395                 
396 2007-05-15  Marek Habersack  <mhabersack@novell.com>
397
398         * ConfigurationElement.cs: added value validation on
399         deserialization from the config file.
400
401 2007-05-14 Igor Zelmanovich <igorz@mainsoft.com>
402
403         * ConfigurationElement.cs: when attribute value cannot be parsed,
404         ConfigurationErrorException is thrown.
405                 
406 2007-05-09 Igor Zelmanovich <igorz@mainsoft.com>
407
408         * ConfigurationManager.cs:
409         added MonoLimitation attribute for TARGATE_JVM. 
410                 
411 2007-05-08 Igor Zelmanovich <igorz@mainsoft.com>
412
413         * ConnectionStringSettingsCollection.cs: removed 'new' keyword, cause 
414         property doesn't hide any inherit property.
415
416 2007-04-24  Atsushi Enomoto  <atsushi@ximian.com>
417
418         * InternalConfigurationHost.cs : machine configuration covers all
419           ConfigurationAllowDefinition values.
420
421 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
422
423         * ConfigurationSectionCollection.cs : GetEnumerator() should return
424           IEnumerator for the items, not keys.
425         * ConfigurationProperty.cs : more helpful type mismatch message.
426
427 2007-04-16  Marek Habersack  <mhabersack@novell.com>
428
429         * SectionGroupInfo.cs: another (and final, hopefully) fix for bug
430         #81321 and several other related issues that were discovered by
431         the way. Thanks to Atsushi for help with XmlReader!
432
433 2007-04-15  Marek Habersack  <mhabersack@novell.com>
434
435         * SectionGroupInfo.cs: another incarnation of the fix for bug
436         #81321.
437
438 2007-04-12  Marek Habersack  <mhabersack@novell.com>
439
440         * SectionGroupInfo.cs: a better fix for #81321
441
442 2007-04-10  Marek Habersack  <mhabersack@novell.com>
443
444         * SectionGroupInfo.cs: make sure empty sections with the
445         short-circuit tag ends (<section/>) don't make the process loop
446         endlessly. Fixes bug #81321.
447
448 2007-03-22  Konstantin Triger <kostat@mainsoft.com>
449
450         * ConfigInfo.cs: should be able instantiate types with private ctors.
451
452 2007-03-19  Vladimir Krasnov  <vladimirk@mainsoft.com>
453
454         * ConfigurationSectionCollection.cs,
455         * ConfigurationSectionGroupCollection.cs,
456         * PropertyInformationCollection.cs, 
457         * SectionGroupInfo.cs: used StringComparer.Ordinal instead of
458         OrdinalComparer
459
460 2007-03-15  Vladimir Krasnov  <vladimirk@mainsoft.com>
461
462         * ConfigurationSectionCollection.cs,
463         * ConfigurationSectionGroupCollection.cs,
464         * PropertyInformationCollection.cs, 
465         * SectionGroupInfo.cs: these collections should be based on case
466         insensitive NameObjectCollectionBase
467         * added OrdinalComparer.cs for use in NameObjectCollectionBase
468
469 2007-02-07  Atsushi Enomoto  <atsushi@ximian.com>
470
471         * SectionInfo.cs : don't stop at restartOnExternalChanges attribute.
472
473 2007-01-16  Konstantin Triger <kostat@mainsoft.com>
474
475         * ConfigurationElement.cs: ignore properties with null or empty name.
476
477 2007-01-16  Konstantin Triger <kostat@mainsoft.com>
478
479         * ConfigurationElement.cs: Try to deserilalize an unrecognized element by
480                 current element, and only if failed delegate to default collection.
481
482 2006-12-27  Vladimir Krasnov  <vladimirk@mainsoft.com>
483
484         * ConfigurationElementCollection.cs: fixed BaseAdd, looking for
485         identical element when collection type is not alternate
486
487 2006-12-27  Vladimir Krasnov  <vladimirk@mainsoft.com>
488
489         * ConnectionStringSettingsCollection.cs: made connection string key
490         case insensitive
491
492 2006-12-27  Atsushi Enomoto  <atsushi@ximian.com>
493
494         * ConfigurationElementCollection.cs : fixed BaseAdd() with
495           throwIfExists to not raise an error for identical element
496           but for different element which shares the same key. Fix by
497           Konstantin Triger.
498
499 2006-12-21  Vladimir Krasnov  <vladimirk@mainsoft.com>
500
501         * ConfigurationProperty.cs: fixed DefaultValue of type Enum
502
503 2006-12-10  Konstantin Triger <kostat@mainsoft.com>
504
505         * ConfigurationElement.cs: Delegate parameter checking and default
506                 assigning to Configuratin property.
507         * ConfigurationProperty.cs:
508                 Ensure the TypeConvert and Validator always exist.
509                 Ensure the primitive types are properly initialized.
510
511 2006-12-09  Vladimir Krasnov  <vladimirk@mainsoft.com>
512
513         * ConfigurationElementCollection.cs
514         * ConfigurationRemoveElement.cs: fixed key for <remove> element in
515         ConfigurationRemoveElement class
516
517 2006-11-28  Marek Habersack  <grendello@gmail.com>
518
519         * SectionGroupInfo.cs: Implement merging of section groups with
520         the same names and parents.
521
522         * ConfigInfo.cs: Add an abstract method for merging sections.
523
524         * SectionInfo.cs: Add implementation of an abstract base method
525
526 2006-08-23  Konstantin Triger <kostat@mainsoft.com>
527
528         * SectionInfo.cs: refactoring - remove unneeded bool? usage.
529         
530 2006-11-05  Vladimir Krasnov  <vladimirk@mainsoft.com>
531
532         * added: ConfigurationRemoveElement.cs, common element for <remove>
533         * ConnectionStringSettingsCollection.cs: reverted last fix for
534         <remove> element
535         * ConfigurationElementCollection.cs: fixed the way that
536         OnDeserializeUnrecognizedElement method handles <remove> element
537
538 2006-11-02  Vladimir Krasnov  <vladimirk@mainsoft.com>
539
540         * ConfigurationElement.cs: typo in DefaultCollectionProperty
541         method
542
543 2006-10-30  Joel Reed <joel.reed@ddiworld.com>
544
545         * NameValueConfigurationCollection.cs: Implement the Properties
546         property. 
547
548 2006-08-23  Konstantin Triger <kostat@mainsoft.com>
549
550         * ConfigurationLocation.cs: do not read root element, correctly close stream.
551         * Configuration.cs: use ReadData for nested content to throw if location
552                 elements are encounterd.
553                 In constructor taking parent Configurqation: do not call Init and so avoid
554                 rereading config file.
555
556 2006-09-05  Vladimir Krasnov  <vladimirk@mainsoft.com>
557
558         * NameValueConfigurationElement.cs: fixed functionality
559         * ConfigurationElementCollection.cs,
560         ConnectionStringSettingsCollection.cs: fixed <remove> element in
561         connectionStrings section
562
563 2006-08-23  Konstantin Triger <kostat@mainsoft.com>
564
565         * ConfigurationSection.cs: for net 1.1 SectionHandlers: return null in case
566                 RawXml is null, as net 1.1 does.
567
568 2006-08-17  Vladimir Krasnov  <vladimirk@mainsoft.com>
569
570         * ConfigurationFileMap.cs: added TARGET_JVM on not supported members
571         in grasshopper
572
573 2006-07-07  Atsushi Enomoto  <atsushi@ximian.com>
574
575         * ConfigurationManager.cs : OpenExeConfiguration(null) should still
576           work. This is required for embedded scenario.
577
578 2006-06-10  Atsushi Enomoto  <atsushi@ximian.com>
579
580         * SectionGroupInfo.cs : skip <dllmap> in configuration.
581
582 2006-05-14  Atsushi Enomoto  <atsushi@ximian.com>
583
584         * ConfigurationManager.cs: since ConfigurationSystem is different
585           for web.config, cast from ConfigurationSection to runtime object
586           should be done at GetSection().
587           This really fixed bug #78372.
588
589 2006-05-12  Atsushi Enomoto  <atsushi@ximian.com>
590
591         * Configuration.cs : configPath is null for machine.config, so don't
592           use it. Use streamName instead. To my understanding, this should
593           fix bug #78372.
594
595 2006-05-10  Atsushi Enomoto  <atsushi@ximian.com>
596
597         * ConnectionStringSettings.cs : it seems that "name" property
598           could be null i.e. there is no StringValidator.
599         * StringValidator.cs : allow null.
600
601 2006-05-10  Atsushi Enomoto  <atsushi@ximian.com>
602
603         * ConfigurationManager.cs : use GetCallingAssembly() instead of
604           GetEntryAssembly() which possibly returns null (e.g. nunit) in
605           OpenExeConfiguration(). Several nunit test failures are gone.
606
607 2006-05-10  Atsushi Enomoto  <atsushi@ximian.com>
608
609         * ConnectionStringSettings.cs : oops, this API fix broke standalone
610           test.
611
612 2006-05-10  Atsushi Enomoto  <atsushi@ximian.com>
613
614         * ConfigurationElement.cs,
615           ConfigurationErrorsException.cs,
616           ConfigurationUserLevel.cs,
617           ConfigurationPropertyOptions.cs,
618           ConnectionStringSettings.cs : assorted minor corcompare fixes.
619
620 2006-05-10  Atsushi Enomoto  <atsushi@ximian.com>
621
622         * Configuration.cs : some kind of refactoring is absolutely needed
623           here. Reuse RawXml from parentSection when data was not available
624           on current section. This should fix bug #78353.
625
626 2006-05-10  Atsushi Enomoto  <atsushi@ximian.com>
627
628         * ConfigurationElement.cs,
629           DefaultSection.cs :
630           in some cases RawXml was set null string, so skip such cases.
631         * Configuration.cs : support IConfigurationSectionHandler here.
632         * ConfigurationManager.cs : GetSection() now returns name value
633           collection, not a section.
634         * ConfigurationSection.cs : added SectionHandler for
635           IConfigurationSectionHandler support, and use its Create() in
636           GetRuntimeObject().
637         * ClientConfigurationSystem.cs :
638           use GetRuntimeObject() in GetSection(). Thus now
639           ConfigurationManager.GetSection() returns a runtime object.
640           Fixed bug #78337.
641
642 2006-04-28  Atsushi Enomoto  <atsushi@ximian.com>
643
644         * SectionGroupInfo.cs :
645           sections which are defined in sectionGroups could be directly
646           referenced, so search corresponding section recursively.
647         * DefaultSection.cs : It does not reject unrecognized contents.
648
649 2006-04-26  Chris Toshok  <toshok@ximian.com>
650
651         * SectionInformation.cs (.ctor): add MonoTODO about the default
652         value for require_permission.
653         (RequirePermission): implement the getter/setter for this so
654         Atsushi's previous commit doesn't break everything :)
655
656 2006-04-26  Atsushi Enomoto  <atsushi@ximian.com>
657
658         * Configuration.cs,
659           SectionInfo.cs : added support for "requirePermission" attribute
660           in "section" element. This fixes bug #77957.
661
662 2006-04-25  Chris Toshok  <toshok@ximian.com>
663
664         * ConfigurationElementCollection.cs (Reset): it makes no sense to
665         pass the typename to CreateNewElementInternal.  the argument is
666         the elementname. pass null instead.
667         (Unmerge): same.
668
669 2006-02-01  Atsushi Enomoto  <atsushi@ximian.com>
670
671         * ConfigurationElement.cs : ListErrors() and SetPropertyValue()
672           are protected.
673         * ConfigurationSection.cs : the .ctor() is protected.
674         * ConfigurationElementCollection.cs : CollectionType is public.
675           Count and BaseAdd() are not virtual.
676         * ConfigurationPropertyCollection.cs : Count is not virtual.
677
678 2006-02-01  Chris Toshok  <toshok@ximian.com>
679
680         * ConfigurationElement.cs: revert the patch that stores and writes
681         out xmlns attributes for all elements.
682
683         * ClientConfigurationSystem.cs: SupportsUserConfig == false.
684
685         * AppSettingsSection.cs (GetRuntimeObject): call col.SetReadOnly()
686         only if SupportsUserConfig != true.
687
688         * ConfigurationManager.cs (ConfigurationSystem): add a property
689         like ConfigurationFactory, and use it instead of the private field
690         throughout.
691
692 2006-01-26  Chris Toshok  <toshok@ximian.com>
693
694         * SectionGroupInfo.cs (ReadContent): handle "location" (seemingly)
695         correctly.
696
697         * InternalConfigurationRoot.cs: misc logical additions.  still
698         isn't useful.
699
700         * ConfigurationManager.cs (OpenExeConfigurationInternal): throw an
701         exception if both calling_assembly and exePath are null.  Allow
702         the exePath to be a path to a config file as well, checking to see
703         if it ends in .config before appending.
704         (OpenExeConfiguration): stop blindly passing
705         Assembly.GetCallingAssembly.  I'm assuming this will likely break
706         .dll.config usage.  need to investigate that (and write more unit
707         tests.)
708         (GetSection): call configSystem.GetSection.
709         (RefreshSection): call configSystem.RefreshSection.
710         (ChangeConfigurationSystem): modeled after the
711         ConfigurationSettings System.Web hack - allow
712         WebConfigurationManager to replace the current
713         IInternalConfigSystem.
714
715         * InternalConfigurationHost.cs (InternalConfigurationHost): make
716         abstract, and remove all the NotImplenmentedException's.
717
718         * ConfigurationElement.cs (DeserializeElement): store off the xml
719         namespace if there is one.
720         (SerializeElement): write out the namespace if there was one.
721
722         * ClientConfigurationSystem.cs: new class, based on some stack
723         traces I've seen in tests.  Kinda (well, not *kinda*..) hacky.
724
725         * Configuration.cs (NamespaceDeclared): implement.
726         (Load): don't swallow all exceptions, just the ones raised when we
727         open the stream for reading.
728         (ReadConfigFile): handle xmlns.
729
730 2006-01-25  Chris Toshok  <toshok@ximian.com>
731
732         * ConfigInfo.cs (ThrowException): throw a
733         ConfigurationErrorsException, not a ConfigurationException.
734
735         * SectionGroupInfo.cs (ReadContent): throw an exception
736         unconditionally if we see a <location>.  they aren't valid in
737         section groups.
738
739 2006-01-25  Chris Toshok  <toshok@ximian.com>
740
741         * KeyValueInternalCollection.cs: don't use a nested collection,
742         just defer to our base class.  This fixes usage of
743         ConfigurationManager.AppSettings.Keys.
744
745 2006-01-13  Chris Toshok  <toshok@ximian.com>
746
747         * AppSettingsSection.cs (GetRuntimeObject): only access
748         Settings[key] once per iteration.
749
750 2006-01-09  Chris Toshok  <toshok@ximian.com>
751
752         * ConfigurationManager.cs (AppSettings): just return
753         AppSettingsSection.GetRuntimeObject() here.
754
755         * AppSettingsSection.cs: fix the "file" property to match dumper
756         output.
757         (GetRuntimeObject): this returns a KeyValueInternalCollection in
758         MS's implementation.
759
760 2006-01-09  Chris Toshok  <toshok@ximian.com>
761
762         * ElementInformation.cs (Validator): if propertyInfo == null,
763         return a DefaultValidator instance.
764
765 2006-01-09  Chris Toshok  <toshok@ximian.com>
766
767         * AppSettingsSection.cs (.cctor): specify null for
768         validator/converter.
769
770         * ProtectedProviderSettings.cs (.cctor): specify null for
771         validator/converter.
772
773 2006-01-03  Chris Toshok  <toshok@ximian.com>
774
775         * Configuration.cs (SaveAs): open with FileMode.OpenOrCreate so we
776         can save to a new file.
777         (CreateSection): don't bother to set the section information's
778         Name here.  we'll do it in SectionInfo.CreateInstance.
779
780         * ProtectedConfiguration.cs (Section): new static property so we
781         can remove all the GetSection calls.
782         (GetProvider): load a named provider, optionally throwing an
783         exception if it's not found.
784
785         * InternalConfigurationHost.cs (EncryptSection, DecryptSection):
786         make these private interface implementations, and call
787         protectedSection.{EncryptSection,DecryptSection}.
788
789         * ProtectedConfigurationSection.cs (EncryptSection,
790         DecryptSection): add these two calls.  They really shouldn't be
791         here, but I saw them in an MS stack trace and thought "why not?".
792
793         * ConfigurationSection.cs (SectionInformation): don't set
794         attributes here, that's done in SectionInfo.CreateInstance.
795         (DeserializeSection): shoehorn in the decryption stuff here.  It
796         doesn't belong here, and I've added a MonoTODO about it.  It
797         should live someplace like SectionInfo.ReadData (which would make
798         it similar to the encryption stuff in .WriteData).
799
800         * SectionInformation.cs (IsProtected): remove the special flag,
801         just return true if we have a non-null protection_provider.
802         (ProtectSection): do nothing but try to instantiate the named
803         provider.
804         (UnprotectSection): null out protection_provider.
805
806         * DpapiProtectedConfigurationProvider.cs: move the
807         NotSupportedExceptions to Decrypt/Encrypt so we don't bomb out
808         when parsing our machine.config file.
809
810         * RsaProtectedConfigurationProvider.cs: initial implementation.
811         much is missing (OAEP support, key importing, adding/deleting
812         keys), but it can be used.
813
814 2006-01-02  Chris Toshok  <toshok@ximian.com>
815
816         * RsaProtectedConfigurationProvider.cs: implement the
817         CspProviderName and UseOAEP properties..
818
819 2006-01-02  Chris Toshok  <toshok@ximian.com>
820
821         * ProtectedConfigurationSection.cs: flesh this out (and add logic
822         to instantiate providers, based on some of the standalone test
823         exception stack traces.)
824
825         * ProtectedConfiguration.cs: new implementation.
826
827         * ProtectedConfigurationProviderCollection.cs: new
828         implementation.
829
830         * ProtectedProviderSettings.cs: new implementation.
831
832         * ProtectedConfigurationProvider.cs: trim the superclass's name.
833
834         * RsaProtectedConfigurationProvider.cs: stubbed, unimplemented.
835
836         * DpapiProtectedConfigurationProvider.cs: add stubbed
837         implementation that throws NotSupportedException telling people
838         they should be using RsaProtectedConfigurationProvider.
839
840 2006-01-02  Chris Toshok  <toshok@ximian.com>
841
842         * DefaultSection.cs (Properties): implement.
843
844         * IgnoreSection.cs: move from lazily creating the properties
845         collection to sharing a single one across all instances.
846
847         * ConfigurationLockCollection.cs (IsReadOnly): fix compiler warning.
848
849         * ConfigurationElementCollection.cs (BaseAdd) remove logic to
850         remove an old matching element.
851         (BaseGetKey): throw an exception if @index is out of range.
852
853         * SectionInformation.cs (SectionName): just return name, like Name
854         does.. redundant, but it matches tests.
855         (GetRawXml): implement.
856         (SetRawXml): implement.
857
858         * ConfigurationSection.cs (SectionInformation): fill in
859         sectionInformation.Type before returning.
860         (DeserializeSection): save off the raw xml to our
861         SectionInformation.
862
863         * ConfigurationElement.cs (LockItem): implement.
864         (DeserializeElement): add support for the "lockItem" attribute.
865
866 2005-12-16  Chris Toshok  <toshok@ximian.com>
867
868         * ConfigurationLockCollection.cs (Add): only add the name if it's
869         not already there.
870         (IsReadOnly): always return false for the time being, in the
871         non-exceptional case.
872
873 2005-12-15  Chris Toshok  <toshok@ximian.com>
874
875         * ConfigurationElement.cs (LockAllAttributesExcept): implement.
876         (LockAllElementsExcept): implement.
877         (DeserializeElement): handle the built-in attributes (lock* for
878         the time being).
879
880 2005-12-15  Chris Toshok  <toshok@ximian.com>
881
882         * ConfigurationLockCollection.cs (..ctor): don't call Populate.
883         (Populate): nuke.
884         (CheckName): make sure the passes in name is valid for this type
885         of lock collection.
886         (Add): call CheckName, and set is_modified to true.
887         (Clear): set is_modified.
888         (IsReadOnly): add plausable implementation, including exception in
889         the case where the name isn't found.
890         (Remove): set is_modified.
891         (SetFromList): implement.
892         (get_AttributeList): implement.
893         (set_IsModified): add internal setter so we can clear the modified
894         flag.
895
896 2005-12-12  Chris Toshok  <toshok@ximian.com>
897
898         * AppSettingsSection.cs (DeserializeElement): provide rather naive
899         version of the file="" handling.  It's enough to make our tests
900         pass.
901
902 2005-12-11  Chris Toshok  <toshok@ximian.com>
903
904         * ConnectionStringsSection.cs (..cctor): use "" instead of null
905         for the name of the default collection.
906
907         * AppSettingsSection.cs (..cctor): create a property for the
908         default collection.
909         (DeserializeElement): call base.DeserializeElement.
910         (File): index off the property, not the name.
911         (Settings): don't use an private variable here, use
912         base[_propSettings].
913
914         * ConfigurationManager.cs (GetSection): GetEntryAssembly returns
915         null for new app domains.  so deal with this by calling
916         GetCallingAssembly if it's null.  This is probably still wrong but
917         it doesn't NRE in xsp2.
918         (AppSettings): remove MonoTODO.
919         
920         * KeyValueConfigurationElement.cs (..ctor): new method, create the
921         ConfigurationProperty's and the collection here.
922         (.ctor): add internal arg-less ctor.
923         (Key): use keyProp instead of "key".
924         (Value): use vlaueProp instead of "value".
925         (Properties): return our class's properties.
926
927         * KeyValueConfigurationCollection.cs (CreateNewElement): use the
928         arg-less ctor.
929         (GetElementKey): re-enable the BaseIndexOf test.
930
931 2005-12-02  Chris Toshok  <toshok@ximian.com>
932
933         * Configuration.cs (Save): call WriteStartDocument.
934
935         * ConnectionStringSettingsCollection.cs (CreateNewElement): use
936         parameter-less ctor to keep from generating exceptions when using
937         the collection.
938
939 2005-12-02  Chris Toshok  <toshok@ximian.com>
940
941         * ConnectionStringSettings.cs: tabify, fix default values, and add
942         a string validator for "name".
943
944 2005-12-02  Chris Toshok  <toshok@ximian.com>
945
946         * CommaDelimitedStringCollectionConverter.cs (ConvertTo): change
947         the type check away from an exact check for
948         CommaDelimitedStringCollection to an assignable test from
949         StringCollection.  This is due to the fact that AuthorizationRule
950         doesn't create CommaDelimitedStringCollections, for some odd
951         reason.  It uses StringCollections.
952
953         * PropertyInformation.cs (Value): remove the case for
954         IsDefaultCollection - it's not necessary, as the property is an
955         Element.
956
957         * ConnectionStringSettings.cs: fix formatting and remove some
958         #regions.
959
960         * ConnectionStringSettingsCollection.cs: same.
961
962         * ConnectionStringsSection.cs: same.
963
964         * ConfigurationElement.cs (SerializeToXmlElement): don't write the
965         enclosing start/end elements if the elementName is null or "".
966         this fixes the case for the DefaultCollections (at least in the
967         case of connectionStrings).
968
969         * IgnoreSection.cs (Properties): remove the MonoTODO.
970
971         * SectionInfo.cs (WriteData): remove the "<!-- dd -->" output.
972
973 2005-11-28  Chris Toshok  <toshok@ximian.com>
974
975         * ProviderSettings.cs: use ConfigurationProperty's to implement
976         the properties.
977
978 2005-11-24  Chris Toshok  <toshok@ximian.com>
979
980         * ConfigurationProperty.cs (Validate): add internal method.
981
982 2005-11-24  Chris Toshok  <toshok@ximian.com>
983
984         * ConfigurationElement.cs (ElementProperty): make this protected
985         internal virtual instead of public.
986         (SetPropertyValue): add a validator call and a blurb about the
987         code based on information gleaned from tests.
988         (set_Item (string)): call SetPropertyValue in the setter.
989         
990 2005-11-14  Chris Toshok  <toshok@ximian.com>
991
992         * CommaDelimitedStringCollection.cs: reformat things a bit, and
993         flag ToString() as override.
994
995         * DefaultSection.cs: new stubbed out implementation.
996
997         * CommaDelimitedStringCollectionConverter.cs: new implementation.
998
999 2005-11-10  Chris Toshok  <toshok@ximian.com>
1000
1001         * AppSettingsSection.cs (DeserializeElement): stop explicitly
1002         calling Settings.DeserializeElement, as the DefaultCollection
1003         works now.
1004
1005         * ConfigurationElement.cs (DeserializeElement): rework the loop
1006         here so that we actually loop over all the content elements.
1007
1008 2005-11-09  Chris Toshok  <toshok@ximian.com>
1009
1010         * ConfigurationElement.cs: Add support for DefaultCollection
1011         attributes.
1012
1013         * PropertyInformation.cs (PropertyInformation.Value): add case for
1014         IsDefaultCollection.
1015
1016         * SectionGroupInfo.cs (SectionGroupInfo.ReadConfig): when we read
1017         a "type" attribute, make sure the cached System.Type is cleared.
1018
1019 2005-10-25  Chris Toshok  <toshok@ximian.com>
1020
1021         * InfiniteTimeSpanConverter.cs: new implementation.
1022
1023         * InfiniteIntConverter.cs: new implementation.
1024
1025         * GenericEnumConverter.cs: new implementation.
1026
1027         * Configuration.cs: we don't need to check with "is" after we use
1028         "as"..  just check for null-ness.
1029
1030         * KeyValueConfigurationCollection.cs: GetElementKey should throw
1031         NRE if element == null.
1032
1033         * CommaDelimitedStringCollection.cs: raise the correct exceptions
1034         in the read only case, and return null from ToString if there are
1035         0 elements.
1036
1037 2005-10-25  Chris Toshok  <toshok@ximian.com>
1038
1039         * PositiveTimeSpanValidatorAttribute.cs: new implementation.
1040
1041         * PositiveTimeSpanValidator.cs: new implementation.
1042
1043 2005-10-24  Chris Toshok  <toshok@ximian.com>
1044
1045         * TimeSpanSecondsOrInfiniteConverter.cs: new implementation.
1046
1047         * TypeNameConverter.cs: new implementation.
1048
1049         * WhiteSpaceTrimStringConverter.cs: new implementation.
1050
1051 2005-10-24  Chris Toshok  <toshok@ximian.com>
1052
1053         * AppSettingsSection.cs (DeserializeElement, SerializeSection):
1054         split the behavior based on if File == "".  If it is, we do the
1055         default.  otherwise we throw NIE.
1056
1057         * ConnectionStringsSection.cs (DeserializeElement): we shouldn't
1058         need this, but we do until the IsDefaultCollection stuff is fixed.
1059
1060         * ConfigurationElementCollection.cs
1061         (OnDeserializeUnrecognizedElement): for clearElementName, make
1062         sure we have no attributes.
1063
1064         * ConnectionStringSettingsCollection.cs (get_Properties): for now
1065         just chain up to base.Properties.
1066
1067         * ConfigurationElement.cs (ReflectProperties): do the default
1068         value/property type check in a more robust way, using
1069         Convert.ChangeType.
1070
1071 2005-10-24  Chris Toshok  <toshok@ximian.com>
1072
1073         * ConfigurationElement.cs: treat
1074         ConfigurationProperty.NoDefaultValue the same as null when we're
1075         checking the default value's type.  this fixes t13 and 14.
1076
1077         * ConnectionStringsSection.cs (ConnectionStrings): fix the
1078         DefaultValue in the ConfigurationPropertyAttribute.
1079
1080 2005-10-24  Chris Toshok  <toshok@ximian.com>
1081
1082         * KeyValueConfigurationCollection.cs (GetElementKey): sacrifice
1083         one test to get another working.  Return a valid key even if the
1084         element is not in this collection.
1085         (get_ThrowOnDuplicate): return false.
1086
1087         * ConfigurationElementCollection.cs (BaseAdd): if we're adding an
1088         element with the same key, overwrite the old one (remove the old
1089         one after inserting the new one).  Also, re-enable the throwing of
1090         exceptions if ThrowOnDuplicate == true.
1091
1092 2005-10-24  Chris Toshok  <toshok@ximian.com>
1093
1094         * AppSettingsSection.cs (Settings): fix ConfigurationProperty
1095         attribute.
1096
1097         * ProtectedConfigurationSection.cs (Providers): same.
1098
1099 2005-10-12  Chris Toshok  <toshok@ximian.com>
1100
1101         * ConfigurationPermission.cs: flesh out as per tests.
1102
1103 2005-10-11  Chris Toshok  <toshok@ximian.com>
1104
1105         * ConfigurationProperty.cs: don't use null to mean no default
1106         value, use NoDefaultValue.
1107
1108 2005-10-11  Chris Toshok  <toshok@ximian.com>
1109
1110         * KeyValueConfigurationCollection.cs (GetElementKey): duh.
1111         BaseGet calls GetElementKey, so we were hitting an infinite
1112         recursion here.  Use BaseIndexOf instead.
1113
1114 2005-10-07  Chris Toshok  <toshok@ximian.com>
1115
1116         * InternalConfigurationHost.cs: some interface work, adding in the
1117         new methods.
1118
1119         * ConfigurationProperty.cs: remove debug spew.
1120
1121         * Configuration.cs: add NIE'd NamespaceDeclared property.
1122
1123         * ElementInformation.cs: add NIE'd Errors property.
1124
1125         * PropertyInformationCollection.cs: add NIE'd GetObjectData().
1126
1127         * ConfigurationManager.cs: quite a bit of new work here.  Some
1128         definie TODO's still though.
1129
1130 2005-10-07  Chris Toshok  <toshok@ximian.com>
1131
1132         * ConfigurationErrorsException.cs (.ctor): for the (string)
1133         overload, chain up to the base (string) ctor.
1134
1135 2005-10-07  Chris Toshok  <toshok@ximian.com>
1136
1137         * ConfigurationElement.cs (ElementMap.ReflectProperties): make
1138         sure the type of the default value is compatible with that of the
1139         property itself, and throw ConfigurationErrorsException if they
1140         don't match.  Fixes t12.
1141
1142 2005-10-07  Chris Toshok  <toshok@ximian.com>
1143
1144         * ConfigHelper.cs: remove some unused code.
1145
1146         * ConfigurationProperty.cs: disambiguate the ctor we chain to.
1147
1148         * ConfigurationElement.cs (ElementProperty): implement.
1149         (ElementMap.ReflectProperties): make DefaultValidator the default
1150         validator, not null.
1151
1152 2005-10-06  Chris Toshok  <toshok@ximian.com>
1153
1154         * KeyValueConfigurationElement.cs: uncomment out some stuff.
1155         (Properties): just return base.Properties.  Not sure why they
1156         override this, as the base class's implementation passes our test.
1157
1158         * KeyValueConfigurationCollection.cs (Add): for the keyValue
1159         overload, call keyValue.Init as the unit test stack traces
1160         indicates that'9s where it's called.  For the string,string
1161         overload, just call the keyValue overload instead of calling
1162         BaseAdd.
1163         (CreateNewElement): just use the name/value ctor, and specify ""
1164         for each.
1165         (GetElementKey): this function always returns "" for elements that
1166         haven't been added to the collection.  Once theyre added, it seems
1167         to always return keyValue.Key.
1168         (Properties): the unit tests show this returns a 0 length
1169         collection.
1170
1171 2005-10-05  Chris Toshok  <toshok@ximian.com>
1172
1173         * ConfigurationPermissionAttribute.cs: stub out.
1174
1175 2005-10-05  Chris Toshok  <toshok@ximian.com>
1176
1177         * TimeSpanMinutesOrInfiniteConverter.cs: fill in the
1178         implementation.
1179
1180 2005-10-05  Chris Toshok  <toshok@ximian.com>
1181
1182         * TimeSpanSecondsConverter.cs: new implementation.
1183
1184 2005-10-05  Chris Toshok  <toshok@ximian.com>
1185
1186         * TimeSpanMinutesConverter.cs: flesh out implementation.
1187
1188         * ConfigurationConverterBase.cs: make all subclasses work with
1189         strings only, since that's what seems to manifest itself in the
1190         tests.
1191
1192 2005-10-05  Chris Toshok  <toshok@ximian.com>
1193
1194         * ConfigurationLockCollection.cs: add NIE'd AttributeList
1195         property.
1196
1197         * ConfigurationConverterBase.cs: add MonoTODO'd CanConvertFrom and
1198         CanConvertTo methods.
1199
1200         * ConfigurationSectionGroup.cs: add NIE'd IsDeclared property.
1201
1202         * ProtectedConfigurationSection.cs: add NIE'd properties.
1203
1204         * ConfigurationElementCollection.cs: add MonoTODO'd IsReadOnly
1205         and SetReadOnly methods, and have then chain up to the base class.
1206
1207         * KeyValueConfigurationCollection.cs: add the class level
1208         ConfigurationCollectionAttribute, and add a NIE'ed Properties
1209         property.
1210
1211         * ProviderSettingsCollection.cs: add the class level
1212         ConfigurationCollectionAttribute, and add a "new" keyword to the
1213         this property.  Also, nuke the Provider's property.
1214
1215         * SectionInformation.cs: add some NEI'd properties.
1216
1217         * ConfigurationSection.cs (ResetModified): leave the MonoTODO, but
1218         chain up to base class's method instead of throwing NIE.
1219
1220         * ConnectionStringSettingsCollection.cs: add the class-level
1221         ConfigurationCollectionAttribute, and add the unimplemented
1222         Properties property.
1223
1224         * ConfigurationErrorsException.cs: flesh this out, and add a
1225         pragma to disable the obsolete warnings from our base class.
1226
1227         * ProviderSettings.cs: add unimplemented Properties property.
1228
1229         * ConfigurationElement.cs: remove unnecessary
1230         EvaluationInformation.
1231
1232         * InternalConfigurationRoot.cs: add unimplemented IsDesignTime
1233         property.
1234
1235         * ConfigurationProperty.cs: add a missing ctor.
1236
1237         * AppSettingsSection.cs: add missing "override" keyword.
1238
1239         * ConnectionStringsSection.cs: remove override.
1240         
1241         * ConfigurationSectionCollection.cs: AllKeys -> Keys, and add
1242         unimplemented GetObjectData override.
1243
1244         * ConfigurationSectionGroupCollection.cs: same.
1245
1246         * ConfigurationCollectionAttribute.cs: add missing CollectionType
1247         property.
1248
1249 2005-10-05  Chris Toshok  <toshok@ximian.com>
1250
1251         * ConfigurationPermission.cs: new implementation.
1252
1253         * IgnoreSection.cs: new implementation.
1254
1255 2005-10-05  Chris Toshok  <toshok@ximian.com>
1256
1257         * CommaDelimitedStringCollection.cs: new implementation.
1258
1259 2005-10-05  Chris Toshok  <toshok@ximian.com>
1260
1261         * NameValueConfigurationCollection.cs: new implementation.
1262
1263         * NameValueConfigurationElement.cs: new implementation.
1264
1265 2005-10-05  Chris Toshok  <toshok@ximian.com>
1266
1267         * ValidatorCallback.cs: new implementation.
1268
1269         * SubclassTypeValidator.cs, SubclassTypeValidatorAttribute.cs: new
1270         implementation.
1271
1272         * CallbackValidator.cs, CallbackValidatorAttribute.cs: new
1273         implementation.
1274
1275         * RegexStringValidator.cs, RegexStringValidatorAttribute.cs: new
1276         implementation.
1277
1278         * LongValidator.cs, LongValidatorAttribute.cs: new implementation.
1279
1280         * IntegerValidator.cs, IntegerValidatorAttribute.cs: new
1281         implementation.
1282
1283         * DefaultValidator.cs: new implementation.
1284
1285 2005-09-28  Chris Toshok  <toshok@ximian.com>
1286
1287         * ConfigurationElementCollection.cs: more work on the "<clear />"
1288         handling - just skip the element for now.  this causes a failure
1289         in one test ('<clear hi="bye" />' doesn't throw an exception when
1290         it should), but it succeeds for collections that have required
1291         attributes.
1292
1293         * ConnectionStringSettings.cs: providerName isn't a required
1294         attribute.
1295
1296         * AppSettingsSection.cs (.cctor): initialize our "file" Property.
1297         (File): implement.
1298         (Properties): fix.
1299         (GetRuntimeObject): call the base class method instead of just
1300         returning "this".
1301
1302         * ConnectionStringsSection.cs: Add a hacky DeserializeElement
1303         method here (that isn't in MS's) for the time being so we actually
1304         deserialize our collection.
1305
1306 2005-09-28  Chris Toshok  <toshok@ximian.com>
1307
1308         * KeyValueInternalCollection.cs: found this by way of a stack
1309         trace in one of the tests.  A NameValueCollection that wraps a
1310         KeyValueConfigurationCollection.
1311
1312         * Configuration.cs (Init): save off configPath.
1313         (EvaluationContext): new, mostly implemented.
1314         (GetSectionInstance): use IgnoreSection instead of
1315         RuntimeOnlySection.
1316         (Load): don't fail when we can't load a file.
1317
1318         * IgnoreSection.cs: replace RuntimeOnlySection with this new
1319         public type.
1320
1321         * RuntimeOnlySection.cs: nuke.
1322         
1323 2005-09-27  Chris Toshok  <toshok@ximian.com>
1324
1325         * TimeSpanMinutesOrInfiniteConverter.cs: this is sealed.
1326
1327 2005-09-27  Chris Toshok  <toshok@ximian.com>
1328
1329         * ConfigurationProperty.cs: add IsDefaultCollection property.
1330
1331 2005-09-27  Chris Toshok  <toshok@ximian.com>
1332
1333         * ConfigurationElementProperty.cs: new file.
1334
1335         * ConfigurationLockCollection.cs: new file.
1336
1337         * ConfigurationElementCollection.cs
1338         (OnDeserializeUnrecognizedElement): make sure we consume the
1339         <clear /> element so we don't into an endless loop.
1340
1341         * ConfigurationElement.cs: add a bunch of NIE's properties.
1342
1343         * ContextInformation.cs: Add NIE'ed IsMachineLevel property.
1344
1345 2005-09-23  Chris Toshok  <toshok@ximian.com>
1346
1347         * AppSettingsSection.cs: fix build and add a couple of TODO'ed
1348         properties.
1349
1350 2005-09-23  Chris Toshok  <toshok@ximian.com>
1351
1352         * ProviderSettings.cs (Unmerge): track change to
1353         ConfigurationElement.Unmerge.
1354
1355         * ConfigurationSection.cs: add functions nuked from
1356         ConfigurationElement here.
1357
1358         * ConfigurationElementCollection.cs: add DebuggerDisplay attribute
1359         to the class.
1360         (BaseGetAllKeys): returns object[], not string[].
1361         (BaseGetKey): returns object, not string.
1362         (Unmerge): track change to ConfigurationElement.Unmerge signature.
1363
1364         * ConfigurationElement.cs (ConfigurationElement.Unmerge): fix
1365         signature (drop the serializeCollectionKey parameter).
1366         
1367
1368 2005-09-23  Chris Toshok  <toshok@ximian.com>
1369
1370         * StringValidator.cs: throw ArgumentException instead of
1371         ConfigurationErrorsException.
1372
1373 2005-09-23  Chris Toshok  <toshok@ximian.com>
1374
1375         * ConnectionStringsSection.cs: track change to
1376         ConfigurationPropertyOptions.
1377
1378         * ConfigurationPropertyAttribute.cs, ConfigurationProperty.cs,
1379         ProviderSettings.cs: track change to ConfigurationPropertyOptions.
1380
1381         * ConnectionStringSettings.cs: track change to
1382         ConfigurationProprertyOptions, and add some ConfigurationProperty
1383         attributes.
1384         
1385         * ConfigurationPropertyOptions.cs: DefaultCollection ->
1386         IsDefaultCollection, Required -> IsRequired.
1387
1388 2005-09-22  Chris Toshok  <toshok@ximian.com>
1389
1390         * PositiveTimeSpanValidator.cs: this lives in
1391         System.Web.Configuration, not System.Configuration.
1392
1393 2005-09-22  Chris Toshok  <toshok@ximian.com>
1394
1395         * TimeSpanValidator.cs: change to ArgumentException and alter the
1396         messages slightly.
1397
1398 2005-09-22  Chris Toshok  <toshok@ximian.com>
1399
1400         * ExeConfigurationFileMap.cs (ctor): init all the strings to "".
1401
1402 2005-07-01  Lluis Sanchez Gual  <lluis@novell.com>
1403
1404         * ProviderSettings.cs: Implemented properties using property attributes.
1405         * ConfigurationElement.cs: Implemented ElementInformation property and
1406         moved there all value management.
1407         * ProtectedConfigurationProvider.cs: Set the correct base class.
1408         * SectionInformation.cs: Added missing AllowExeDefinition property.
1409         * TimeSpanValidatorAttribute.cs: Implemented.
1410         * StringValidator.cs: Implemented.
1411         * ProviderSettingsCollection.cs: Added missing class attribute.
1412         * ConfigurationSaveMode.cs: Fix enum values.
1413         * ConfigurationElementCollection.cs: Added Init method for initializing
1414         elements from properties.
1415         * StringValidatorAttribute.cs: Implemented.
1416         * ConfigurationLocation.cs: Added support for allowOverride flag.
1417         * TimeSpanMinutesOrInfiniteConverter.cs: Created skeleton class.
1418         * PositiveTimeSpanValidator.cs: Implemented.
1419         * TimeSpanMinutesConverter.cs: Created skeleton class.
1420         * SectionInfo.cs: Properly read, store and check the values of AllowLocation,
1421         AllowDefinition and AllowExeDefinition.
1422         * TimeSpanValidator.cs: Implemented.
1423         * ConfigurationConverterBase.cs: Created skeleton class.
1424         * InternalConfigurationHost.cs: Implemented IsDefinitionAllowed and
1425         VerifyDefinitionAllowed.
1426         * ConfigurationManager.cs: That class must be static.
1427         * PropertyInformationCollection.cs: Implemented.
1428         * Configuration.cs: Added some checks for AllowLocation, AllowDefinition and
1429         so on. In Save(), don't forget to save location elements.
1430         * ConfigurationProperty.cs: Keep track of collection attributes.
1431         * ConfigInfo.cs: Support overrideAllowed flag.
1432         * KeyValueConfigurationElement.cs: Define properties using attributes.
1433         * PropertyValueOrigin.cs: implemented.
1434         * PropertyInformation.cs: Mostly implemented.
1435         * SectionGroupInfo.cs: Properly propagate the overrideAllowed flag.
1436         * ElementInformation.cs: Mostly implemented.
1437         * ConfigurationPropertyAttribute.cs: Set the correct default value.
1438         * ConfigurationCollectionAttribute.cs: Implemented.
1439
1440 2005-06-23  Lluis Sanchez Gual <lluis@novell.com>
1441
1442         * SectionInfo.cs: Set the config host when loading the section.
1443         * InternalConfigurationHost.cs: Implemented some basic methods.
1444         * Configuration.cs: Find the correct parent for the configuration,
1445         taking into accound locations and such. Use Host functions to get
1446         types from names.
1447         * ConfigurationLocationCollection.cs: Added find method.
1448         * ConfigInfo.cs: Added Host property.
1449         * InternalConfigurationFactory.cs: The InitForConfiguration calls
1450         are now done in each correspoding configuration.
1451         * SectionGroupInfo.cs: When reading a location element, create
1452         a Configuration object for each path specified in the location.
1453         * ConfigurationElementCollection.cs: Added the CreateNewElementInternal
1454         method, which properly initializes the created element.
1455         * ConfigurationLocation.cs: OpenConfiguration now has to read the
1456         xml contents. It also has to find the correct parent configuration,
1457         if it has not been specified.
1458
1459 2005-06-17  Lluis Sanchez Gual <lluis@novell.com>
1460
1461         * SectionInfo.cs, ConfigInfo.cs, SectionGroupInfo.cs: Minor api fixes.
1462         * ConfigurationPropertyCollection.cs: Added Clear method.
1463         * ContextInformation.cs: Implemented.
1464         * ConfigurationManager.cs: Implemented some missing methods.
1465         Configuration objects are now created through the ConfigurationFactory.
1466         * InternalConfigurationHost.cs: Implementation of IInternalConfigHost
1467         to be used for exe files and machine.config.
1468         * ConfigurationFileMap.cs: Implemented.
1469         * Configuration.cs: Read and write config files using the methods that
1470           IInternalConfigHost provides.
1471         * InternalConfigurationRoot.cs: IInternalConfigRoot stub.
1472         * ExeContext.cs: Implemented.
1473         * AppSettingsSection.cs: Use the KeyValueConfigurationCollection
1474         collection to store values.
1475         * KeyValueConfigurationElement.cs: Implemented.
1476         * KeyValueConfigurationCollection.cs: Implemented.
1477         * InternalConfigurationFactory.cs: An implementation of 
1478         IInternalConfigConfigurationFactory.
1479         * ConfigurationPropertyAttribute.cs: Added missing attributes.
1480         * ExeConfigurationFileMap.cs: Implemented.
1481
1482 2005-06-15  Lluis Sanchez Gual <lluis@novell.com>
1483
1484         * ConfigurationElement.cs, ConfigurationErrorsException.cs
1485         SectionInfo.cs, ConnectionStringSettingsCollection.cs,
1486         ConfigurationPropertyCollection.cs, ProtectedConfigurationProvider.cs,
1487         ConfigurationSection.cs, NonEmptyStringConfigurationProperty.cs,
1488         ConfigurationElementCollectionType.cs, Configuration.cs, 
1489         ConnectionStringSettings.cs, ConfigurationProperty.cs,
1490         ConfigurationLocationCollection.cs, TimeSpanConfigurationProperty.cs,
1491         ConfigurationAllowDefinition.cs, ConfigInfo.cs,
1492         ConfigurationSectionGroupCollection.cs, AppSettingsSection.cs,
1493         ProviderSettingsCollection.cs, IntegerConfigurationProperty.cs,
1494         SectionGroupInfo.cs, ConfigurationUserLevel.cs,
1495         ConnectionStringsSection.cs, ConfigurationPropertyAttribute.cs,
1496         ConfigurationLocation.cs, ConfigurationSectionCollection.cs,
1497         ConfigurationSectionGroup.cs, RuntimeOnlySection.cs,
1498         ProviderSettings.cs: 
1499                 Track API changes.
1500         
1501         * ConfigurationElementCollection.cs: Implemented support for Basic
1502         collection type. Other fixes.
1503         
1504         * ConfigurationPropertyFlags.cs: Renamed to ConfigurationPropertyOptions.
1505         * ConfigurationUpdateMode.cs: Renamed to ConfigurationSaveMode.
1506         
1507         * SectionInformation.cs, ConfigurationAllowExeDefinition.cs
1508         ConfigurationManager.cs, ConfigurationSaveMode.cs,
1509         ConfigurationValidatorAttribute.cs, ProtectedConfigurationSection.cs,
1510         ConfigurationValidatorBase.cs, ConfigurationPropertyOptions.cs:
1511                 New files.
1512         
1513         * ConfigurationValidationAttribute.cs: Removed.
1514         
1515         * ProviderBase.cs: Moved to System.dll.
1516
1517 2005-06-14  Lluis Sanchez Gual <lluis@novell.com>
1518
1519         * AppSettingsSection.cs, ConfigInfo.cs, Configuration.cs
1520         ConfigurationAllowDefinition.cs, ConfigurationElement.cs
1521         ConfigurationElementCollection.cs, ConfigurationElementCollectionType.cs
1522         ConfigurationLocation.cs, ConfigurationLocationCollection.cs
1523         ConfigurationProperty.cs, ConfigurationPropertyAttribute.cs
1524         ConfigurationPropertyCollection.cs, ConfigurationPropertyFlags.cs
1525         ConfigurationSection.cs, ConfigurationSectionCollection.cs
1526         ConfigurationSectionGroup.cs, ConfigurationSectionGroupCollection.cs
1527         ConfigurationUpdateMode.cs, ConfigurationUserLevel.cs
1528         ConfigurationValidationAttribute.cs, ConnectionStringsSection.cs
1529         ConnectionStringSettingsCollection.cs, ConnectionStringSettings.cs
1530         IntegerConfigurationProperty.cs, NonEmptyStringConfigurationProperty.cs
1531         NonEmptyStringFlags.cs, PathLevel.cs, ProtectedConfigurationProvider.cs
1532         ProviderBase.cs, ProviderSettings.cs, ProviderSettingsCollection.cs
1533         RuntimeOnlySection.cs, SectionInfo.cs, SectionGroupInfo.cs
1534         TimeSpanConfigurationProperty.cs, TimeSpanPropertyFlags.cs
1535         TimeSpanSerializedFormat.cs:
1536
1537         Moved from the System assembly.