Helma logo
main list history

Helma 1.6.0 Changelog

  • Update to Rhino 1.6 (patched CVS snapshot) implementing JavaScript 1.6, including:
    • E4X support, both without and with Apache XML-Beans.
    • New Array methods indexOf(), lastIndexOf(), filter(), map(), every(), forEach(), some().
    • for each loop.
    • Support for __defineGetter__ and __defineSetter__ for getter/setter support.
    • Support for __noSuchMethod__
    • Support for const keyword
    • JavaImporter constructor for clean access to Java libraries.
    • Many bug fixes.
  • New Skin features:
    • Subskins: <% #subskin %> and renderSkin("skin#subskin"), respectively
    • Macro pipes/filters: <% text | truncate max="300" | uppercase %>. Filter functions must have a _filter suffix and get two arguments: the return value of the previous macro/filter in the chain, and a parameter object with the attributs in the filter tag. They are expected to return the filtered macro output.
    • Deep macro invocation: <% page.author.name %>
    • Nested Macros: <% page.link content=<% messages.storylink %> %>
    • new onUnhandledMacro() callback that allows to catch or handle unhandled macros.
    • New standard attribute: failmode=silent|verbose.
    • Better handling for malformed macro tags.
  • New HTTP-related features:
    • Specialized and aggregated parameter collections req.postParams, req.queryParams, req.params, req.cookies in addition to req.data
    • Improved handling of multi-value parameters, allowing access to parameter values as arrays, even if they only have one value.
    • HTTP parameter grouping, mapping parameters with names like "foo[bar]" to req.data.foo.bar
    • Additional HTTP header methods req.getHeader(), req.getHeaders(), req.getIntHeader(), req.getDateHeader(), res.setHeader(), res.setDateHeader(), res.addHeader() and res.addDateHeader()
    • Any bytes remaining after GET/POST parameter parsing are made accessible as req.data.http_get_remainder, req.data.http_post_remainder.
    • Improved file upload memory handling, new MimePart.getInputStream() method
    • Support for monitoring file upload progress
    • Additional apps.properties totalUploadLimit setting to limit combined file upload size (as opposed to individual upload size)
  • New Image constructor that takes a java.io.InputStream as argument
  • Support for sourceCharset in app.properties to specify the encoding of source files
  • New HopObject.indexOf() and path.indexOf methods, deprecating the existing HopObject.contains() and path.contains
  • Implement app.getAppsProperties() to allow access to the app's apps.properties entries.
  • Add res.rollback(): Just abort transaction and do not stop request execution like res.abort() or res.stop().
  • New HopObject.onPersist() callback that is called each time a HopObject is stored to embedded or relational database.
  • Rhino fix to make protected Java methods accessible and overridable to subclassing JavaAdapters.
  • Pimped up documentation, including JSDoc JavaScript API docs for Helma core and modules libraries.
  • Implement JS stack traces.
  • New rhino.strictvars property to throw errors on undeclared vars.
  • Implement onResponse() callback which, if defined, is called after the request has been processed.
  • Implement res.buffer to access current page output
  • Implement res.stop() to stop request execution
  • Implement res.pushBuffer(StringBuffer) and res.popBuffer() to get StringBuffers in and out of the response buffer stack.
  • Implement app.charset and app.getCharset() to get the app's default charset.
  • Do not reuse per thread scope, create a new one for each request
  • Increase default maxThreads value to 50 (evauators aren't that expensive anymore)
  • Upgrade to Jetty 4.2.27.
  • Removed old and obsolete ant infrastructure. Developers are now required to have their own ant installed.
  • Support binary database column mapping
  • Fully implement prototype compilation on access of static constructor properties. Previously access of prototype members didn't trigger compilation.
  • Adding tagsoup.jar version 1.0.4 for use with getHtmlDocument(), throw away subclass of Swing HTML parser.
  • Remove lib/apache-dom.jar, from now on Xerces jars are required in order to use getHtmlDocument().
  • Remove crimson.jar at last, it isn't needed for JDK 1.4 and later.
  • Update to jakarta commons-logging 1.1, commons-fileupload 1.2 and commons-io 1.3.1