You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Joerg Heinicke <jo...@gmx.de> on 2007/07/17 06:02:23 UTC
The usage of Spring in Cocoon
Hello Spring team,
I write this message more or less on behalf of the Apache Cocoon
(http://cocoon.apache.org) team. I don't know if somebody of you follows
Cocoon's development: We have changed the internal container Cocoon is
based on from Apache Avalon ECM to Spring for Cocoon 2.2. I used the
quite common subject since we have quite different issues.
First the technical ones. When we started to talk about some converter
concept recently [1] we originally had some generalization of the
converters in Cocoon Forms [2] in mind. I made the proposal to do it the
Spring way using PropertyEditors. Unfortunately 2 issues arose: The
first is about lacking internationalization support, the second about
(let's call it) "inflexible" editor selection.
1. Cocoon is known to have sophisticated i18n support. The property
editors are lacking any built-in i18n support, Spring does not add
anything on top of it. It is considered to be implemented into the
editors like for the CustomDateEditor:
new CustomDateEditor(DateFormat, boolean)
It is only the DateFormat that gets locale information, e.g. from the
request in the initBinder() method of the controllers. Since that's
necessary in every controller it scatters the editor setup through the
application. The new way of registering PropertyEditors using
PropertyEditorRegistrar makes this even completely impossible since it
has no access to the request.
The CForms Convertor interface [3] has the locale in its methods
convertFromString() and convertToString() in contrary to PropertyEditor
[4] as you know. Our idea was know anyway to remove it from the actual
converters to the registry. So the locale would be another property you
can register a PropertyEditor to as it is done with "path". The
PropertyEditorRegistry would need to be extended correspondingly which
can even happen in a backwards-compatible way I guess. The
BeanWrapperImpl would need to search for editors using the locale
additionally.
What do you think about it? Is it something that could it even make it
into Spring 2.1?
2. The second issue with Spring's converter infrastructure is about the
selection of editors by "path". It is not possible to show one property
in two different representations on one page, e.g. a date in "full" and
"short" form according to DateFormat [5]. That's what I called
"inflexible" above.
Our original approach was to use a "variant" in the expression language
like ${myobj.startDate#short}. That could even make it into the current
"path", so it's actually an extended understanding of "path". There is
also an approach passing this "variant" information back to the request
binder.
I only wonder if you had this possible requirement at any place in mind.
How would you address the need for different representations of the same
property in one page?
3. The third "issue" is about some enhancements Carsten Ziegler
implemented for "providing support in common configuration issues when
using the Spring framework". It's called spring-configurator [6] and is
used in Cocoon, but it's not tied in any way to Cocoon except for the
package name at the moment. It has additional support for configuration
like running modes (selecting property files according to running modes
like "test" or "production"), automatic selection of property files and
bean configuration from standard directories. Additionally there is a
bean map which adds all beans of a particular type to a map as shown in
[7] without the need to register it by hand.
The scope of these components is a bit beyond Cocoon's actual scope.
Furthermore all this stuff is of rather general use, so we wonder if you
are interested in the one or the other component. A move nearer to
Spring community seems to be natural.
What do you think about it?
Thanks for any exchanges of ideas with the Cocoon community in advance.
Regards,
Joerg
[1] http://marc.info/?t=118349219800006&r=1&w=4
[2] http://cocoon.apache.org/2.1/userdocs/widgetconcepts/datatypes.html
[3]
http://cocoon.apache.org/2.1/apidocs/org/apache/cocoon/forms/datatype/convertor/Convertor.html
[4] http://java.sun.com/j2se/1.4.2/docs/api/java/beans/PropertyEditor.html
[5] http://java.sun.com/j2se/1.4.2/docs/api/java/text/DateFormat.html
[6] http://cocoon.zones.apache.org/daisy/cdocs-spring-configurator/
[7]
http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/resources/META-INF/cocoon/spring/DefaultExpressionFactory.xml?view=markup