2012-02-16

Jease 2.7 release

UUID support, Custom password validation, Improved memory footprint, Turkish translation, Usability, Bug fixes.

Please read the upgrade notice below.

New Features

  • UUID support: each object is now stored with an UUID (=Universally Unique Identifier). The UUID of an content object can be retrieved via jease.cms.domain.Content#getUUID(). In order to retrieve an object by its UUID, jease.cms.service.Contents.getByUUID(String) can be used.
  • Customizable password validation: added configurable JEASE_PASSWORD_VALIDATOR. This way a customizable password strength validation can be implemented through the web. This is useful if the existing password validation is to strong (or too weak). See the parameter documenation for an example.
  • Improved memory footprint and better performance by using IdentityHashMaps instead of HashMaps for the ObjectRepository.

New API

  • Added jease.site.Authorizations#getUsername() as helper for retrieving the username from authorization header.
  • Added jfix.db4o.ObjectDatabase#persist() which stores an object into the database without clearing the supplier cache (=dynamically created index).
  • Refactored unnecessary binding between Authorizations and Access by adding jease.cms.domain.Access#approves(login,password). This way custom implementations can inherit from Access and modify behavior without other code changes (e.g. check against a set of logins/passwords).

Bug fixes

  • Fixed issue with Transits which weren't persisted on save.
  • Fixed possible concurrency issue in garbage collection for ObjectDatabase by using strict write locking.
  • Fixed possible NPE in Content#getProperty(...)
  • Restoring content from dump didn't mark nodes as changed, so they weren't stored into the object-database index cache.

I18N

  • Added Turkish translation for Jease. Thanks to Ahmet for contribution!

Improvements

  • Store time of last user session in database and display it in user table. This way it is easier to identify users which weren't active for long times.
  • Added email address to user table.
  • Switch to last page of content table when a new content item is added to a table which has more items than the page size.
  • Automatic login of administrator after initial setup.
  • Don't allow an administrator to delete his own account (= prevent "null" as replacement for new object owner).
  • More userfriendly names for switch between "navigation" / "search" (former: tree / table)
  • Better error message for unreliable passwords.

Other Changes

  • Removed version number from default login window, so no more information about running version is disclosed to unauthenticated users. Version number is now displayed in title bar of window after successful login.
  • Removed some e.printStackTraces(), so container can decide/configured what to log or not.
  • Changed (c) in footer for loop template in request of template creator.
  • Using improved idiom for rethrowing RuntimeExceptions (= capturing appropriate stacktrace).
  • Added "crx" (Google Chrome Extension) to available mime types.

3d party modules

  • Perst 4.30
  • db4o 8.0.236
  • Tomcat 7.0.25

Upgrade notice

In order to create UUIDs for already existing content objects, you have to run the following update script once. Simply create a Script within the CMS (id=update.jsp, title=Update), copy&paste the code below into it, save it, then click "View" to perform the update. That's it.

<%@page 
  import="java.lang.reflect.*,jease.cms.domain.*,jfix.db4o.*" %> 
<% 
 Method method = Content.class.getDeclaredMethod("readResolve"); 
 method.setAccessible(true); 
 for (Content content : Database.query(Content.class)) { 
   method.invoke(content); 
   Database.save(content); 
 }
 out.println("Update performed");
%> 

Last modified on 2012-03-04 by Maik Jablonski

Download Jease

1970-01-01

You can download the latest binary release bundle here.