* 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** Make ImageIOGenerator the default ImageGenerator, JimiGenerator the fallback scenario* 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* 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 break 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* Added helmaTools package* Added helmaLib component* Implement new welcome application* Upgrade to Apache XML-RPC 2.0* Implement new XML-RPC endpoint that is more consistent with Helma actions* Updated default configuration files to include more current example properties and references to the relevant documentation* Implement app.getDbProperties() for db.properties introspection* Implement app.getDbSource(name)* Implement app.getPrototypes() and app.getPrototype(name) to allow app introspection*