You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by bu...@apache.org on 2004/07/22 04:47:30 UTC
DO NOT REPLY [Bug 30250] New: -
SessionPropagatorAction defaults cause exception
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=30250>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=30250
SessionPropagatorAction defaults cause exception
Summary: SessionPropagatorAction defaults cause exception
Product: Cocoon 2
Version: 2.1.5
Platform: All
OS/Version: All
Status: NEW
Severity: Normal
Priority: Other
Component: sitemap components
AssignedTo: dev@cocoon.apache.org
ReportedBy: smangano@ureach.com
The SessionPropagatorAction allows you to provide defaults when you congigure
it in sitemap like so:
<map:action name="session-propagator" logger="sitemap.action.session"
src="org.apache.cocoon.acting.SessionPropagatorAction">
<my-default1>0</my-default1>
<my-default2>default</my-default2>
</map:action>
However, if you look at the code for SessionPropagatorAction it makes no sense
because it will result in an exception being thrown if a default specified like
above is NOT in the parameters and will result in simply taking the value from
the parameters if it is!
For example, give, the above:
<map:act type="session-propagator">
<map:parameter name="my-default1" value="2"/>
<!-- ... -->
</map:act>
Will throw an exception like:
http8080-Processor2/SessionPropagatorAction: exception:
org.apache.avalon.framework.parameters.ParameterException: The parameter 'my-
default2' does not contain a value
SEE: PropagatorAction for the right way to handle defaults, I belive.
The offending code is:
// defaults, that are not overridden
for (int i = 0; i < defaults.length; i++) {
if (!actionMap.containsKey(defaults[i])) {
String sessionParamName = (String) defaults[i];
//This is bogus /////////////////////////////////////////////////////////////
String value = parameters.getParameter(sessionParamName);
////////////////////////////////////////////////////////////////////////////
if (getLogger().isDebugEnabled()) {
getLogger().debug("Propagating value "
+ value
+ " to session attribute "
+ sessionParamName);
}
session.setAttribute(sessionParamName, value);
actionMap.put(sessionParamName, value);
}
}