cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Max Pfingsthorn" <m.pfingsth...@hippo.nl>
Subject RE: Reality Check (was Re: [SHRT] Cocoon on Rails Application Component Kernel (CRACK))
Date Mon, 10 Oct 2005 14:29:38 GMT
...
> 
> Let's worry less about perfection and worry more about some simple 
> changes that have huge payoffs.  Once we have the basics down, we can 
> tackle some of the more difficult aspects.
> 

Okay, but does that really need a completely new sitemap implementation?

> The convention is {context}/{controller}/{action}[/{id}]

Well (assuming this sitemap was mounted for the context):

<map:match pattern="*/*/*">
  <map:call function="handleControllerCall">
    <map:parameter name="controller" value="{1}"/>
    <map:parameter name="action" value="{2}"/>
    <map:parameter name="id" value="{3}"/>
  </map:call>
</map:match>
<map:match pattern="*/*">
  <map:call function="handleControllerCall">
    <map:parameter name="controller" value="{1}"/>
    <map:parameter name="action" value="{2}"/>
  </map:call>
</map:match>

The "handleControllerCall" function can be written in flowscript or even use the great new
java flow as shown by Torsten Curdt during the get together. Not sure how that class reloading
works, but if you put the controller classes in the same path, I guess the reloading feature
would work there as well. So, you can do something like...:

if(action==null) action="index";
contr = Package.org.apache.cocoon.util.ClassUtils.newInstance("controllers."+controller+"Controller");

if(id==null)
  contr[action]();
else
  contr[action](id); //well, a little more processing here to get the object with this id
first

cocoon.sendPage("views/"+controller+"/"+action);

Right?

max

Mime
View raw message