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