Atsushi,

I'm not deliberately ignoring your or anyone else's advice. Perhaps my idea
of trivial changes is different than yours, definitely if a very large part
of those changes is covered by unit tests. Next time, I'll flood mono-dev
with small patches ;-)

I'm definitely not claiming my changes are more important than performance
improvements, but I'd be surprised if both can't be combined.

Gert

-----Original Message-----
From: Atsushi Eno [mailto:[EMAIL PROTECTED] 
Sent: donderdag 26 juni 2008 19:58
To: Gert Driesen
Cc: 'mono-devel-list'
Subject: Re: [Mono-dev] [Fwd: [Mono-patches] r106626 - in
trunk/mcs/class/System.Configuration: . System.Configuration
Test/System.Configuration Test/standalone]

In short, you are not going to change your commit policy right?

When I go ahead and make significant refactoring, I'll clean your
changes up and mark insignificant compatibility tests as Ignore.

Insignificant compatibility mastur* should not block significant
performance improvements.

Atsushi Eno


Gert Driesen wrote:
> Hey Atsushi,
> 
> Apart from the change in ClientConfigurationSystem my patch was about
using
> the IConfigErrorInfo interface for getting filename/linenumber info
instead
> of explicitly checking for XmlTextReader, or using internal IConfigXmlNode
> interface.
> 
> Before the introduction of IConfigErrorInfo, we had to resort to this. My
> changes just allow us to use this new interface, which - at the same time
-
> allows us to write unit tests for this (as this now matches the MS
> implementation).
> 
> I don't intend to write a book about these trivial changes, but I've
> responded to your comments inline.
> 
> Gert
> 
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Atsushi Eno
> Sent: donderdag 26 juni 2008 17:41
> To: Gert Driesen
> Cc: 'mono-devel-list'
> Subject: Re: [Mono-dev] [Fwd: [Mono-patches] r106626 - in
> trunk/mcs/class/System.Configuration: . System.Configuration
> Test/System.Configuration Test/standalone]
> 
> No. You claim as if your change were only about one issue, which it
> NOT true. Here is concrete description:
> 
>> Modified:
>
trunk/mcs/class/System.Configuration/System.Configuration/AppSettingsSection
> .cs
>> ===================================================================
>> ---
>
trunk/mcs/class/System.Configuration/System.Configuration/AppSettingsSection
> .cs   2008-06-26 09:57:29 UTC (rev 106625)
>> +++
>
trunk/mcs/class/System.Configuration/System.Configuration/AppSettingsSection
> .cs   2008-06-26 10:31:07 UTC (rev 106626)
>> @@ -73,7 +73,7 @@
>>                      if (File != "") {
>>                              try {
>>                                      Stream s = System.IO.File.OpenRead
> (File);
>> -                                    XmlReader subreader = new
> XmlTextReader (s);
>> +                                    XmlReader subreader = new
> ConfigXmlTextReader (s, File);
>>                                      base.DeserializeElement (subreader,
> serializeCollectionKey);
>>                                      s.Close ();
>>                              }
> 
> For example it is about ConfigXmlTextReader change.
> 
> => The use of ConfigXmlTextReader is necessary as it implements
> IConfigErrorInfo. I consider this part of the same change.
> 
>> Modified:
>
trunk/mcs/class/System.Configuration/System.Configuration/ClientConfiguratio
> nSystem.cs
>> ===================================================================
>> ---
>
trunk/mcs/class/System.Configuration/System.Configuration/ClientConfiguratio
> nSystem.cs    2008-06-26 09:57:29 UTC (rev 106625)
>> +++
>
trunk/mcs/class/System.Configuration/System.Configuration/ClientConfiguratio
> nSystem.cs    2008-06-26 10:31:07 UTC (rev 106626)
>> @@ -32,28 +32,39 @@
>>  using System.Reflection;
>>  using System.Configuration.Internal;
>>  
>> -namespace System.Configuration {
>> -
>> +namespace System.Configuration
>> +{
>>      internal class ClientConfigurationSystem : IInternalConfigSystem
>>      {
>> -            readonly Configuration cfg;
>> +            Configuration cfg;
>>  
>> -            public ClientConfigurationSystem () {
>> -                    Assembly a = Assembly.GetEntryAssembly();
>> -                    string exePath =
> AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
>> -            
>> -                    if (a == null && exePath == null)
>> -                            exePath = "";
>> -            
>> -                    cfg =
> ConfigurationManager.OpenExeConfigurationInternal
> (ConfigurationUserLevel.None, a, exePath);
>> +            public ClientConfigurationSystem ()
>> +            {
>>              }
>>  
>> +            private Configuration Configuration {
>> +                    get {
>> +                            if (cfg == null) {
>> +                                    Assembly a =
> Assembly.GetEntryAssembly();
>> +                                    string exePath =
> AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
>> +
>> +                                    if (a == null && exePath == null)
>> +                                            exePath = string.Empty;
>> +
>> +                                    try {
>> +                                            cfg =
> ConfigurationManager.OpenExeConfigurationInternal (
>> +
> ConfigurationUserLevel.None, a, exePath);
>> +                                    } catch (Exception ex) {
>> +                                            throw new
> ConfigurationErrorsException ("Error Initializing the configuration
> system.", ex);
>> +                                    }
>> +                            }
>> +                            return cfg;
>> +                    }
>> +            }
>> +
>>              object IInternalConfigSystem.GetSection (string configKey)
>>              {
>> -                    if (cfg == null)
>> -                            return null;
>> -
>> -                    ConfigurationSection s = cfg.GetSection (configKey);
>> +                    ConfigurationSection s = Configuration.GetSection
> (configKey);
>>                      return s != null ? s.GetRuntimeObject () : null;
>>              }
>>  
> 
> This is about lazy initialization. There is no bug fixes involved.
> 
> => As I mentioned earlier, this is not related to the IConfigErrorInfo
> implementation. However, it does fix a bug. Standalone test t28 failed
with
> a TypeInitializationException before this fix. 
> 
>> @@ -460,17 +459,12 @@
>>                              return false;
>>                      }
>>  
>> -                    try {
>> -                            reader = new XmlTextReader (stream);
>> +                    using (XmlTextReader reader = new
> ConfigXmlTextReader (stream, streamName)) {
>>                              ReadConfigFile (reader, streamName);
>> -                    } finally {
>> -                            if (reader != null)
>> -                                    reader.Close();
>>                      }
>>                      return true;
>>              }
>>  
>> -
>>              void ReadConfigFile (XmlTextReader reader, string fileName)
>>              {
>>                      reader.MoveToContent ();
> 
> Insignificant change.
> 
> => Same as above. The use of ConfigXmlTextReader is necessary as it
> implements IConfigErrorInfo. Also used Disposable pattern (unrelated, big
> deal).
>  
>> Modified:
>
trunk/mcs/class/System.Configuration/System.Configuration/ConfigurationEleme
> nt.cs
>> ===================================================================
>> ---
>
trunk/mcs/class/System.Configuration/System.Configuration/ConfigurationEleme
> nt.cs 2008-06-26 09:57:29 UTC (rev 106625)
>> +++
>
trunk/mcs/class/System.Configuration/System.Configuration/ConfigurationEleme
> nt.cs 2008-06-26 10:31:07 UTC (rev 106626)
>> @@ -322,13 +322,13 @@
>>                                      } else if (this is
> ConfigurationSection && reader.LocalName == "configSource") {
>>                                              /* ignore */
>>                                      } else if
> (!OnDeserializeUnrecognizedAttribute (reader.LocalName, reader.Value))
>> -                                            throw new
> ConfigurationException ("Unrecognized attribute '" + reader.LocalName +
> "'.");
>> +                                            throw new
> ConfigurationErrorsException ("Unrecognized attribute '" +
reader.LocalName
> + "'.", reader);
>>  
>>                                      continue;
>>                              }
>>                              
>>                              if (readProps.ContainsKey (prop))
>> -                                    throw new ConfigurationException
> ("The attribute '" + prop.Name + "' may only appear once in this
element.");
>> +                                    throw new
> ConfigurationErrorsException ("The attribute '" + prop.Name + "' may only
> appear once in this element.", reader);
>>  
>>                              string value = null;
>>                              try {
> 
> Different bugfix.
> 
> => I agree, but it's all about the same issue. The real bugfix is about
> implementing support for IConfigErrorInfo, and this specific change just
> allows us to use that implementation of the XmlTextReader for adding
> filename/linenumber info to exception messages.
> 
>> @@ -141,34 +143,34 @@
>>              //
>>              public static string GetFilename (XmlReader reader)
>>              {
>> -                    if (reader is XmlTextReader)
>> -                            return ((XmlTextReader)reader).BaseURI;
>> +                    if (reader is IConfigErrorInfo)
>> +                            return ((IConfigErrorInfo) reader).Filename;
>>                      else
>> -                            return String.Empty;
>> +                            return null;
>>              }
>>  
>>              public static int GetLineNumber (XmlReader reader)
>>              {
>> -                    if (reader is XmlTextReader)
>> -                            return ((XmlTextReader)reader).LineNumber;
>> +                    if (reader is IConfigErrorInfo)
>> +                            return ((IConfigErrorInfo)
> reader).LineNumber;
>>                      else
>>                              return 0;
>>              }
>>  
>>              public static string GetFilename (XmlNode node)
>>              {
>> -                    if (!(node is IConfigXmlNode))
>> -                            return String.Empty;
>> +                    if (!(node is IConfigErrorInfo))
>> +                            return null;
>>  
>> -                    return ((IConfigXmlNode) node).Filename;
>> +                    return ((IConfigErrorInfo) node).Filename;
>>              }
>>  
>>              public static int GetLineNumber (XmlNode node)
>>              {
>> -                    if (!(node is IConfigXmlNode))
>> +                    if (!(node is IConfigErrorInfo))
>>                              return 0;
>>  
>> -                    return ((IConfigXmlNode) node).LineNumber;
>> +                    return ((IConfigErrorInfo) node).LineNumber;
>>              }
>>              
>>              public override void GetObjectData (SerializationInfo info,
> StreamingContext context)
>> @@ -178,9 +180,8 @@
>>                      info.AddValue ("ConfigurationErrors_Line", line);
>>              }
>>  
>> -            string bareMessage = "";
>> -            string filename = "";
>> -            int line = 0;
>> +            readonly string filename;
>> +            readonly int line;
>>      }
>>  #pragma warning restore
>>  }
> 
> Insignificant or doubtful changes (I needed to read the actual patch
> again after quick check on ChangeLog).
> 
> => There's nothing doubtful about these changes. These are fully covered
by
> unit tests (that now pass on MS and Mono).
> 
> The changes are almost niche as it could have been done as
> using XmlTextReader.BaseURI (the only difference between BaseURI and
> this Filename thingy is whether it is an absolute URL or a file name,
> isn't it) ?
> 
> => More or less, yes. But my changes are about using the IConfigErrorInfo
> interface were applicable, instead of relying on the internal
IConfigXmlNode
> interface, or explicitly checking for XmlTextReader.
> 
> => My changes actually make it a little easier for your
XmlNodeReader-based
> implementation, as you don't have to check for explicit checks against
> XmlTextReader and just need to implement IConfigErrorInfo in your
> XmlNodeReader class for getting filename/linenumber info in exception
> messages.
> 
> I keep somewhat special eyes on your changes because you usually
> seem to make larger changes than usual hackers do. And this time
> "unfortunately" we were actually discussing System.Configuration
> refactoring. That's why your change is specially mentioned.
> 
> => I have no problem with people monitoring my changes. I tend to do that
> myself, and this is part of why I like open-source development.
> 
> If you feel strong about reverting my changes, please go ahead. If you
want
> me to update your patch to support IConfigErrorInfo, just let me know.
> 
> Gert
> 
> Gert Driesen wrote:
>> Hey Jb,
>>
>> Sorry dude, but this wasn't a large changeset.
>>
>> If the definition of a large changeset is a patch which adds a large set
> of
>> unit tests, then I'm guilty as charged.
>>
>> Apart from removing a few extra tabs (my mistake), everything I changed
is
>> documented in the changelog and covered by unit tests or standalone
tests.
>>
>> There's only one part of the patch that could be committed separately,
and
>> this is the change to ClientConfigurationSystem. And again, this change
>> fixes a failing standalone test (t28).
>>
>> Please be reasonable. What more can you ask?
>>
>> Gert
>>
>> -----Original Message-----
>> From: [EMAIL PROTECTED]
>> [mailto:[EMAIL PROTECTED] On Behalf Of Jb Evain
>> Sent: donderdag 26 juni 2008 15:11
>> To: Gert Driesen
>> Cc: Atsushi Eno; mono-devel-list
>> Subject: Re: [Mono-dev] [Fwd: [Mono-patches] r106626 - in
>> trunk/mcs/class/System.Configuration: . System.Configuration
>> Test/System.Configuration Test/standalone]
>>
>> Hey,
>>
>> On 6/26/08, Gert Driesen <[EMAIL PROTECTED]> wrote:
>>>  > Even only with that point, I'm pretty much tempted to revert your
>>>  > changes.
>>>
>>>
>>> Yeah, I'm glad my (any?) contributions are that much appreciated.
>> Come on Gert, it's definitely not the first time that you're told that
>> your commits are:
>>
>> * totally not atomic,
>> * mixing totally different concerns,
>>
>> And for some of us that keep an eye on the code coming in, it makes
>> that task much harder.
>>
>> That doesn't mean that we don't appreciate contributions. But once
>> again, I already told you that I was not happy with the way you're
>> making commits, and am not the first one. And I can certainly
>> understand the maintainer frustration to see this huge changeset
>> coming in.
>>
> 
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
> 
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
> 


_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to