struts-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 17728] - EvalHelper should not throw NullAttributeException, it's too slow
Date Thu, 06 Mar 2003 15:37:05 GMT
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=17728>.
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=17728

EvalHelper should not throw NullAttributeException, it's too slow

ncoleman@leanlogistics.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|INVALID                     |



------- Additional Comments From ncoleman@leanlogistics.com  2003-03-06 15:37 -------
You're wrong,

Look at the code, I even ran it through a profiler and this identifies the 
bottleneck.

public final class EvalHelper
{
    private EvalHelper() {}

    public static Object eval(String      tagName,
                              String      attrName,
                              String      attrValue,
                              Class       attrType,
                              Tag         tagObject,
                              PageContext pageContext)
        throws JspException, NullAttributeException
    {
        Object result   =
            ExpressionUtil.evalNotNull(tagName, attrName, attrValue,
                                       attrType, tagObject, pageContext);
        if (result == null)
            throw new NullAttributeException(attrName, tagName);
        return (result);
    }
}


When ExpressionUtil returns null, a NullAttributeException is thrown.  The EL 
Tags call this for every attribute, catch the NullAttributeException and enter 
a default.  For example, here is a snippet from the ELSizeTag.java

        try {
            setName((String) evalAttr("name", getName(), String.class));
        } catch (NullAttributeException ex) {
            setName(null);
        }


Name is an optional attribute since you can specify collection.  If you use the 
collection object on this tag it will always throw at least 2 
NullAttributeException  exceptions since name and property aren't filled in.  
The overhead of the exception in both creating an I18N string and and also 
additional garbage collection is uneeded.

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


Mime
View raw message