RIFE v0.7.0 has been released.

This is primarily a bug-fix release. We believe most important bugs have been identified and been resolved, which justifies a new major release.

Below are the highlights of this release.

You can also read the full changelog for more details.

Many bugfixes and improvements

The following sections received a number of bugfixes and were improved:

[ top ]

Additional constraints

Two new constraints were added to ConstrainedProperty: persistent and saved.

Persistent allows you to indicate that a bean property shouldn't be stored in a back-end data storage. It will thus not be automatically persisted through, for example, a database. This makes it possible to still use a bean as a central data entity and have informational properties that should only be used to retrieve information from the user.

Saved allows you to indicate that a property shouldn't automatically save its value to a data store, but it will still participate in the definition of the structure of the data entity. For example, this makes it possible to continue to use one place to define the table structure and use database triggers to fill in the values instead.

[ top ]

Easy way to retrieve a RoleUsersManager

The RoleUsersManager class provides the functionalities to retrieve a RoleUsersManagers from a particular Authenticated element in a site.

Since you can have many authentication schemes and backends being active in a single web application. it's quite verbose to retrieve a RoleUsersManager when you want to perform some operations on its stored credentials. This class provides the functionalities to quickly perform this retrieval through the static getRoleUsersManager(Site site, String authElementId) method.

You can thus very easily update a user's attributes, for example:

public class BanUser extends Element
{
    public void processElement()
    {
        String login = getInput("login");
        
        RoleUsersManager credentials =
            RoleUsersManagerRetriever.getRoleUsersManager(getSite(), ".AUTH_USER");
        
        try
        {
            RoleUserAttributes attrs = credentials.getAttributes(login);
            attrs.getRoles().add("banneduser");
            credentials.updateUser(login, attrs);
        }
        catch (CredentialsManagerException e)
        {
            // handle the exception
        }
    }
}

[ top ]

Repository support for application-wide properties

Since Java allows the configuration of an application through the use of properties, many other sub-system have adopted a similar approach (for example servlet init parameters). Most of the time an application runs through several barriers of configuration that often function independently. Properties support in the Repository makes it possible for each sub-system to add their properties to the same pool. This makes it much more convenient to retrieve a property value afterwards since they're all available from a single source. In a RIFE web application these are for example, the system properties and the servlet init parameters.

[ top ]

Merged dedicated XML selectors

The dedicated XML selectors for Config and Datasources have been merged in the a single selector package since they provide the same functionalities. This also made it possible to easily add dynamic XML file selection to the MemoryScheduler.

So what was before ConfigSelectorHostname, ConfigSelectorOs, ConfigSelectorUser, DatasourceSelectorHostname, DatasourceSelectorOs, DatasourceSelectorUser is now available as XmlSelectorHostname, XmlSelectorOs and XmlSelectorUser.

[ top ]

Added XmlSelectorProperty

A new XML selector has been added to automatically select an XML file according to the rife.application property that is looked up from the Repository properties. You can use this selector for Config, Datasources and MemoryScheduler. It's typically used to easily store all the configuration for application variants in the same source repository and set this property during the installation to indicate which variant to use.

For example in tomcat's server.xml file by setting a context parameter:

<Host name="test.myhost.com" appBase="/home/tomcat/test_myhost_com">
    <Context path="" docBase="ROOT">
        <Parameter name="rife.application"
                   value="test"
                   override="false"/>
    </Context>
</Host>
<Host name="prod.myhost.com" appBase="/home/tomcat/prod_myhost_com">
    <Context path="" docBase="ROOT">
        <Parameter name="rife.application"
                   value="production"
                   override="false"/>
    </Context>
</Host>

[ top ]

Full changelog

2004-02-22  Geert Bevin  <gbevin[remove] at uwyn dot com>

  * RELEASE 0.7.0
  
2004-02-21  Geert Bevin  <gbevin[remove] at uwyn dot com>

  * Added support for RoleUsersManagerRetriever.

2004-02-20  Geert Bevin  <gbevin[remove] at uwyn dot com>

  * Add [img] support to StringUtils bbcode transformer.

2004-02-19  Geert Bevin  <gbevin[remove] at uwyn dot com>

  * Fixed issue RIFE-144 : Rep file processing is sensitive to whitespace.

2004-02-18  Geert Bevin  <gbevin[remove] at uwyn dot com>
  * Added support for persistent and saved constraints.

  * Continuations bugfix and improved control flow analysis.

2004-02-16  Geert Bevin  <gbevin[remove] at uwyn dot com>

  * Engine refactoring and call fixes to restore the element state after an
  answer.

  * Made ValidationError cloneable.

  * Bugfix to Identified element to ensure that users are only recognized if
  they have a valid session going on.

2004-02-15  Geert Bevin  <gbevin[remove] at uwyn dot com>

  * Added GenericQueryManagerDelegate class for easy creation of customized
  Generic Query Managers.

  * Added support for customizable count queries in GQM.

  * Added support for multi-line OGNL statements.

2004-02-14  Geert Bevin  <gbevin[remove] at uwyn dot com>

  * Embedded input preservation fixes.

  * Logout element fixes.

  * Fixed embbedding element problem with preserving embedder's inputs.

2004-02-12  Geert Bevin  <gbevin[remove] at uwyn dot com>

  * Fixed private method continuations bug.

  * Made each Repository provide properties which should be used to collect
  application-wide properties in.

  * ConfigSelector* and DatasourceSelector* are replaced by XmlSelector*

  * Fix to auto-reload groovy files that are present in the implementations dir.

  * Added support for xml selectors in Memoryscheduler.

  * Added mandatory support for properties in the Repository.

  * Created and integrated a new RifeLifecycle class.

  * Extracted xml selectors in a common package.

2004-02-11  Geert Bevin  <gbevin[remove] at uwyn dot com>

  * Added XmlSelectorProperty to select an XML file according to the
  rife.application property.

  * Purging bugfix for MemorySessions.

  * Made the BlockingRepository and BlockingParticipant more robust.

  * Added Rep tests.

2004-02-10  Geert Bevin  <gbevin[remove] at uwyn dot com>

  * Generic Query Manager fixes.

  * Refactoring according to RIFE-140 : The GQM is dependant on an integer
  indentifier method

  * Optimized GQM shortname creation.

  * Minor example fix.

2004-02-09  JR Boyens  <gnu-jrb[remove] at gmx dot net>

  * Fix for RIFE-141 : The GQM's method for determining table/sequence names
  doesn't work on inner classes
  
2004-02-09  Geert Bevin  <gbevin[remove] at uwyn dot com>

  * RELEASE 0.6.59
  

[ top ]