I'm using Cocoon 2.0.1 on Tomcat 4.0.1. I've set up my main sitemap to
match different sub-uris and then mount a sub-sitemap for the corresponding
sub-directory the way it's done in the cocoon sub-sitemap example. In
addition I want to do user authentication for a whole subsitemap in the
main sitemap this way:
<map:match pattern="sub/**">
<map:act type="session-validator">
<map:parameter name="descriptor" value
="context://descriptors/params.xml"/>
<map:parameter name="validate" value="username"/>
</map:act>
<!-- something was wrong, redirect to login page -->
<map:redirect-to uri="../login"/>
</map:match>
So far so good, although I do not understand why I must use
<map:redirect-to uri="../login"/> with prefix '../' in my main sitemap,
maybe that's already a hint for a problem.
What I wanted to do is to access the sitemap param 'username' in the
subsitemap, which does not work. I tried the following entry in my
subsitemap:
<map:match pattern="*.html">
<map:generate src="docs/{1}.xml"/>
<map:transform src="../stylesheets/mystyle.xsl">
<map:parameter name="use-request-parameters" value="true"/>
<map:parameter name="username" value="{../username}"/>
</map:transform>
<map:serialize/>
</map:match>
That throws an Exception when calling a subsite page (being already
authenticated, of course):
org.apache.cocoon.sitemap.PatternException: error occurred during
evaluation of expression "{../username}" at position 1 Index: -1, Size: 1
at
org.apache.cocoon.sitemap.AbstractSitemap.substitute(AbstractSitemap.java:322)
at
org.apache.cocoon.www.region.sitemap_xmap.matchN100BE(sitemap_xmap.java:1029)
at org.apache.cocoon.www.region.sitemap_xmap.process(sitemap_xmap.java:600)
at org.apache.cocoon.www.region.sitemap_xmap.process(sitemap_xmap.java:518)
at org.apache.cocoon.sitemap.Handler.process(Handler.java:180) at
org.apache.cocoon.sitemap.Manager.invoke(Manager.java:127) at
org.apache.cocoon.www.sitemap_xmap.matchN10250(sitemap_xmap.java:1991) at
org.apache.cocoon.www.sitemap_xmap.process(sitemap_xmap.java:1437) at
org.apache.cocoon.www.sitemap_xmap.process(sitemap_xmap.java:1348) at
org.apache.cocoon.sitemap.Handler.process(Handler.java:180) at
org.apache.cocoon.sitemap.Manager.invoke(Manager.java:127) at
org.apache.cocoon.sitemap.SitemapManager.process(SitemapManager.java:144)
at org.apache.cocoon.Cocoon.process(Cocoon.java:582) at
org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:795) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:201)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:163)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1011)
at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106)
at java.lang.Thread.run(Thread.java:484)
I also tried to use {username} instead if {../username} which of course did
not work because there is no sitemap param username on the param stack top.
Did I expect the wrong behaviour in param-handling when using <map:mount>
or did I do any other mistake?
Thanks for help,
Dipl.-Inform. Kai Bruns
regio gmbh
Institut f�r Regionalentwicklung und Informationssysteme
an der Carl von Ossietzky Universit�t Oldenburg
D-26111 Oldenburg
Tel ++49 (0)441 798-2827
Fax ++49 (0)441 798-3002
eMail [EMAIL PROTECTED]
http://www.regio.uni-oldenburg.de
---------------------------------------------------------------------
Please check that your question has not already been answered in the
FAQ before posting. <http://xml.apache.org/cocoon/faqs.html>
To unsubscribe, e-mail: <[EMAIL PROTECTED]>
For additional commands, e-mail: <[EMAIL PROTECTED]>