[prev in list] [next in list] [prev in thread] [next in thread] 

List:       jakarta-commons-dev
Subject:    [jira] Commented: (JEXL-60) Refactor o.a.c.jexl.util and
From:       "Rahul Akolkar (JIRA)" <jira () apache ! org>
Date:       2009-07-31 22:26:14
Message-ID: 998685751.1249079174858.JavaMail.jira () brutus
[Download RAW message or body]


    [ https://issues.apache.org/jira/browse/JEXL-60?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12737748#action_12737748 \
] 

Rahul Akolkar commented on JEXL-60:
-----------------------------------

Can you please attach a regenerated patch, I'd like to try to apply it first and see \
whats up -- if all else fails, will use the tar.gz. Thanks.


> Refactor o.a.c.jexl.util and o.a.c.jexl.util.introspection
> ----------------------------------------------------------
> 
> Key: JEXL-60
> URL: https://issues.apache.org/jira/browse/JEXL-60
> Project: Commons JEXL
> Issue Type: Improvement
> Affects Versions: 2.0
> Reporter: Henri Biestro
> Priority: Blocker
> Fix For: 2.0
> 
> Attachments: JEXL-60.patch, jexl60.tar.gz, jexl60.tar.gz, jexl60.tar.gz, \
> jexl60.tar.gz 
> 
> While working on JEXL-35 and looking at Cobertua reports, it appeared that some \
> classes in jexl.util were not really used. It seems that the intention in the \
> original code line was to create specialized executors for each type of property \
> getters and setters but was never completed. Thus, the Uberspectimpl was partly in \
> charge of discovering methods which made things harder to follow and maintain. The \
> patch completes the original o.a.c.jexl.util with specialized executors for \
> {property, map, list, duck} setters and getters as well as methods. Since 2.0 \
> already switched the method cache from using string as keys to using MethodKey(s), \
> their usage has been promoted futher up (a method key is a method name and a set of \
> parameters - not arguments!-) so MethodExecutor(s) benefit from their existence. \
> Since it seemed natural, IntrospectionUtils code has been displaced to MethodKey \
> since this is where parameters type matching has to occur. The general method \
> (setter & getter) discovery mechanism is reusing the original algorithm, trying the \
> different types and returning the first alive one (aka the first executor for which \
> a java.lang.method could be found). The patch is faithfull to the original packages \
> however some code has migrated; most of the Uberspectimpl code has been displaced \
> into o.a.c.jexl.util.Introspector to keep it as simple as possible and still \
> derivable. There were also some low-hanging fruits in this whole refactoring:
> The AST nodes (now JexlNode & SimpleNode) carry a volatile value field that allows \
> to use them as cache for executors; this improves performance and allows no locking \
> concurrency. Since we are creating executors, we might as well reuse when possible. \
> The Info (debugging info) has been put to use so Jexl can create more meaningfull \
> error message when they occur; putting the JexlEngine in debug mode will make \
> warning/exception messages report their point of creation (file or url for scripts, \
> method for expression). And a 'new' function/operator has been implemented so Jexl \
> can now instantiate objects as well. It is a huge and worrysome patch but the \
> Checkstyle & Corbertua reports look pretty good.  The following classes need to be \
> removed *before* applying the patch: \
> src/java/org/apache/commons/jexl/parser/JEXLNode.java \
> src/java/org/apache/commons/jexl/Arithmetic.java \
> src/java/org/apache/commons/jexl/util/PropertyExecutor.java \
> src/java/org/apache/commons/jexl/util/BooleanPropertyExecutor.java \
> src/java/org/apache/commons/jexl/util/introspection/IntrospectionUtils.java \
> src/java/org/apache/commons/jexl/util/introspection/UberspectLoggable.java \
> src/java/org/apache/commons/jexl/util/GetExecutor.java The pom.xml has been \
> modified to use a newer version of the javacc plugin.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic