I didn't know about this cache mecanism and "multiple capital letters" constraints.
For use in my JSP Tag to set parent tag Attribute (known value type: String), do you think PropertyUtils.setSimpleProperty(parentTag, arg, bodyContent) is a good replacement from the reflection code ? So it will re-use PropertyUtil cache and introspection mecanism. > > > > Nicolas> String setterName = "set" > > Nicolas> + arg.substring(0,1).toUpperCase() > > Nicolas> + arg.substring(1); > > Nicolas> try { > > Nicolas> System.out.println("setterName "+setterName); > > Nicolas> Method setter = parentTag.getClass().getMethod( > > Nicolas> setterName, new Class[] { String.class } ); > > > > Nicolas> setter.invoke(parentTag, > > Nicolas> new Object[] {getBodyContent().getString()} ); > > > > I believe the functionality in this block is basically what > > "BeanUtils.populate()" does, although with a little more overhead. > > > > BeanUtils and PropertyUtils actually do somewhat more than this: > > * Property setter names do *not* have to start with "set" -- bean > developers can supply an additional BeanInfo class to define the > get and set method names. BeanUtils uses the standard introspection > capabilities to do this lookup. > > * There are some special case rules for property names that start with > multiple capital letters that the introspection code deals with. > > * Because the introspection is the expensive part, the results are cached. > Therefore, BeanUtils will execute repeated property sets on the same > bean class much faster than the above code, which does a > getMethod() lookup every single time. > > * The BeanUtils version of the property setters (including the ones > called in populate()) do automatic type conversion for you, while > the PropertyUtils version of the property setters assumes you already > have the right data type. > > * The library methods know how to deal with indexed and mapped setters > as well as scalar properties. > > So, the above code (if included in the tag) would most likely be replaced > by a call to PropertyUtils.getProperty() to take advantage of what the > library can do. > > Craig > > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>