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]>

Reply via email to