You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by bu...@apache.org on 2003/05/08 23:39:28 UTC

DO NOT REPLY [Bug 19781] New: - PropertyUtils.copyProperties throws exceptions contrary to documentation

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=19781>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=19781

PropertyUtils.copyProperties throws exceptions contrary to documentation

           Summary: PropertyUtils.copyProperties throws exceptions contrary
                    to documentation
           Product: Commons
           Version: unspecified
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Bean Utilities
        AssignedTo: commons-dev@jakarta.apache.org
        ReportedBy: apacheBugzilla@AMammenT.cotse.net


1) The copyProperties method is documented as throwing IllegalAccessException 
when access to a particular method is not available.  In fact, because 
internally the methods to be invoked are filtered for accessiblity 
(MethodUtils.getAccessibleMethod) before invocation, the possible sources of 
the IllegalAccessException will never actually throw an 
IllegalAccessException.  

Worse, however, is that the result of a failure to return an accessible method 
is actually taken as occasion to throw a NoSuchMethodException instead.  

2) The copyProperties method is also documented as throwing 
NoSuchMethodException when a method cannot be found.  I'm not sure if this is 
an error or not, but a NoSuchMethodException is not thrown when a property of 
the same name but a different type is found.  (This would, to my mind, be an 
occasion of not finding an appropriate method for the setter to function 
properly).  

Unfortunately, again, there is something worse.  In this case, instead of 
throwing NoSuchMethodException, an IllegalArgumentException is thrown.  
IllegalArgumentException, as a runtime exception, might have been 
appropriateexcept for the fact that it is explicitly documented as being 
thrown when either the source or the destination arguments are null - no other 
reasons for throwing this are detailed.  (Wouldn't NullPointerException be 
more appropriate anyway? Curious about the decision to recast this to 
IllegalArgumentException....)  While this is certainly allowed for 
RuntimeExceptions, in this case, the documentation is quite misleading about 
what is actually to be expected.  

I'll attach a JUnitTestCase that captures both of these items.

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org