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