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