seriously BROKEN for nested functions.
The only workaround needed is a little fix in HopObject.put() to set the
parent scope on functions because of the funky way we compile prototypes.
* Use one ContextFactory instance per RhinoCore to initialize, enter and exit
contexts, and use various call() methods to actually use it in RhinoCore.evaluate()
and RhinoEngine.invoke().
* Set parent scope in HopObject constructor.
* Use java.lang.ThreadLocal to implement engine/thread registration.
* Implement RhinoCore.getRhinoCore() and RhinoEngine.getRhinoEngine().
* Implement rhino.strictvars to throw errors on undeclared vars.
* Do not declare throws Exception in RhinoCore.processXmlRpc* methods.
* Clean up error logging.
* Delay onInit() invocation until after the node has been registered with the cache.
Two advantages: first, we won't call onInit() on nodes that are bound to be
thrown away because a clone already exists in the cache, and second no need
to cache nodes in the transactor clean node map, which was troublesome in
exactly the same case.
* Remove some old code that has been commented out for ages.
- TokenStream is no longer public, implement Parser.parseTokens()
- Parse public nested methods in JS constructors
- adapt to slightly changed sequence of returned tokens.
* Do not implement IPathElement in Server, Application and HelmaDoc classes.
Implement the necessary methods in the manage application instead.
* Add DocResourceElement.getStartLine() method to get element's position
within the containing resource
* Rename ScriptingEngine.getIntrospector() to getDoc() and declare DocApplication
as return value.
* Make DocFunction not a RuntimeException, and throw it only where needed.
* Add TokenStreamInjector class to rhino to make TokenStream publicly available
* Add StringUtils.splitLines()
* Add Logger.Entry class to avoid unnecessary String concatenation.
* Unify Logger classes code a little bit, making better use of inheritance.
* Run logger thread 3 times per second instead of 4 times.
* Add Javadoc comments and tags.
* Remove old Rhino 1.5 classes, make Helma debugger subclass Rhino 1.6 classes
(not fully functional yet, needs patches to Rhino debugger).
* Make helma.doc.DocFunction compile with Rhino 1.6 by introducing intermediary
DockenStream class that proxies TokenStream using java reflection.
* Make typename, app, and props fields final.
* Issue prominent warnings if parent proto can't be resolved or
relational extended type doesn't have a _prototype mapping.
* Determine in update() if this is a relational mapping or not.
* Add checks for underscore property name before persisting/marking dirty in setNode()
* Extract underscore property name check into isPersitableProperty() method