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