>>- A subclass of WOApplication which define the entry point to an 
>>application.

This will be your biggest hurdle, although at the end of the day it's not 
all that big. Tapestry is not a stand-alone app server like WebObjects. That 
means that you have to seat Tapestry in some type of Servlet container. I 
like to think of Tapestry as WebObjects minus WOAdaptor and the built-in 
webserver (or cgi-bin adaptor and standalone webserver). Tapestry cannot 
talk directly to an HTTP client-- it needs to be inside a Servlet container 
and the container will talk with the client. The container will originate 
the threads of control, create HttpServletRequest/Response (like 
WORequest/Response) and inject them into Tapestry. Practically speaking, 
this means that you have to read the Servlet spec. It's a very easy read 
anyhow, but you need to understand the interface between Tapestry and the 
container. For lightweight, standalone (read, non-enterprise) applications I 
highly recommend that you use the Jetty servlet container. It works really 
well, is very fast/stable and the author Greg Wilson does a great job of 
supporting it.

Tapestry does not have a notion of a centralized Application object like 
WOApplication. Since Tapestry requires that you provide an 
ApplicationServlet, I just use that as the WOApplication analog. It has 
worked out pretty well so far. The ApplicationServlet is the main entry 
point for the threads of control (request-response loop processing) so it's 
analogous to WOApplication in that respect. I use a singleton to provide 
global visibility of the application object.

>>- A subclass of WOSession for storing values with a life span longer than 
>>a request/response loop.

Think of it this way: Visit + Engine = WOSession. Visit holds the session 
scope state, while the Engine provides hooks into the request-response loop 
a la WOSession.

>>- Some subclasses of WOComponent to implement your custom behavior.

It looks very much like WO. Same template (html) + binding file (.jwc)  + 
procedures (java) as WO, and these elements interact with each other in the 
same manner as WO. Components also interact with the request-response loop 
just about the exact same manner as WO and component composition works the 
same as WO. You should feel right at home-- Components will be the least of 
your worries.

The one major blind-spot I find in the Tapestry components is the Image 
component. It is not a general purpose, original neutral, vendor of images 
like WOImage. Instead it is tied into something called Assets. An asset is 
an application resource that you know about at development time. So the 
Tapestry Image component is good for vending icons and such, but not well 
suite for vending images that are discovered at run-time. Instead, everyone 
seems to roll-their-own special purpose Image Component/Service, like the 
Chart service in the demo/contrib.

We are currently running a special for Zoe developers. All qualified Zoe 
developers have access to the source code for our custom Tapestry 
components, which should help you understand how they work. We are planning 
to donate them to Tapestry eventually anyhow.


>>Is there something equivalent to a WORequestHandler in Tapestry?

Sorry, I'm of the opinion that the WO request handler is an artifact of 
vestigial NeXT designs and "the process is the Thread" single threaded model 
that WO likes to impose. Tapestry does have a somewhat generic request 
handling mechanism called "services", but I'm not sure how well they will 
map to your needs.

>>Also, is there something akin to a WOSwitchComponent:

Last I checked, WOSwitchComponent required that all the potential switches 
for one instance have the same interface. Is that still the case? If so, 
Tapestry is much more powerful. The Block/InsertBlock allows for true 
transparent component "pluggability". With these constructs you could build 
a generic Matrix component (2-dimensional array of display cells) and 
populate it at run-time with *any* component. Tapestry beats WO in this 
area.



_________________________________________________________________
Send and receive Hotmail on your mobile device: http://mobile.msn.com



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Tapestry-developer mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/tapestry-developer

Reply via email to