Below are the highlights:
- New autolink declaration to simplify datalink and flowlink
declarations [ more ]
- Allow pass-through of unauthenticated users [ more ]
- Support for multiple config selectors [ more ]
- Support for
format constraint to convert values during
injection [ more ]
You can read the full changelog for more
details.
This release can be downloaded from the downloads section, as usual.
New autolink declaration to
simplify datalink and flowlink declarations
If you have elements
that use the same input and output names, and you want to connect these
through datalinks, then the autolink declaration makes this very easy by
creating them automatically. It will also create an exit with the name you
specified, and add a flowlink to the element that has the same ID as the
exit name. You can override the destination element ID by explicitly
specifying a destid attribute.
For example:
<element id="Source" implementation="AutolinkSource" url="source">
<output name="value1"/>
<output name="value2"/>
<outbean name="bean1" classname="BeanImpl1"/>
<autolink srcexit="Destination"/>
</element>
<element id="Destination" implementation="AutolinkDestination" url="destination">
<input name="value1"/>
<input name="value2"/>
<inbean name="bean1"/>
</element>
You can of course also use the
@Autolink annotation if you use annotations as your
declaration method. It supports an additional destClass
attribute that can be used instead of the srcExit attribute.
This will lookup the ID of the element that is specified by the class and
use this to create the exit and the flowlink.
For example:
@Elem(
autolinks = {
@Autolink(destClass = AutolinkAnnotationDestination.class)
}
)
public class AutolinkAnnotationSource extends Element {
private String value1;
private String value2;
private BeanImpl1 bean1;
@OutputProperty public String getValue1() { return value1; }
@OutputProperty public String getValue2() { return value2; }
@OutBeanProperty public BeanImpl1 getBean1() { return bean1;}
public void processElement() {
}
}
@Elem
public class AutolinkAnnotationDestination extends Element {
private String value1;
private String value2;
private BeanImpl1 bean1;
@InputProperty public void setValue1(String v) { this.value1 = v; }
@InputProperty public void setValue2(String v) { this.value2 = v; }
@InBeanProperty public void setBean1(BeanImpl1 b) { this.bean1 = b; }
public void processElement() {
}
}
[ top ]
Allow pass-through of
unauthenticated users
By default, authentication elements show a
login form when someone isn't logged in. However, you might want to
display a variant of the page for anonymous users and customize it for
authenticated users using the 'user
authentication facility'. To do this you can set the
'enforce_authenticated' property to false for an
authentication element.
For example:
<element extends="rife/authenticated/memory.xml">
<property name="enforce_authenticated">false</property>
<property name="template_name">authentication_memory</property>
<submission name="credentials">
<param name="login"/>
<param name="password"/>
</submission>
<childtrigger name="authid"/>
</element>
[ top ]
Support for multiple config
selectors
The configuration framework now supports a list of configuration
selectors that are separated by commas. It will walk the list until it
finds a match. This allows you to for example use the dynamic
configuration selectors and still provide a fallback default configuration
file that is used when none of the dynamic ones can be found.
For
instance:
<participant param="XmlSelectorHostname,rep/config-default.xml">
ParticipantConfig
</participant>
[ top ]
Support for format
constraint to convert values during injection
You can now specify a
format constraint for a bean property. RIFE will detect it
when it calls the property's setter and use it to parse the injected
value. This can for example be used to allow users to enter an price in
the local format and have it stored as a BigDecimal
internally.
For example:
NumberFormat amount_format = NumberFormat.getNumberInstance(new Locale("nl", "BE"));
amount_format.setMinimumFractionDigits(2);
amount_format.setMaximumFractionDigits(2);
addGroup("donation")
.addConstraint(new ConstrainedProperty("amount")
.precision(10)
.scale(2)
.rangeBegin(new BigDecimal(0))
.format(amount_format));
The format constraint above
allows people to enter the amount 386,50 in a form's input
field and have it stored automatically as the number 386.50
in the bean property.
[ top ]
Full changelog
2006-08-14 Geert Bevin <gbevin[remove] at uwyn dot com>
* RELEASE 1.5.1
2006-08-14 Steven Grimm <koreth[remove] at midwinter dot com>
* RIFE-301 : Allow pass-through of unauthenticated users in Authenticated
element
2006-08-14 Geert Bevin <gbevin[remove] at uwyn dot com>
* Replaced "since 1.6" by "since 1.5.1"
* RIFE-204 : Adapt pretty engine errors to XML content type
* Fixed bug where JNDI datasources didn't detect the driver name when
database functionalities are used before an actual connection is made
through the datasource.
2006-08-12 Geert Bevin <gbevin[remove] at uwyn dot com>
* RIFE-269 : New autolink element to simplify datalink definitions
2006-08-10 Geert Bevin <gbevin[remove] at uwyn dot com>
* Added better auto-recompilation support for annotation elements. It now
works even if they were initially compiled through the IDE.
* Class loader fixes to prevent stack overflow errors with class lookups of
inexistant classes.
* Added some ensurances to unregister a thread connection at all times
during cleanup and connection errors
2006-08-09 Geert Bevin <gbevin[remove] at uwyn dot com>
* Added instant modification check in case an exception was thrown, that
should prevent the 10 second delay each time you want to check if an
exception has been resolved
* OrdinalManager transaction fix
* RIFE-302 : Element declaration annotations from parent classes are ignored
2006-08-07 Geert Bevin <gbevin[remove] at uwyn dot com>
* Corrected some problems and sub-optimal code after looking at some of
IDEA's inspections.
2006-08-04 Geert Bevin <gbevin[remove] at uwyn dot com>
* Added support for BigDecimal in bean property setting.
* Added support for the 'format' constraint to bean property injection for
all numeric types.
* Made ContinuationContext.getElement public.
* Re-activated 'finally' continuations test since JDK 1.5 is pretty baseline
nowadays
2006-08-02 Steven Grimm <koreth[remove] at midwinter dot com>
* RIFE-299 : Logout element doesn't work with global rememberid cookie
2006-07-31 Geert Bevin <gbevin[remove] at uwyn dot com>
* RIFE-297 : Global cookie can't be used for rememberid
2006-07-29 Geert Bevin <gbevin[remove] at uwyn dot com>
* Fix for the RifeServlet to be usable at other URL mappings than /*.
Sadly, RifeFilter can't do this, since no distinction is made by the
servlet spec between the servlet path and the pathinfo when using filters.
2006-07-21 Geert Bevin <gbevin[remove] at uwyn dot com>
* Added support to validate array property values in standard validation
rules.
2006-07-20 Geert Bevin <gbevin[remove] at uwyn dot com>
* Fixes to element recompilation when using manual site declarations in
Java.
2006-07-18 Steven Grimm <koreth[remove] at midwinter dot com>
* RIFE-292 : Document that query objects can be passed to DbQueryManager
2006-07-18 Steven Grimm <koreth[remove] at midwinter dot com>
* RIFE-293 : Allow multiple config file selectors
2006-07-17 Geert Bevin <gbevin[remove] at uwyn dot com>
* Added proper support for submission bean date arrays and serializable
arrays.
2006-07-13 Geert Bevin <gbevin[remove] at uwyn dot com>
* RELEASE 1.5
[ top ]