Helma 1 Compatibility Layer
hide
ContentsThe purpose of this page is to describe how all the features in Helma 1.5 will be implemented in Helma 2. Some features will be implemented in Helma core, while others will be implemented as JS libraries, extension or modules. Code Layout CompatibilityOne frequent request for Helma 2 is to make it behave and look more like ordinary JavaScript, and do less magic behind the scenes. This clashes with the desire for Helma 1 backwards compatibility. The plan is to not implement Helma 1 compatibility in Helma 2 core, but provide simple means to enable Helma 1 style code layouts from within the application. Let's suppose the default way to define HopObject prototypes in Helma 2 uses a syntax similar to the one embraced in this experimental implementation:
Then all that is needed for using a Helma 1-like code layout is an evaluate function that understands "*" wildcards and takes an optional object to evaluate on as second argument (default is the global scope):
Of course this only solves the JavaScript side, but HopObject prototypes still wouldn't know about type.properties or skin files. For a complete solution, it might be simpler to provide a static HopObject method for passing repositories, or directly pass repository locations to HopObject.extend():
Host ObjectsreqImplemented in Helma core with additional features and properties, fully scriptable through Request.prototype. resImplemented in Helma core with additional features and properties, fully scriptable through Response.prototype. Currently implemented features:
sessionThe Helma 2 session object has the same interface as in Helma 1, but is implemented on top of the session support in the Servlet API. Therefore, it will be possible to use all session features provided by the servlet container such as persistence and replication. appTo be determined. pathLooks like Helma 1 path object, but additionally contains hooks for performing request path mapping. In contrast to Helma 1, the path isn't resolved to an object array behind the scenes. Instead, it is first presented to the app in its raw, unresolved form. An app's pre-request code can convert and resolve the path to an object array if it wants to, but if and how this is done is entirely up to the application. HopObjectPersistence SupportImplemented as Java module. For integration into Rhino see Helma 2 HopObject Implementation. Prototype foldersMay be implemented using a include(dir, prototype) feature that evaluates scripts in the given directory on the given object prototype. Thus, Helma 1 apps would require a simple js file with includes for all prototypes to run on Helma 2. Pages linking to this page: Helma 2 alpha 1 |
navigation
Download
Community
Weblog
Mailing Lists
IRC Channel
Documentation
Introductions
Tools
Reference
Project
Roadmap
Bug Reporting
Source
Helma NG Wiki
Wiki
Tags
Updates
Related Projects
Sites using Helma
Shop
search
tags for this page
all tags
Tagsapps (1) bugs (2) class (1) community (2) compatibility (1) concurrency (1) continuations (2) Documentation (6) dogfood (1) formatting (1) functions (1) gobi (1) helma (7) helma 1.6 (17) helma 1.7 (8) helma 1.x (4) Helma 1x (0) helma 2 (11) helma ng (20) hopobject (1) howto sample code xml-rpc (1) html (1) inheritance (5) introspection (1) java (3) javascript (5) jetty (4) JSDoc (1) lazy (1) marius person (1) metaprogramming (3) modules (5) oop (1) organization (2) ORM (2) parsing (1) plugins (1) project (2) projects (1) prototype (2) prototype scope rhino functions this (0) Rabbit (2) Reference (1) REPL (1) rhino (5) roadmap (3) scope (1) shell (1) shop (0) Skin Rendering (5) Snippets (1) source svn (1) sugar (3) templates (13) testing (5) this (1) Tobi (10) web.xml (2) xml (1) Pages linking to this page: Wiki Overview Text Draft, wiki pages linking here
|