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