I think some of this came out when InitializeAttributes was originally 
rewritten. As it stands we only have BooleanValidator and 
Int32Validator. In fact this line of code
 paramaters[0] = Convert.ChangeType(attrValue, propertyInfo.PropertyType);

will throw an exception if attrValue cannont safely be converted to 
PropertyType. So for bool it must be 'true' or 'false'.  This is not to 
say we shouldn't fix it, only that we don't actually need validators for 
Bool or Int32 and thats why this hasn't been found earlier.

Ian


>I would call this feature missing a bug. It seems like we need to add
>some unit tests to check this so more features don't disappear.
>
>I looked in an old snapshot of nant (circa may 17th) and there is
>validation related code commented out there. It must have been removed
>from the file sometime after that. The CVS history is probably gone
>because of all the cvs changes done recently with the directly re-org,
>otherwise we might be able to see comments about why.
>
>I've included the interesting and removed code below.
>
>At the top of Element.InitializeAttribute
>
>ValidateAttributes(elementNode);
>
>/*
>        See InitializeAttributes for details about these functions and
>why
>        they are commentted out for now.
>
>        protected virtual void ValidateAttribute(string attributeName) {
>            Type currentType = GetType();
>            while (currentType != typeof(object)) {
>                // iterate over each property looking for BuildAttribute
>attributes
>                PropertyInfo[] propertyInfoArray =
>currentType.GetProperties(BindingFlags.Public|BindingFlags.Instance);
>                foreach (PropertyInfo propertyInfo in propertyInfoArray
>) {
>                    // get the BuildAttribute attribute
>                    BuildAttributeAttribute buildAttribute =
>(BuildAttributeAttribute) 
>                        Attribute.GetCustomAttribute(propertyInfo,
>typeof(BuildAttributeAttribute));
>
>                    if (buildAttribute != null && buildAttribute.Name ==
>attributeName) {
>                        // found a handler for this attribute
>                        return;
>                    }
>                }
>
>                // try looking in the super class for BuildAttribute
>attributes
>                currentType = currentType.BaseType;
>            }
>
>            // If we haven't found a BuildAttribute then the attribute
>is unknown
>            // unless this is a special case and the class forgot to
>override this
>            // method and provide a check for it.
>            throw new BuildException(String.Format("Unknown attribute
>'{0}'", attributeName), Location);
>        }
>
>        protected virtual void ValidateAttributes(XmlNode elementNode) {
>            foreach (XmlNode attributeNode in elementNode.Attributes) {
>                ValidateAttribute(attributeNode.Name);
>            }
>        }
>*/
>
>
>
>
>
>
>-------------------------------------------------------
>This sf.net email is sponsored by:ThinkGeek
>Welcome to geek heaven.
>http://thinkgeek.com/sf
>_______________________________________________
>Nant-developers mailing list
>[EMAIL PROTECTED]
>https://lists.sourceforge.net/lists/listinfo/nant-developers
>
>
>  
>





-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Nant-developers mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/nant-developers

Reply via email to