Hi,

thanks for the response. So it looks like I can manage the components mostly through the ComponentSource service, I should be able to clear persistent fields this way and load the current SubPage I want. Then I can implement a ComponentRequestFilter to aid in the Permissions I wrote about.

That just leave a) which I see I did not explain well enough. By "directs content" I was trying to generalize the concept that the ModuleIndex would be including (or Injecting?) the SubPage component related to that current SubPage. Just like when you include any component in a template i.e. <t:SubPage />. I was achieving this through Delegate and Block before, but that was linked up to the @Component SubPages so it could load the right one.

Also, you mentioned not using 'mvn jetty:run', is there anything particularly wrong with that? That's how I run the application.

I certainly agree many things about my current implementation are not ideal (memory consumption, not typical way of doing things) but working is better than nothing, not to mention how hard it is to figure out what the "recommended way of doing it" is for any given feature without asking =/

-Rich

On 08/19/2010 03:04 PM, Thiago H. de Paula Figueiredo wrote:
On Thu, 19 Aug 2010 15:41:20 -0300, Rich M <rich...@moremagic.com> wrote:

a) ModuleIndex functions similar to the Layout page, it must contain the navigation menu and then directs content from a specific page of the Module (I will call these SubPages) into the template.

What do you mean by "directs content"?

b) The module needs to keep track of all the SubPage instances so it can wipe their persistent fields when navigation changes.

This can be implemented as a ComponentRequestFilter. In addition, Tapestry 5.2 adds one page lifecycle that my be useful this kind of situation: http://tapestry.apache.org/tapestry5.2-dev/apidocs/org/apache/tapestry5/annotations/PageReset.html

c) The module needs to assess the target of page navigation, and then filter the resulting SubPage based on user permissions within the application.

This can be implemented as a ComponentRequestFilter. That's the recommended way of doing it.

d) When one of the specific SubPage classes is changed in source, it should be able to be live reloaded without restarting the application

In Eclipse, I just leave all the projects (modules) open and it works, as long as I'm not using Maven's jetty:run. I usually create a Main class that launches a Jetty instance.

ModuleIndex has a @Component for each SubPage and then maps these components to the activation context integers in a @SessionState Map.

In Tapestry 5.1 (page pool), this would lead to a large memory comsumption. In 5.2 there's no such problem. Anyway, a good option is to use ComponentSource to get instances of components or pages in runtime instead of holding references to instances, leading to the ClassCastExceptios you're experiencing.



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to