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