Thanks! Very helpful. Lars > -----Original Message----- > From: Marc Portier [mailto:[EMAIL PROTECTED] > Sent: Monday, September 06, 2004 4:56 AM > To: [EMAIL PROTECTED] > Subject: Re: finding the URL of the current Cocoon application? > > > we've used this trick a number of times: > > add an action with: > > public Map act( Redirector redirector, SourceResolver resolver, > Map objectModel, String source, Parameters parameters) > throws Exception > { > Request request = ObjectModelHelper.getRequest(objectModel); > > if (request.getAttribute("mountpoint") == null) { > String mountpoint = ""; > String requestURI = > NetUtils.decodePath(request.getRequestURI()); > String sitemapURI = request.getSitemapURI(); > int pos = requestURI.indexOf(sitemapURI); > if (pos != -1) > mountpoint = requestURI.substring(0, pos); > request.setAttribute("mountpoint", mountpoint); > getLogger().debug("mountpoint=" + mountpoint); > } else > getLogger().debug( > "mountpoint=" + request.getAttribute("mountpoint") + > " already > set!"); > > return null; > } > > > declare it in your sitemap > > <map:actions> > <map:action name="mountpoint" > src="mypackage.MountpointAction"/> > </map:actions> > > use it on top of those matchers that need it > > <map:pipeline> > <map:match.......> > .... > </map:match> > > <!-- > | all pipes below need the mountpoint available in the > | request-attribute 'mountpoint' > --> > <map:act type="mountpoint"/> > > and below this point have one doing this: > > <map:match pattern="menu-part/**"> > <map:generate src="menu.xml" /> > <map:transform src="xslt/menu2div.xsl" > > <map:parameter name="section" value="{1}" /> > <map:parameter name="mountpoint" > value="{request-param:mountpoint}" /> > </map:transform> > <map:serialize /> > </map:match> > > > > known issues: > - URL's with special characters (even behind the mountpoint > section) are > likely to fail: > > see http://marc.theaimsgroup.com/?t=109231177100007&r=1&w=2 > > > HTH, > -marc= > > > > > Lars Huttar wrote: > > Hi all, > > > > The short question: > > How do I find the URI of the current Cocoon subapplication? > > E.g. if the sitemap is in cocoon/mount/gem/, I want the URI > "mount/gem". > > > > Here's what I'm trying to do: > > Suppose I'm deep in a stylesheet somewhere and want to produce a URI > > for creating a file (this will be sent to SourceWritingTransformer > > as the href attribute). > >>From experience, the URIs that work are > > context:/path... > > where "path" is relative to the Cocoon webapp top-level directory. > > My "subapplication" (what's the right term?) is in cocoon/mount/gem, > > i.e. that's where my main sitemap is. > > So I want to produce something like > > context:/mount/gem/foo/bar.xml > > > > I've found that I can use the "request" InputModule in the > sitemap to > > get some of this information. > > {request:requestURI} gives something like: > > "/mount/gem/zip/zang.xml" > > while {request:sitemapURI} gives > > "zip/zang.xml" > > for the same request. > > > > Therefore, I can just cut sitemapURI off the end of requestURI > > and get "/mount/gem", the URI of my subapplication. > > This works just fine, at least when you're not recursively calling > > pipelines within pipelines. > > > > HOWEVER, > > > > if you have something in your sitemap with > > src="cocoon:/foo/bar.xml" > > then there are two request URLs in play; and while the sitemapURI > > gives a value based on the outer URL, the requestURI > > gives a value based on the inner URL. So trying to cut off > the sitemapURI > > from the requestURI can give garbage. > > > > If you know the name of the application ("gem") for sure, you > > can do string surgery based on it. But in our practice, this > > has sometimes changed ... gem2, gem-tmp, gem-bak, gem-trunk, etc. > > > > So... does anyone have a foolproof way to find the URI of > the application > > (mount/gem)? > > > > Thanks, > > Lars > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > -- > Marc Portier http://outerthought.org/ > Outerthought - Open Source, Java & XML Competence Support Center > Read my weblog at http://blogs.cocoondev.org/mpo/ > [EMAIL PROTECTED] [EMAIL PROTECTED] > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] >
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]