[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