Helma Logo
main list history
previous version  overview  next version

Version 4 by hannes on 17. April 2009, 16:36

This page docuents new features in Helma 1.7. As Helma 1.7 hasn't been released yet, this page is incomplete and work-in-progress.

=== Case sensitive HopObject property names

Property names in HopObjects are now case sensitive. This means that obj.foo, obj.Foo and obj.FOO no longer point to the same property. This feature should help to enforce good programming habits and speed up property access.

=== Programmatically generated collections

Helma 1.7 defines a new static method on HopObject constructors that allows to *generate HopObject collections via JavaScript|Creating collections programmatically*. The method is called HopObject.getCollection() and takes a single JavaScript object as argument. It returns a HopObject that is equivalent to the one you would get by defining it as a collection in a type.properties file.

=== Programmatically defined HopObject mappings

There is a new and experimental definePrototype function that allows to *define prototype mappings via JavaScript|defining HopObject mappings programmatically*. In its current implementation, there is a global function called definePrototype() that takes two arguments: The prototype name, and a JavaScript object describing the type mapping.

=== Apache Commons Daemon support

Helma 1.7 introduces *Apache Commons Daemon|http://commons.apache.org/daemon/* support, making it possible to run the embedded Jetty server on port 80 for ordinary users on Unix and running Helma as service on Unix and Windows systems. There also is a *Debian/Ubuntu package|https://launchpad.net/~hannesw/+archive/ppa/+sourcepub/469276/+listing-archive-extra* that indorses Commons Daemon jsvc utility to install Helma as service.

=== Lazy collection loading

* HopObject.list(), when called without arguments, no longer fetches all contained objects.
* HopObject.list(start, length) (when called with start and length arguments) prefetches the requested object range.
* Very large object collections (currently > 10000 elements) break loading of child ids down into multiple segments.