Helma Logo
main list history
previous version  overview  next version

Version 2 by hannes on 06. June 2006, 18:55

* Reimplmenent .hac and .hsp support
* Implement global serialize() and deserialize() functions and add corresponding methods to ScriptingEngine
* Implement Session.login(username, password)
* Extract session handling into SessionManager class
* Refactoring and improvements for embedded XmlDatabase
* Add logging functions that take an exception object as second argument, use error logging functions for internal errors
* Many fixes in repository and resource handling
* Allow Helma to run without listening to any server ports
* Fix resource ordering for multiple type.properties files
* Make session cookie IP binding optional (appname.protectedSessionCookie property in apps.properties)
* Renamed former rootPrototype property to hrefRootProperty, since it defines the root object only as far as href() function is concerned
* Add rootPrototype and userPrototype properties that allow to set the prototypes for the root and user objects, respectively
* Implement Application.getRootPrototype() and Application.getRootId() that allow to get the prototype and id of the app's root node
* Make sure Helma alsways uses absolute path names internally
* Make Helma logging and log file rotation code scale better
* Implement ignore-dirs functionality (appname.ignore = dir1,dir2)
* Implement MultiFileRepository: all subdirectories are treated as top level file repositories (instaed of treating them as prototype dirs)
* Implement updateable collections
* Many concurrency and liveness fixes
* Fix Rhino per-thread-scope support
* Set JDBC connections to readonly mode depending on the operation we're about to perform
* Fixes to scheduler
* Switch to Jakarta Commons FileUpload for file upload handling
* Introduce uploadSoftfail setting in apps.properties that allows file upload errors to be cought by checking req.data.helma_upload_error
* Add app.getCronJobs() function that allows to retrieve the currently registered custom cron jobs. This returns a JavaScript object with the function name as property names and the helma.util.CronJob instance as property values.
* Make Helma run with GCJ
* Various changes, fixes and enhancements to the imaging code:
** Added Image.trim(), that trims an image based on a specified pixel, just like in Photoshop
** saveAs exists in two versions now, one that takes a filename, the other an OutputStream + Mime type
** Added more possible parameters for the Image() constructor: BufferedImage, Image
** Replaced Quantize by ColorQuantizer, which was freshly ported from the latest ImageMagick sources and updated with the Alpha Channel support that I added earlier to Qantize. This fixes a nasty bug when quantizing images with few colors (e.g. 32 -> 16 which often resultd in only 4 colors) and increases the general quality of color reduction a lot
* Only interpret last path element as action if it is not terminated by a "/". This helps us to disambiguify URLs: /foo/ will never be interpreted as action, while /foo will be.
* Try to autodetect Joins in additionalTables option
* Make helmadoc work with multiple application repositories
* Pass prefix, suffix, default parameters to macro functions and allow them to change them. Implemented by putting these values into a helper class RenderParameters which can easily overridden.
* Do not log concurrency conflicts. This is often misinterpreted as error which it is not
* Add dontEnum() function to JavaScript Object prototype. Takes a variable list of String arguments of propertiy names to set to DONTENUM
* Set cookie version to 1 and allow days value of zero in order for cookies to be deleted
* Implement unsetCookie(name) that causes a prevously set cookie to be discarded
* Consider superclasses and interfaces when resolving class to prototype mapping
* Fix prototype inheritance for wrapped Java objects. get() and has() are not supposed to check the prototype chain. Instead, just register the prototype using setPrototype()
* Allow passing a java.util.Locale to Date.format() as second argument
* Do not append
tag in res.writeln(), only append a newline character sequence
* Fix exception handling:
** Always print source file name and line number
** Only print stack trace once
** Always print stack trace
** Always print stack trace for original exception
** Also log full error stack trace for exceptions caught in macros
* Implement HopObject.__proto__ and JavaObject.__proto__ containing prototype object
* Fix constructor property in HopObject protos to be set to the actual constructor
* Implement JavaObject.__javaObject__ to contain the original java object in an unscripted wrapper
* Make sure JS functions in script-extended java objects actually override java methods
* Use unscripted wrapper rather than HopObject prototype if the prototype for java class is not defined